From 18b77f15dd2bce14edeadc99db5461b070bbe956 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Thu, 8 Sep 2022 15:16:48 +0530 Subject: [PATCH] Remove Alertify from pgAdmin completely. Fixes #7619 --- .../images/preferences_browser_display.png | Bin 181432 -> 182450 bytes docs/en_US/preferences.rst | 7 - web/package.json | 1 - web/pgadmin/__init__.py | 2 +- .../browser/register_browser_preferences.py | 12 - .../servers/databases/casts/static/js/cast.js | 6 +- .../event_triggers/static/js/event_trigger.js | 4 +- .../extensions/static/js/extension.js | 5 +- .../static/js/foreign_server.js | 4 +- .../user_mappings/static/js/user_mapping.js | 5 +- .../static/js/foreign_data_wrapper.js | 5 +- .../databases/languages/static/js/language.js | 5 +- .../publications/static/js/publication.js | 5 +- .../schemas/aggregates/static/js/aggregate.js | 5 +- .../static/js/catalog_object_column.js | 4 +- .../static/js/catalog_object.js | 4 +- .../schemas/collations/static/js/collation.js | 4 +- .../static/js/domain_constraints.js | 4 +- .../schemas/domains/static/js/domain.js | 6 +- .../foreign_tables/static/js/foreign_table.js | 6 +- .../static/js/fts_configuration.js | 6 +- .../static/js/fts_dictionary.js | 7 +- .../fts_parsers/static/js/fts_parser.js | 4 +- .../fts_templates/static/js/fts_template.js | 4 +- .../schemas/functions/static/js/function.js | 6 +- .../schemas/functions/static/js/procedure.js | 8 +- .../functions/static/js/trigger_function.js | 6 +- .../schemas/operators/static/js/operator.js | 4 +- .../packages/edbfuncs/static/js/edbfunc.js | 5 +- .../packages/edbfuncs/static/js/edbproc.js | 5 +- .../packages/edbvars/static/js/edbvar.js | 5 +- .../schemas/packages/static/js/package.js | 7 +- .../schemas/sequences/static/js/sequence.js | 6 +- .../databases/schemas/static/js/catalog.js | 5 +- .../databases/schemas/static/js/schema.js | 7 +- .../schemas/synonyms/static/js/synonym.js | 8 +- .../tables/columns/static/js/column.js | 7 +- .../tables/columns/static/js/column.ui.js | 9 + .../static/js/compound_trigger.js | 6 +- .../static/js/check_constraint.js | 5 +- .../static/js/check_constraint.ui.js | 8 + .../static/js/exclusion_constraint.js | 5 +- .../static/js/exclusion_constraint.ui.js | 8 + .../foreign_key/static/js/foreign_key.js | 5 +- .../foreign_key/static/js/foreign_key.ui.js | 9 + .../index_constraint/static/js/primary_key.js | 5 +- .../static/js/primary_key.ui.js | 8 + .../static/js/unique_constraint.js | 5 +- .../static/js/unique_constraint.ui.js | 8 + .../constraints/static/js/constraints.js | 4 +- .../schemas/tables/indexes/static/js/index.js | 9 +- .../tables/partitions/static/js/partition.js | 6 +- .../partitions/static/js/partition.ui.js | 9 + .../static/js/row_security_policy.js | 6 +- .../schemas/tables/rules/static/js/rule.js | 7 +- .../tables/static/js/partition.utils.ui.js | 8 + .../schemas/tables/static/js/table.js | 7 +- .../schemas/tables/static/js/table.ui.js | 8 + .../tables/triggers/static/js/trigger.js | 7 +- .../databases/schemas/types/static/js/type.js | 8 +- .../schemas/types/static/js/type.ui.js | 2 +- .../schemas/views/static/js/mview.js | 11 +- .../databases/schemas/views/static/js/view.js | 5 +- .../servers/databases/static/js/database.js | 8 +- .../subscriptions/static/js/subscription.js | 6 +- .../schedules/static/js/pga_schedule.js | 5 +- .../servers/pgagent/static/js/pga_job.js | 5 +- .../pgagent/steps/static/js/pga_jobstep.js | 6 +- .../static/js/resource_group.js | 4 +- .../servers/roles/static/js/role.js | 4 +- .../servers/static/js/privilege.js | 8 +- .../server_groups/servers/static/js/server.js | 5 +- .../servers/static/js/variable.js | 8 +- .../tablespaces/static/js/tablespace.js | 7 +- .../server_groups/static/js/server_group.js | 5 +- web/pgadmin/browser/static/css/wizard.css | 3 +- web/pgadmin/browser/static/js/activity.js | 2 +- web/pgadmin/browser/static/js/browser.js | 20 +- web/pgadmin/browser/static/js/collection.js | 7 +- web/pgadmin/browser/static/js/datamodel.js | 5 +- web/pgadmin/browser/static/js/error.js | 5 +- web/pgadmin/browser/static/js/frame.js | 6 +- web/pgadmin/browser/static/js/keyboard.js | 2 +- web/pgadmin/browser/static/js/menu.js | 5 +- web/pgadmin/browser/static/js/node.js | 29 +- web/pgadmin/browser/static/js/node.ui.js | 7 +- web/pgadmin/browser/static/js/panel.js | 5 +- web/pgadmin/browser/static/js/preferences.js | 5 +- web/pgadmin/browser/static/js/toolbar.js | 2 +- web/pgadmin/browser/static/scss/_wizard.scss | 4 +- web/pgadmin/dashboard/static/js/Dashboard.jsx | 10 +- web/pgadmin/dashboard/static/js/Graphs.jsx | 2 +- .../dashboard/static/js/WelcomeDashboard.jsx | 2 +- .../misc/cloud/static/js/CloudWizard.jsx | 8 +- .../dependencies/static/js/Dependencies.jsx | 2 +- .../misc/dependents/static/js/Dependents.jsx | 2 +- .../properties/CollectionNodeProperties.jsx | 2 +- web/pgadmin/misc/sql/static/js/SQL.jsx | 2 +- web/pgadmin/static/css/style.css | 2 - web/pgadmin/static/js/Dialogs/index.jsx | 24 +- web/pgadmin/static/js/Explain/Graphical.jsx | 34 +- web/pgadmin/static/js/Explain/index.jsx | 16 +- .../static/js/alertify.pgadmin.defaults.js | 316 ------------------ web/pgadmin/static/js/alertify/dialog.js | 121 ------- .../static/js/alertify/dialog_factory.js | 41 --- .../static/js/alertify/dialog_wrapper.js | 72 ---- web/pgadmin/static/js/backform.pgadmin.js | 10 +- web/pgadmin/static/js/backgrid.pgadmin.js | 4 +- web/pgadmin/static/js/browser/generate_url.js | 4 +- .../static/js/check_node_visibility.js | 5 +- .../static/js/components/FormComponents.jsx | 2 +- web/pgadmin/static/js/helpers/Notifier.jsx | 12 +- web/pgadmin/static/js/modify_animation.js | 71 ---- web/pgadmin/static/js/sqleditor_utils.js | 22 -- .../static/js/tree/pgadmin_tree_save_state.js | 2 +- .../static/js/tree/preference_nodes.ts | 2 +- web/pgadmin/static/js/tree/tree_nodes.ts | 2 +- web/pgadmin/static/js/utils.js | 135 ++++++++ web/pgadmin/static/scss/_alert.scss | 7 - .../static/scss/_alertify.overrides.scss | 303 ----------------- web/pgadmin/static/scss/_pgadmin.style.scss | 9 - web/pgadmin/static/scss/pgadmin.scss | 1 - .../scss/resources/_default.variables.scss | 1 - web/pgadmin/tools/backup/static/js/backup.js | 8 +- .../debugger/static/js/DebuggerModule.js | 6 +- .../components/DebuggerArgumentComponent.jsx | 62 ++-- .../js/components/DebuggerComponent.jsx | 76 ++--- .../static/js/components/DebuggerEditor.jsx | 8 +- .../debugger/templates/debugger/direct.html | 4 - .../static/js/erd_tool/components/ERDTool.jsx | 2 +- web/pgadmin/tools/erd/static/js/index.js | 1 + .../grant_wizard/static/js/GrantWizard.jsx | 26 +- .../import_export/static/js/import_export.js | 2 +- .../static/js/ImportExportServers.jsx | 6 +- web/pgadmin/tools/psql/static/js/index.js | 2 +- .../tools/psql/templates/editor_template.html | 4 - .../components/QueryToolDataGrid/Editors.jsx | 2 +- .../static/js/components/sections/Query.jsx | 26 +- .../sqleditor/static/js/show_view_data.js | 2 +- .../sqleditor/static/js/sqleditor_title.js | 15 +- .../feature_tests/browser_tool_bar_test.py | 2 +- web/regression/feature_utils/locators.py | 7 +- web/regression/feature_utils/pgadmin_page.py | 12 +- .../browser/modify_animation_spec.js | 94 ------ .../jasmine_capture_warnings_beforeall.js | 8 - .../javascript/sqleditor_utils_spec.js | 21 -- web/webpack.shim.js | 7 +- web/webpack.test.config.js | 2 - web/yarn.lock | 4 - 149 files changed, 634 insertions(+), 1573 deletions(-) delete mode 100644 web/pgadmin/static/js/alertify.pgadmin.defaults.js delete mode 100644 web/pgadmin/static/js/alertify/dialog.js delete mode 100644 web/pgadmin/static/js/alertify/dialog_factory.js delete mode 100644 web/pgadmin/static/js/alertify/dialog_wrapper.js delete mode 100644 web/pgadmin/static/js/modify_animation.js delete mode 100644 web/pgadmin/static/js/sqleditor_utils.js delete mode 100644 web/pgadmin/static/scss/_alertify.overrides.scss delete mode 100644 web/regression/javascript/browser/modify_animation_spec.js delete mode 100644 web/regression/javascript/sqleditor_utils_spec.js diff --git a/docs/en_US/images/preferences_browser_display.png b/docs/en_US/images/preferences_browser_display.png index a3a84664a359ff0d9406d3732cb3669feb62296d..e8be4f21b9df6f8dc02e27a28c24ab93e8948e1b 100644 GIT binary patch literal 182450 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 CMx9as diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst index 14cbf87ae..f3e08cf4a 100644 --- a/docs/en_US/preferences.rst +++ b/docs/en_US/preferences.rst @@ -43,13 +43,6 @@ Use the fields on the *Display* panel to specify general display preferences: attempt to catch browser close or refresh events and prompt before allowing them to continue. -* When the *Enable browser tree animation?* switch is set to *True*, the client - will display the animated tree control otherwise it will be unanimated. - -* When the *Enable dialogue/notification animation?* switch is set to *True*, - the client will display the animated dialogues/notifications otherwise it - will be unanimated. - * When the *Hide shared servers?* switch is set to *True*, the client will hide all the shared servers from the browser tree. diff --git a/web/package.json b/web/package.json index d70a5b871..9eb2850b0 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,6 @@ "@types/react": "^16.7.18", "@types/react-dom": "^16.0.11", "ajv": "^8.8.2", - "alertifyjs": "git+https://github.com/EnterpriseDB/AlertifyJS/#72c1d794f5b6d4ec13a68d123c08f19021afe263", "anti-trojan-source": "^1.4.0", "aspen-decorations": "^1.0.2", "axios": "^0.21.1", diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py index 5038dc8ce..d196fe9dc 100644 --- a/web/pgadmin/__init__.py +++ b/web/pgadmin/__init__.py @@ -222,7 +222,7 @@ def create_app(app_name=None): config.SECURITY_RECOVERABLE = True config.SECURITY_CHANGEABLE = True - # Now we'll open change password page in alertify dialog + # Now we'll open change password page in dialog # we don't want it to redirect to main page after password # change operation so we will open the same password change page again. config.SECURITY_POST_CHANGE_VIEW = 'browser.change_password' diff --git a/web/pgadmin/browser/register_browser_preferences.py b/web/pgadmin/browser/register_browser_preferences.py index cfd9bca1a..1fc865b57 100644 --- a/web/pgadmin/browser/register_browser_preferences.py +++ b/web/pgadmin/browser/register_browser_preferences.py @@ -45,18 +45,6 @@ def register_browser_preferences(self): ) ) - self.preference.register( - 'display', 'enable_acitree_animation', - gettext("Enable browser tree animation?"), 'boolean', True, - category_label=PREF_LABEL_DISPLAY - ) - - self.preference.register( - 'display', 'enable_alertify_animation', - gettext("Enable dialogue/notification animation?"), 'boolean', - True, category_label=PREF_LABEL_DISPLAY - ) - self.preference.register( 'display', 'browser_tree_state_save_interval', gettext("Browser tree state saving interval"), 'integer', diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/static/js/cast.js b/web/pgadmin/browser/server_groups/servers/databases/casts/static/js/cast.js index d1ee8b3b3..5c70ed607 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/static/js/cast.js +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/static/js/cast.js @@ -11,10 +11,10 @@ import CastSchema from './cast.ui'; import getApiInstance from '../../../../../../../static/js/api_instance'; define('pgadmin.node.cast', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', - 'pgadmin.alertifyjs', 'pgadmin.backform', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { + 'pgadmin.browser.collection', +], function(gettext, url_for, pgAdmin, pgBrowser) { // Extend the collection class for cast if (!pgBrowser.Nodes['coll-cast']) { pgAdmin.Browser.Nodes['coll-cast'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/static/js/event_trigger.js b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/static/js/event_trigger.js index 5e830af87..e9889c787 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/static/js/event_trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/static/js/event_trigger.js @@ -11,9 +11,9 @@ import EventTriggerSchema from './event_trigger.ui'; import { getNodeListByName, getNodeAjaxOptions } from '../../../../../../static/js/node_ajax'; define('pgadmin.node.event_trigger', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgAdmin, pgBrowser) { // Extend the browser's collection class for event trigger collection if (!pgBrowser.Nodes['coll-event_trigger']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/static/js/extension.js b/web/pgadmin/browser/server_groups/servers/databases/extensions/static/js/extension.js index d288a6734..ed0093187 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/static/js/extension.js +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/static/js/extension.js @@ -10,11 +10,12 @@ import { getNodeAjaxOptions, getNodeListByName } from '../../../../../../static/js/node_ajax'; import ExtensionsSchema from './extension.ui'; +import _ from 'lodash'; define('pgadmin.node.extension', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgAdmin, pgBrowser) { /* * Create and Add an Extension Collection into nodes diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/static/js/foreign_server.js b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/static/js/foreign_server.js index 4dc85aae0..026e2439f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/static/js/foreign_server.js +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/static/js/foreign_server.js @@ -12,10 +12,10 @@ import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.u import ForeignServerSchema from './foreign_server.ui'; define('pgadmin.node.foreign_server', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'sources/pgadmin', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgAdmin, pgBrowser) { // Extend the browser's collection class for foreign server collection if (!pgBrowser.Nodes['coll-foreign_server']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/static/js/user_mapping.js b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/static/js/user_mapping.js index 40e9a5925..0015aa8d5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/static/js/user_mapping.js +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/static/js/user_mapping.js @@ -9,12 +9,13 @@ import { getNodeListByName } from '../../../../../../../../static/js/node_ajax'; import UserMappingSchema from './user_mapping.ui'; +import _ from 'lodash'; define('pgadmin.node.user_mapping', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Backform) { +], function(gettext, url_for, pgAdmin, pgBrowser, Backform) { // Extend the browser's collection class for user mapping collection if (!pgBrowser.Nodes['coll-user_mapping']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/static/js/foreign_data_wrapper.js b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/static/js/foreign_data_wrapper.js index b45be8187..4dcfc72af 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/static/js/foreign_data_wrapper.js +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/static/js/foreign_data_wrapper.js @@ -12,10 +12,9 @@ import { getNodePrivilegeRoleSchema } from '../../../../static/js/privilege.ui'; import ForeignDataWrapperSchema from './foreign_data_wrapper.ui'; define('pgadmin.node.foreign_data_wrapper', [ - 'sources/gettext', 'sources/url_for', 'jquery', - 'sources/pgadmin', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgBrowser) { // Extend the browser's collection class for foreign data wrapper collection if (!pgBrowser.Nodes['coll-foreign_data_wrapper']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js b/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js index 56dc670a1..2ab91efb7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js @@ -12,10 +12,9 @@ import LanguageSchema from './language.ui'; import { getNodePrivilegeRoleSchema } from '../../../../static/js/privilege.ui'; define('pgadmin.node.language', [ - 'sources/gettext', 'sources/url_for', 'jquery', - 'sources/pgadmin', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgBrowser) { // Extend the browser's collection class for languages collection if (!pgBrowser.Nodes['coll-language']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/publications/static/js/publication.js b/web/pgadmin/browser/server_groups/servers/databases/publications/static/js/publication.js index 9af351d31..b77ad85e2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/publications/static/js/publication.js +++ b/web/pgadmin/browser/server_groups/servers/databases/publications/static/js/publication.js @@ -11,10 +11,9 @@ import { getNodeAjaxOptions, getNodeListByName } from '../../../../../../static/ import PublicationSchema from './publication.ui'; define('pgadmin.node.publication', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgBrowser) { // Extend the browser's collection class for publications collection if (!pgBrowser.Nodes['coll-publication']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/aggregates/static/js/aggregate.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/aggregates/static/js/aggregate.js index df8d9b4f9..f9a485879 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/aggregates/static/js/aggregate.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/aggregates/static/js/aggregate.js @@ -10,10 +10,9 @@ import AggregateSchema from './aggregate.ui'; define('pgadmin.node.aggregate', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', + 'sources/gettext', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChild) { +], function(gettext, pgAdmin, pgBrowser, schemaChild) { if (!pgBrowser.Nodes['coll-aggregate']) { pgAdmin.Browser.Nodes['coll-aggregate'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js index e1152eb22..0a533cd47 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js @@ -9,9 +9,9 @@ import CatalogObjectColumnSchema from './catalog_object_column.ui'; define('pgadmin.node.catalog_object_column', [ - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', + 'sources/gettext', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, $, _, pgAdmin, pgBrowser) { +], function(gettext, pgAdmin, pgBrowser) { if (!pgBrowser.Nodes['coll-catalog_object_column']) { pgAdmin.Browser.Nodes['coll-catalog_object_column'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/static/js/catalog_object.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/static/js/catalog_object.js index dac46721a..0bd5afa54 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/static/js/catalog_object.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/static/js/catalog_object.js @@ -10,9 +10,9 @@ import CatalogObjectSchema from './catalog_object.ui'; define('pgadmin.node.catalog_object', [ - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', + 'sources/gettext', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, $, _, pgAdmin, pgBrowser) { +], function(gettext, pgAdmin, pgBrowser) { if (!pgBrowser.Nodes['coll-catalog_object']) { pgAdmin.Browser.Nodes['coll-catalog_object'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js index 4d3dff132..de0645e3d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/static/js/collation.js @@ -11,11 +11,11 @@ import CollationSchema from './collation.ui'; import { getNodeAjaxOptions, getNodeListByName } from '../../../../../../../static/js/node_ajax'; define('pgadmin.node.collation', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChild, +], function(gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { if (!pgBrowser.Nodes['coll-collation']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/static/js/domain_constraints.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/static/js/domain_constraints.js index 4c6594ddb..ebe8a0c8f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/static/js/domain_constraints.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/static/js/domain_constraints.js @@ -11,10 +11,10 @@ import DomainConstraintSchema from './domain_constraints.ui'; // Domain Constraint Module: Collection and Node define('pgadmin.node.domain_constraints', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChildTreeNode) { +], function(gettext, url_for, pgAdmin, pgBrowser, schemaChildTreeNode) { // Define Domain Constraint Collection Node if (!pgBrowser.Nodes['coll-domain_constraints']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/static/js/domain.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/static/js/domain.js index 8b2b361f9..e20555593 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/static/js/domain.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/static/js/domain.js @@ -12,13 +12,11 @@ import DomainSchema from './domain.ui'; // Domain Module: Collection and Node. define('pgadmin.node.domain', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.backgrid', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser, Backform, Backgrid, - schemaChild, schemaChildTreeNode + gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode ) { // Define Domain Collection Node diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/static/js/foreign_table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/static/js/foreign_table.js index 3affdeefb..2f1f15135 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/static/js/foreign_table.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/static/js/foreign_table.js @@ -14,13 +14,11 @@ import _ from 'lodash'; /* Create and Register Foreign Table Collection and Node. */ define('pgadmin.node.foreign_table', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'backbone', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backgrid', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, Backbone, pgAdmin, pgBrowser, Backgrid, - schemaChild, schemaChildTreeNode + gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-foreign_table']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js index 073dd4acc..44a616a9d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/static/js/fts_configuration.js @@ -11,13 +11,11 @@ import { getNodeAjaxOptions, getNodeListByName, getNodeListById} from '../../../ import FTSConfigurationSchema from './fts_configuration.ui'; define('pgadmin.node.fts_configuration', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.backgrid', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser, Backform, Backgrid, - schemaChild, schemaChildTreeNode + gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode ) { // Extend the collection class for FTS Configuration diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/static/js/fts_dictionary.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/static/js/fts_dictionary.js index 0ea741034..164df6a41 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/static/js/fts_dictionary.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/static/js/fts_dictionary.js @@ -11,13 +11,12 @@ import { getNodeAjaxOptions, getNodeListByName, getNodeListById} from '../../../ import FTSDictionarySchema from './fts_dictionary.ui'; define('pgadmin.node.fts_dictionary', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, schemaChild, - schemaChildTreeNode + gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode ) { // Extend the collection class for FTS Dictionary diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/static/js/fts_parser.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/static/js/fts_parser.js index ad5579d0d..dde527839 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/static/js/fts_parser.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/static/js/fts_parser.js @@ -11,10 +11,10 @@ import FTSParserSchema from './fts_parser.ui'; import { getNodeAjaxOptions, getNodeListById } from '../../../../../../../static/js/node_ajax'; define('pgadmin.node.fts_parser', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { +], function(gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { // Extend the collection class for fts parser if (!pgBrowser.Nodes['coll-fts_parser']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js index 5320246f3..f56e12941 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/static/js/fts_template.js @@ -11,10 +11,10 @@ import FTSTemplateSchema from './fts_template.ui'; import { getNodeAjaxOptions, getNodeListById } from '../../../../../../../static/js/node_ajax'; define('pgadmin.node.fts_template', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { +], function(gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { // Extend the collection class for fts template if (!pgBrowser.Nodes['coll-fts_template']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js index b9107d98f..f730bd154 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.js @@ -14,13 +14,11 @@ import { getNodeVariableSchema } from '../../../../../static/js/variable.ui'; /* Create and Register Function Collection and Node. */ define('pgadmin.node.function', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'backbone', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', ], function( - gettext, url_for, $, Backbone, pgAdmin, pgBrowser, Backform, schemaChild, - schemaChildTreeNode + gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-function']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/procedure.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/procedure.js index 7cbcdc907..8248525b6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/procedure.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/procedure.js @@ -14,13 +14,11 @@ import { getNodeVariableSchema } from '../../../../../static/js/variable.ui'; /* Create and Register Procedure Collection and Node. */ define('pgadmin.node.procedure', [ - 'sources/gettext', 'sources/url_for', 'jquery', - 'sources/pgadmin', 'pgadmin.browser', 'alertify', - 'pgadmin.node.function', 'pgadmin.node.schema.dir/child', + 'sources/gettext', 'sources/url_for', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, pgAdmin, pgBrowser, alertify, Function, - schemaChild, schemaChildTreeNode) { +], function(gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { if (!pgBrowser.Nodes['coll-procedure']) { pgAdmin.Browser.Nodes['coll-procedure'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/trigger_function.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/trigger_function.js index b7a1f2af8..d9ac6bbb0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/trigger_function.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/trigger_function.js @@ -10,15 +10,15 @@ import TriggerFunctionSchema from './trigger_function.ui'; import { getNodeListByName, getNodeListById, getNodeAjaxOptions } from '../../../../../../../static/js/node_ajax'; import { getNodeVariableSchema } from '../../../../../static/js/variable.ui'; import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.ui'; +import _ from 'lodash'; /* Create and Register Function Collection and Node. */ define('pgadmin.node.trigger_function', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, schemaChild, schemaChildTreeNode + gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-trigger_function']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/operators/static/js/operator.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/operators/static/js/operator.js index 576220638..e25b41df9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/operators/static/js/operator.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/operators/static/js/operator.js @@ -10,10 +10,10 @@ import OperatorSchema from './operator.ui'; define('pgadmin.node.operator', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChild) { +], function(gettext, pgAdmin, pgBrowser, schemaChild) { if (!pgBrowser.Nodes['coll-operator']) { pgAdmin.Browser.Nodes['coll-operator'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbfunc.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbfunc.js index 6d8e6e6c2..5bf697fe3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbfunc.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbfunc.js @@ -11,10 +11,9 @@ import EDBFuncSchema from './edbfunc.ui'; /* Create and Register Function Collection and Node. */ define('pgadmin.node.edbfunc', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgBrowser) { if (!pgBrowser.Nodes['coll-edbfunc']) { pgBrowser.Nodes['coll-edbfunc'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbproc.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbproc.js index c1e74aa2a..bf3c570a6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbproc.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/static/js/edbproc.js @@ -8,15 +8,16 @@ ////////////////////////////////////////////////////////////// import EDBFuncSchema from './edbfunc.ui'; +import _ from 'lodash'; /* Create and Register Procedure Collection and Node. */ define('pgadmin.node.edbproc', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.edbfunc', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, EdbFunction + gettext, url_for, pgAdmin, pgBrowser, EdbFunction ) { if (!pgBrowser.Nodes['coll-edbproc']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/static/js/edbvar.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/static/js/edbvar.js index d9ebb9d3d..490ad4a9c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/static/js/edbvar.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/static/js/edbvar.js @@ -11,10 +11,9 @@ import EDBVarSchema from './edbvar.ui'; /* Create and Register Function Collection and Node. */ define('pgadmin.node.edbvar', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgBrowser) { if (!pgBrowser.Nodes['coll-edbvar']) { pgBrowser.Nodes['coll-edbvar'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/static/js/package.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/static/js/package.js index 003f379bd..14750af5d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/static/js/package.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/static/js/package.js @@ -11,13 +11,12 @@ import PackageSchema from './package.ui'; import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.ui'; import { getNodeListByName } from '../../../../../../../static/js/node_ajax'; + define('pgadmin.node.package', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, schemaChild, - schemaChildTreeNode) { +], function(gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode) { // Extend the browser's collection class for package collection if (!pgBrowser.Nodes['coll-package']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/static/js/sequence.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/static/js/sequence.js index 0e336682a..57026803d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/static/js/sequence.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/static/js/sequence.js @@ -12,13 +12,11 @@ import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.u import SequenceSchema from './sequence.ui'; define('pgadmin.node.sequence', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, schemaChild, - schemaChildTreeNode + gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode ) { // Extend the browser's collection class for sequence collection diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/catalog.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/catalog.js index 42d182c48..0ac986378 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/catalog.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/catalog.js @@ -10,9 +10,8 @@ import CatalogSchema from './catalog.ui'; define('pgadmin.node.catalog', [ - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', - 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, $, _, pgAdmin, pgBrowser) { + 'sources/gettext', 'pgadmin.browser', 'pgadmin.browser.collection', +], function(gettext, pgBrowser) { // Extend the browser's collection class for catalog collection if (!pgBrowser.Nodes['coll-catalog']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/schema.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/schema.js index 4822c204d..340a9444e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/schema.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/static/js/schema.js @@ -10,12 +10,13 @@ import PGSchema from './schema.ui'; import { getNodePrivilegeRoleSchema } from '../../../../static/js/privilege.ui'; import { getNodeListByName } from '../../../../../../static/js/node_ajax'; +import _ from 'lodash'; define('pgadmin.node.schema', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.backgrid', + 'sources/gettext', 'sources/url_for', 'jquery', + 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, Backgrid) { +], function(gettext, url_for, $, pgBrowser, Backform, Backgrid) { // VacuumSettings Collection to display all settings parameters as Grid Backform.VacuumCollectionControl = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js index 104324cb3..c7806a64f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/static/js/synonym.js @@ -9,14 +9,14 @@ import { getNodeAjaxOptions, getNodeListByName } from '../../../../../../../static/js/node_ajax'; import SynonymSchema from './synonym.ui'; +import _ from 'lodash'; define('pgadmin.node.synonym', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.alertifyjs', + 'sources/gettext', 'sources/url_for', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, alertify, - schemaChild, schemaChildTreeNode) { +], function(gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode) { if (!pgBrowser.Nodes['coll-synonym']) { pgAdmin.Browser.Nodes['coll-synonym'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.js index 4df6c7ae7..0956f5e19 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.js @@ -8,14 +8,13 @@ ////////////////////////////////////////////////////////////// import { getNodeColumnSchema } from './column.ui'; +import _ from 'lodash'; define('pgadmin.node.column', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.backgrid', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser, Backform, Backgrid, - SchemaChildTreeNode + gettext, url_for, pgBrowser, SchemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-column']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.ui.js index 73d487ac3..45a28f682 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/static/js/column.ui.js @@ -1,3 +1,12 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import VariableSchema from 'top/browser/server_groups/servers/static/js/variable.ui'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/static/js/compound_trigger.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/static/js/compound_trigger.js index 06b41026a..e45e74ef3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/static/js/compound_trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/static/js/compound_trigger.js @@ -12,12 +12,12 @@ import CompoundTriggerSchema from './compound_trigger.ui'; import Notify from '../../../../../../../../../static/js/helpers/Notifier'; define('pgadmin.node.compound_trigger', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'jquery', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, SchemaChildTreeNode + gettext, url_for, $, pgAdmin, pgBrowser, SchemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-compound_trigger']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.js index 4d1ccde09..b8578d365 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.js @@ -9,13 +9,14 @@ import CheckConstraintSchema from './check_constraint.ui'; import Notify from '../../../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; // Check Constraint Module: Node define('pgadmin.node.check_constraint', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'jquery', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, schemaChildTreeNode) { +], function(gettext, url_for, $, pgAdmin, pgBrowser, schemaChildTreeNode) { // Check Constraint Node if (!pgBrowser.Nodes['check_constraint']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js index aaf53dbf4..484962d0c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js @@ -1,3 +1,11 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import _ from 'lodash'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js index a71ea2e79..3c2767348 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js @@ -8,12 +8,13 @@ ////////////////////////////////////////////////////////////// import { getNodeExclusionConstraintSchema } from './exclusion_constraint.ui'; +import _ from 'lodash'; define('pgadmin.node.exclusion_constraint', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser + gettext, url_for, pgAdmin, pgBrowser ) { // Extend the browser's node class for exclusion constraint node if (!pgBrowser.Nodes['exclusion_constraint']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js index 410a71617..0d7a4cb62 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js @@ -1,3 +1,11 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import _ from 'lodash'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js index 00950a8de..6fc8fc69a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.js @@ -9,12 +9,13 @@ import { getNodeForeignKeySchema } from './foreign_key.ui'; import Notify from '../../../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define('pgadmin.node.foreign_key', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone', + 'sources/gettext', 'sources/url_for', 'jquery', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser + gettext, url_for, $, pgAdmin, pgBrowser ) { // Extend the browser's node class for foreign key node if (!pgBrowser.Nodes['foreign_key']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js index f046155fd..f72433c5d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js @@ -1,3 +1,12 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import _ from 'lodash'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js index a1844f7a6..da48deafb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js @@ -9,12 +9,13 @@ import { getNodeListByName } from '../../../../../../../../../static/js/node_ajax'; import PrimaryKeySchema from './primary_key.ui'; +import _ from 'lodash'; define('pgadmin.node.primary_key', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, Backgrid) { +], function(gettext, url_for, pgAdmin, pgBrowser, Backform, Backgrid) { // Extend the browser's node class for index constraint node if (!pgBrowser.Nodes['primary_key']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js index b0189bb88..634212380 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js @@ -1,3 +1,11 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import _ from 'lodash'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.js index 1edf236a2..acb8a9823 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.js @@ -9,11 +9,12 @@ import { getNodeListByName } from '../../../../../../../../../static/js/node_ajax'; import UniqueConstraintSchema from './unique_constraint.ui'; +import _ from 'lodash'; define('pgadmin.node.unique_constraint', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgAdmin, pgBrowser) { // Extend the browser's node class for index constraint node if (!pgBrowser.Nodes['unique_constraint']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js index bf1a098bc..014f3b634 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js @@ -1,3 +1,11 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import _ from 'lodash'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/static/js/constraints.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/static/js/constraints.js index df5f0e4cb..5bdf77aa4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/static/js/constraints.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/static/js/constraints.js @@ -8,12 +8,12 @@ ////////////////////////////////////////////////////////////// define('pgadmin.node.constraints', [ - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', + 'sources/gettext', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.node.unique_constraint', 'pgadmin.node.check_constraint', 'pgadmin.node.foreign_key', 'pgadmin.node.exclusion_constraint', 'pgadmin.node.primary_key', -], function(gettext, $, _, pgAdmin, pgBrowser) { +], function(gettext, pgAdmin, pgBrowser) { if (!pgBrowser.Nodes['coll-constraints']) { pgAdmin.Browser.Nodes['coll-constraints'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/static/js/index.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/static/js/index.js index cb1749c08..84e396ce2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/static/js/index.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/static/js/index.js @@ -9,16 +9,15 @@ import IndexSchema, { getColumnSchema } from './index.ui'; import { getNodeAjaxOptions, getNodeListByName } from 'pgbrowser/node_ajax'; +import _ from 'lodash'; define('pgadmin.node.index', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'backbone', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.alertifyjs', - 'pgadmin.backform', 'pgadmin.backgrid', + 'sources/gettext', 'sources/url_for', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser, Alertify, Backform, - Backgrid, SchemaChildTreeNode + gettext, url_for, pgAdmin, pgBrowser, SchemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-index']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.js index 93944e3b9..3a3f9b8ad 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.js @@ -9,16 +9,16 @@ import { getNodePartitionTableSchema } from './partition.ui'; import Notify from '../../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define([ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'jquery', 'sources/pgadmin', 'pgadmin.browser', - 'pgadmin.alertifyjs', 'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.node.schema.dir/schema_child_tree_node', 'sources/utils', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Alertify, Backform, Backgrid, + gettext, url_for, $, pgAdmin, pgBrowser, SchemaChildTreeNode, pgadminUtils ) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.ui.js index b05a487bf..ea22cfdb7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/static/js/partition.ui.js @@ -1,3 +1,12 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import SecLabelSchema from 'top/browser/server_groups/servers/static/js/sec_label.ui'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/static/js/row_security_policy.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/static/js/row_security_policy.js index d1908a6eb..014e88999 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/static/js/row_security_policy.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/static/js/row_security_policy.js @@ -11,14 +11,12 @@ import { getNodeListByName } from '../../../../../../../../static/js/node_ajax'; define('pgadmin.node.row_security_policy', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser', - 'pgadmin.backform', 'pgadmin.alertifyjs', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, alertify, - SchemaChildTreeNode + gettext, url_for, pgAdmin, pgBrowser, SchemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-row_security_policy']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/static/js/rule.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/static/js/rule.js index 73ebd4183..d82ac7df2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/static/js/rule.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/static/js/rule.js @@ -8,12 +8,13 @@ ////////////////////////////////////////////////////////////// import RuleSchema from './rule.ui'; import Notify from '../../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define('pgadmin.node.rule', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'jquery', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/schema_child_tree_node', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, SchemaChildTreeNode) { +], function(gettext, url_for, $, pgAdmin, pgBrowser, SchemaChildTreeNode) { /** Create and add a rule collection into nodes diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/partition.utils.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/partition.utils.ui.js index 237291b6a..68d627bb8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/partition.utils.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/partition.utils.ui.js @@ -1,3 +1,11 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// import _ from 'lodash'; import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js index 332107503..c70c58fd9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js @@ -8,19 +8,18 @@ import { getNodeTableSchema } from './table.ui'; import Notify from '../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define('pgadmin.node.table', [ 'pgadmin.tables.js/enable_disable_triggers', - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'jquery', 'sources/pgadmin', 'pgadmin.browser', - 'pgadmin.alertifyjs', 'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.node.schema.dir/child','pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', 'pgadmin.node.column', 'pgadmin.node.constraints', ], function( tableFunctions, - gettext, url_for, $, _, pgAdmin, pgBrowser, Alertify, Backform, Backgrid, - SchemaChild, SchemaChildTreeNode + gettext, url_for, $, pgAdmin, pgBrowser, SchemaChild, SchemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-table']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js index 0197f6671..e5bf4a9cc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js @@ -1,3 +1,11 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2022, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import SecLabelSchema from 'top/browser/server_groups/servers/static/js/sec_label.ui'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js index c60ecbc5c..68deb6dc9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js @@ -9,14 +9,15 @@ import { getNodeListByName, getNodeAjaxOptions } from '../../../../../../../../static/js/node_ajax'; import TriggerSchema from './trigger.ui'; import Notify from '../../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define('pgadmin.node.trigger', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'jquery', 'sources/pgadmin', 'pgadmin.browser', - 'pgadmin.backform', 'pgadmin.node.schema.dir/schema_child_tree_node', + 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, SchemaChildTreeNode + gettext, url_for, $, pgAdmin, pgBrowser, SchemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-trigger']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.js index 56ef198e1..54a05ad1d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.js @@ -12,13 +12,11 @@ import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.u import TypeSchema, { getCompositeSchema, getRangeSchema, getExternalSchema, getDataTypeSchema } from './type.ui'; define('pgadmin.node.type', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', - 'pgadmin.backgrid', 'pgadmin.node.schema.dir/child', + 'sources/gettext', 'sources/url_for', + 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.collection', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, Backgrid, - schemaChild, schemaChildTreeNode + gettext, url_for, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode ) { if (!pgBrowser.Nodes['coll-type']) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js index 92e71b1ec..c715e6082 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js @@ -12,7 +12,7 @@ import BaseUISchema from 'sources/SchemaView/base_schema.ui'; import SecLabelSchema from '../../../../../static/js/sec_label.ui'; import { getNodeAjaxOptions } from '../../../../../../../static/js/node_ajax'; -import _ from 'underscore'; +import _ from 'lodash'; import getApiInstance from 'sources/api_instance'; import { isEmptyString } from 'sources/validators'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js index b598d58b0..33c9822e2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js @@ -12,15 +12,16 @@ import { getNodeListByName } from '../../../../../../../static/js/node_ajax'; import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.ui'; import { getNodeVacuumSettingsSchema } from '../../../../../static/js/vacuum.ui'; import Notify from '../../../../../../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define('pgadmin.node.mview', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.alertifyjs', 'pgadmin.browser', - 'pgadmin.backform', 'pgadmin.node.schema.dir/child', + 'sources/gettext', 'sources/url_for', 'jquery', + 'sources/pgadmin', 'pgadmin.browser', + 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'sources/utils', 'pgadmin.browser.server.privilege', ], function( - gettext, url_for, $, _, pgAdmin, Alertify, pgBrowser, Backform, + gettext, url_for, $, pgAdmin, pgBrowser, schemaChild, schemaChildTreeNode, commonUtils ) { @@ -178,7 +179,7 @@ define('pgadmin.node.mview', [ return; } - if (!commonUtils.hasBinariesConfiguration(pgBrowser, server_data, Alertify)) { + if (!commonUtils.hasBinariesConfiguration(pgBrowser, server_data)) { return; } diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/view.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/view.js index 0ba952954..829ddca3b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/view.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/view.js @@ -12,12 +12,11 @@ import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.u import ViewSchema from './view.ui'; define('pgadmin.node.view', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node', 'pgadmin.browser.server.privilege', 'pgadmin.node.rule', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, schemaChild, schemaChildTreeNode + gettext, url_for, pgBrowser, schemaChild, schemaChildTreeNode ) { diff --git a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js index 4fccec388..ba9f82e0d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js +++ b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js @@ -13,14 +13,14 @@ import { getNodeVariableSchema } from '../../../static/js/variable.ui'; import DatabaseSchema from './database.ui'; import Notify from '../../../../../../static/js/helpers/Notifier'; import { showServerPassword } from '../../../../../../static/js/Dialogs/index'; +import _ from 'lodash'; define('pgadmin.node.database', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/utils', 'sources/pgadmin', 'pgadmin.browser.utils', - 'pgadmin.alertifyjs', 'pgadmin.backform', + 'sources/gettext', 'sources/url_for', 'jquery', + 'sources/pgadmin', 'pgadmin.browser.utils', 'pgadmin.authenticate.kerberos', 'pgadmin.browser.collection', 'pgadmin.browser.server.privilege', 'pgadmin.browser.server.variable', -], function(gettext, url_for, $, _, pgadminUtils, pgAdmin, pgBrowser, Alertify, Backform, Kerberos) { +], function(gettext, url_for, $, pgAdmin, pgBrowser, Kerberos) { if (!pgBrowser.Nodes['coll-database']) { pgBrowser.Nodes['coll-database'] = diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.js b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.js index f5f596188..12aa68e94 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.js +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/static/js/subscription.js @@ -13,9 +13,9 @@ import _ from 'lodash'; import Notify from '../../../../../../../static/js/helpers/Notifier'; define('pgadmin.node.subscription', [ - 'sources/gettext', 'sources/url_for', 'jquery', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, url_for, $, pgAdmin, pgBrowser) { + 'sources/gettext', 'sources/url_for', + 'pgadmin.browser', 'pgadmin.browser.collection', +], function(gettext, url_for, pgBrowser) { // Extend the browser's collection class for subscriptions collection if (!pgBrowser.Nodes['coll-subscription']) { diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js b/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js index 2e647175d..e07ed39e8 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/schedules/static/js/pga_schedule.js @@ -10,10 +10,9 @@ import PgaJobScheduleSchema from './pga_schedule.ui'; define('pgadmin.node.pga_schedule', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'moment', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', ], function( - gettext, url_for, $, _, pgAdmin, moment, pgBrowser + gettext, url_for, pgBrowser ) { if (!pgBrowser.Nodes['coll-pga_schedule']) { diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js b/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js index c9d83da86..fc04ac25e 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/static/js/pga_job.js @@ -13,10 +13,9 @@ import { getNodePgaJobStepSchema } from '../../steps/static/js/pga_jobstep.ui'; import Notify from '../../../../../../static/js/helpers/Notifier'; define('pgadmin.node.pga_job', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'jquery', 'pgadmin.browser', 'pgadmin.node.pga_jobstep', 'pgadmin.node.pga_schedule', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, $, pgBrowser) { if (!pgBrowser.Nodes['coll-pga_job']) { pgBrowser.Nodes['coll-pga_job'] = diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js b/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js index d418dac9f..ced319471 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/steps/static/js/pga_jobstep.js @@ -8,12 +8,12 @@ ////////////////////////////////////////////////////////////// import { getNodePgaJobStepSchema } from './pga_jobstep.ui'; +import _ from 'lodash'; define('pgadmin.node.pga_jobstep', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', - 'sources/pgadmin', 'pgadmin.browser', 'alertify', 'backform', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'backform', 'backgrid', 'pgadmin.backform', -], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Alertify, Backform) { +], function(gettext, url_for, pgBrowser, Backform) { if (!pgBrowser.Nodes['coll-pga_jobstep']) { pgBrowser.Nodes['coll-pga_jobstep'] = diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/static/js/resource_group.js b/web/pgadmin/browser/server_groups/servers/resource_groups/static/js/resource_group.js index c612fe20c..9f5113961 100644 --- a/web/pgadmin/browser/server_groups/servers/resource_groups/static/js/resource_group.js +++ b/web/pgadmin/browser/server_groups/servers/resource_groups/static/js/resource_group.js @@ -10,9 +10,9 @@ import ResourceGroupSchema from './resource_group.ui'; define('pgadmin.node.resource_group', [ - 'sources/gettext', 'sources/url_for', 'underscore', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'pgadmin.browser.collection', -], function(gettext, url_for, _, pgBrowser) { +], function(gettext, url_for, pgBrowser) { // Extend the browser's collection class for resource group collection if (!pgBrowser.Nodes['coll-resource_group']) { diff --git a/web/pgadmin/browser/server_groups/servers/roles/static/js/role.js b/web/pgadmin/browser/server_groups/servers/roles/static/js/role.js index 592af2bb6..f4bb59199 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/static/js/role.js +++ b/web/pgadmin/browser/server_groups/servers/roles/static/js/role.js @@ -13,9 +13,9 @@ import { getMembershipSchema } from '../../../static/js/membership.ui'; import { showRoleReassign } from './roleReassign'; define('pgadmin.node.role', [ - 'sources/gettext', 'sources/url_for', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.browser' -], function(gettext, url_for, _, pgAdmin, pgBrowser) { +], function(gettext, url_for, pgAdmin, pgBrowser) { if (!pgBrowser.Nodes['coll-role']) { pgAdmin.Browser.Nodes['coll-role'] = diff --git a/web/pgadmin/browser/server_groups/servers/static/js/privilege.js b/web/pgadmin/browser/server_groups/servers/static/js/privilege.js index fe8d1ff5f..1d030246e 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/privilege.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/privilege.js @@ -7,9 +7,11 @@ // ////////////////////////////////////////////////////////////// -define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform', - 'backgrid', 'alertify', 'pgadmin.browser.node', 'sources/utils', 'pgadmin.browser.node.ui', -], function(gettext, _, $, Backbone, Backform, Backgrid, Alertify, pgNode, commonUtils) { +import _ from 'lodash'; + +define(['sources/gettext', 'jquery', 'backbone', + 'backgrid', 'pgadmin.browser.node', 'sources/utils', 'pgadmin.browser.node.ui', +], function(gettext, $, Backbone, Backgrid, pgNode, commonUtils) { /** * Each Privilege, supporeted by an database object, will be represented * using this Model. diff --git a/web/pgadmin/browser/server_groups/servers/static/js/server.js b/web/pgadmin/browser/server_groups/servers/static/js/server.js index a651f7fa4..7c80dfc22 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/server.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/server.js @@ -11,15 +11,16 @@ import { getNodeListById } from '../../../../static/js/node_ajax'; import ServerSchema from './server.ui'; import Notify from '../../../../../static/js/helpers/Notifier'; import { showServerPassword, showChangeServerPassword, showNamedRestorePoint } from '../../../../../static/js/Dialogs/index'; +import _ from 'lodash'; define('pgadmin.node.server', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'jquery', 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.user_management.current_user', 'pgadmin.authenticate.kerberos', 'pgadmin.browser.server.privilege', ], function( - gettext, url_for, $, _, pgAdmin, pgBrowser, + gettext, url_for, $, pgAdmin, pgBrowser, current_user, Kerberos, ) { diff --git a/web/pgadmin/browser/server_groups/servers/static/js/variable.js b/web/pgadmin/browser/server_groups/servers/static/js/variable.js index cb0ae42e8..3087169b5 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/variable.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/variable.js @@ -7,11 +7,13 @@ // ////////////////////////////////////////////////////////////// +import _ from 'lodash'; + define([ - 'sources/gettext', 'underscore', 'jquery', 'backbone', 'backform', 'backgrid', 'alertify', - 'sources/pgadmin', 'pgadmin.browser.node', 'pgadmin.browser.node.ui', + 'sources/gettext', 'jquery', 'backbone', 'backform', 'backgrid', + 'pgadmin.browser.node', 'pgadmin.browser.node.ui', ], -function(gettext, _, $, Backbone, Backform, Backgrid, Alertify, pgAdmin, pgNode) { +function(gettext, $, Backbone, Backform, Backgrid, pgNode) { /* * cellFunction for variable control. diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js b/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js index d16033820..22b8543b8 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/static/js/tablespace.js @@ -11,13 +11,14 @@ import { getNodeListByName } from '../../../../../static/js/node_ajax'; import { getNodePrivilegeRoleSchema } from '../../../static/js/privilege.ui'; import { getNodeVariableSchema } from '../../../static/js/variable.ui'; import TablespaceSchema from './tablespace.ui'; +import _ from 'lodash'; define('pgadmin.node.tablespace', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone', - 'sources/pgadmin', 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.node.ui', + 'sources/gettext', 'sources/url_for', + 'pgadmin.browser', 'pgadmin.browser.collection', 'pgadmin.browser.node.ui', 'pgadmin.browser.server.privilege', ], function( - gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser + gettext, url_for, pgBrowser ) { if (!pgBrowser.Nodes['coll-tablespace']) { diff --git a/web/pgadmin/browser/server_groups/static/js/server_group.js b/web/pgadmin/browser/server_groups/static/js/server_group.js index 91ac1a7f5..ebe7588e0 100644 --- a/web/pgadmin/browser/server_groups/static/js/server_group.js +++ b/web/pgadmin/browser/server_groups/static/js/server_group.js @@ -7,11 +7,12 @@ // ////////////////////////////////////////////////////////////// import ServerGroupSchema from './server_group.ui'; +import _ from 'lodash'; define('pgadmin.node.server_group', [ - 'sources/gettext', 'sources/url_for', 'jquery', 'underscore', + 'sources/gettext', 'sources/url_for', 'sources/pgadmin', 'pgadmin.user_management.current_user', 'pgadmin.browser', 'pgadmin.browser.node', -], function(gettext, url_for, $, _, pgAdmin, current_user) { +], function(gettext, url_for, pgAdmin, current_user) { if (!pgAdmin.Browser.Nodes['server_group']) { pgAdmin.Browser.Nodes['server_group'] = pgAdmin.Browser.Node.extend({ diff --git a/web/pgadmin/browser/static/css/wizard.css b/web/pgadmin/browser/static/css/wizard.css index a8d5fbd64..c999fab01 100644 --- a/web/pgadmin/browser/static/css/wizard.css +++ b/web/pgadmin/browser/static/css/wizard.css @@ -45,8 +45,7 @@ padding: 0.5rem 0rem; } -/* In wizard select2 dropdown doesn't - * popup because z-index of alertify +/* In wizard select2 dropdown doesn't popup. * wizard is greater than the z-index * of select2 dropdown. To make select2 * visible, set z-index of select2 diff --git a/web/pgadmin/browser/static/js/activity.js b/web/pgadmin/browser/static/js/activity.js index 10fa10df2..7e3553e78 100644 --- a/web/pgadmin/browser/static/js/activity.js +++ b/web/pgadmin/browser/static/js/activity.js @@ -8,7 +8,7 @@ ////////////////////////////////////////////////////////////// import $ from 'jquery'; -import _ from 'underscore'; +import _ from 'lodash'; import pgAdmin from 'sources/pgadmin'; import pgWindow from 'sources/window'; diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js index 3c4207f2a..6e4f2f4ee 100644 --- a/web/pgadmin/browser/static/js/browser.js +++ b/web/pgadmin/browser/static/js/browser.js @@ -8,12 +8,14 @@ ////////////////////////////////////////////////////////////// import { generateNodeUrl } from './node_ajax'; +import _ from 'lodash'; import Notify, {initializeModalProvider, initializeNotifier} from '../../../static/js/helpers/Notifier'; import { checkMasterPassword } from '../../../static/js/Dialogs/index'; +import { pgHandleItemError } from '../../../static/js/utils'; define('pgadmin.browser', [ - 'sources/gettext', 'sources/url_for', 'require', 'jquery', 'underscore', - 'bootstrap', 'sources/pgadmin', 'pgadmin.alertifyjs', 'bundled_codemirror', + 'sources/gettext', 'sources/url_for', 'require', 'jquery', + 'bootstrap', 'sources/pgadmin', 'bundled_codemirror', 'sources/check_node_visibility', './toolbar', 'pgadmin.help', 'sources/csrf', 'sources/utils', 'sources/window', 'pgadmin.authenticate.kerberos', 'sources/tree/tree_init', @@ -25,8 +27,8 @@ define('pgadmin.browser', [ 'sources/codemirror/addon/fold/pgadmin-sqlfoldcode', 'pgadmin.browser.keyboard', 'sources/tree/pgadmin_tree_save_state' ], function( - gettext, url_for, require, $, _, - Bootstrap, pgAdmin, Alertify, codemirror, + gettext, url_for, require, $, + Bootstrap, pgAdmin, codemirror, checkNodeVisibility, toolBar, help, csrfToken, pgadminUtils, pgWindow, Kerberos, InitTree, ) { @@ -1707,12 +1709,10 @@ define('pgadmin.browser', [ success(); } }) - .fail(function(xhr, error, status) { - if ( - !Alertify.pgHandleItemError( - xhr, error, status, {item: __i, info: info} - ) - ) { + .fail(function(xhr, error) { + if (!pgHandleItemError( + xhr, {item: __i, info: info} + )) { var contentType = xhr.getResponseHeader('Content-Type'), jsonResp = ( contentType && diff --git a/web/pgadmin/browser/static/js/collection.js b/web/pgadmin/browser/static/js/collection.js index ada8258fc..d911653d9 100644 --- a/web/pgadmin/browser/static/js/collection.js +++ b/web/pgadmin/browser/static/js/collection.js @@ -7,13 +7,14 @@ // ////////////////////////////////////////////////////////////// import {getPanelView} from './panel_view'; +import _ from 'lodash'; define([ - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', - 'backbone', 'alertify', 'backform', 'backgrid', 'sources/browser/generate_url', + 'sources/gettext', 'sources/pgadmin', + 'sources/browser/generate_url', 'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.browser.node', 'backgrid.select.all', -], function(gettext, $, _, pgAdmin, Backbone, Alertify, Backform, Backgrid, generateUrl) { +], function(gettext, pgAdmin, generateUrl) { var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {}; diff --git a/web/pgadmin/browser/static/js/datamodel.js b/web/pgadmin/browser/static/js/datamodel.js index 570b1382c..2b57d50cb 100644 --- a/web/pgadmin/browser/static/js/datamodel.js +++ b/web/pgadmin/browser/static/js/datamodel.js @@ -6,10 +6,11 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// +import _ from 'lodash'; define([ - 'underscore', 'sources/pgadmin', 'jquery', 'backbone', 'sources/utils', -], function(_, pgAdmin, $, Backbone, pgadminUtils) { + 'sources/pgadmin', 'jquery', 'backbone', 'sources/utils', +], function(pgAdmin, $, Backbone, pgadminUtils) { var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {}; pgBrowser.DataModel = Backbone.Model.extend({ diff --git a/web/pgadmin/browser/static/js/error.js b/web/pgadmin/browser/static/js/error.js index b4603d883..eabc55275 100644 --- a/web/pgadmin/browser/static/js/error.js +++ b/web/pgadmin/browser/static/js/error.js @@ -8,10 +8,11 @@ ////////////////////////////////////////////////////////////// import Notify from '../../../static/js/helpers/Notifier'; +import _ from 'lodash'; define( - ['sources/gettext', 'underscore', 'sources/pgadmin'], - function(gettext, _, pgAdmin) { + ['sources/gettext', 'sources/pgadmin'], + function(gettext, pgAdmin) { pgAdmin.Browser = pgAdmin.Browser || {}; _.extend(pgAdmin.Browser, { diff --git a/web/pgadmin/browser/static/js/frame.js b/web/pgadmin/browser/static/js/frame.js index 8a1537740..3d3de4d3e 100644 --- a/web/pgadmin/browser/static/js/frame.js +++ b/web/pgadmin/browser/static/js/frame.js @@ -6,10 +6,10 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// - +import _ from 'lodash'; define([ - 'underscore', 'sources/pgadmin', 'jquery', 'wcdocker', -], function(_, pgAdmin, $) { + 'sources/pgadmin', 'jquery', 'wcdocker', +], function(pgAdmin, $) { var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {}, wcDocker = window.wcDocker, diff --git a/web/pgadmin/browser/static/js/keyboard.js b/web/pgadmin/browser/static/js/keyboard.js index 1a9dafb69..5ef23bb8d 100644 --- a/web/pgadmin/browser/static/js/keyboard.js +++ b/web/pgadmin/browser/static/js/keyboard.js @@ -7,7 +7,7 @@ // ////////////////////////////////////////////////////////////// -import _ from 'underscore'; +import _ from 'lodash'; import pgAdmin from '../../../static/js/pgadmin'; import $ from 'jquery'; import Mousetrap from 'mousetrap'; diff --git a/web/pgadmin/browser/static/js/menu.js b/web/pgadmin/browser/static/js/menu.js index bce476969..7e8b52af4 100644 --- a/web/pgadmin/browser/static/js/menu.js +++ b/web/pgadmin/browser/static/js/menu.js @@ -6,10 +6,11 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// +import _ from 'lodash'; define([ - 'underscore', 'sources/pgadmin', 'jquery', 'sources/utils', 'sources/gettext', -], function(_, pgAdmin, $, pgadminUtils, gettext) { + 'sources/pgadmin', 'jquery', 'sources/utils', 'sources/gettext', +], function(pgAdmin, $, pgadminUtils, gettext) { 'use strict'; pgAdmin.Browser = pgAdmin.Browser || {}; diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js index 062d613f2..49c8198fc 100644 --- a/web/pgadmin/browser/static/js/node.js +++ b/web/pgadmin/browser/static/js/node.js @@ -9,17 +9,17 @@ import {getNodeView, removeNodeView} from './node_view'; import Notify from '../../../static/js/helpers/Notifier'; +import _ from 'lodash'; +import { pgHandleItemError } from '../../../static/js/utils'; define('pgadmin.browser.node', [ - 'sources/url_for', - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', - 'pgadmin.browser.menu', 'backbone', 'pgadmin.alertifyjs', 'pgadmin.browser.datamodel', + 'sources/gettext', 'jquery', 'sources/pgadmin', + 'backbone', 'pgadmin.browser.datamodel', 'backform', 'sources/browser/generate_url', 'pgadmin.help', 'sources/utils', 'pgadmin.browser.utils', 'pgadmin.backform', ], function( - url_for, - gettext, $, _, pgAdmin, - Menu, Backbone, Alertify, pgBrowser, + gettext, $, pgAdmin, + Backbone, pgBrowser, Backform, generateUrl, help, commonUtils ) { @@ -458,11 +458,10 @@ define('pgadmin.browser.node', [ 'pgadmin:node:retrieval:error', 'properties', xhr, options.textStatus, options.errorThrown, item ); - if (!Alertify.pgHandleItemError( - xhr, options.textStatus, options.errorThrown, { - item: item, - info: info, - } + if (!pgHandleItemError(xhr, { + item: item, + info: info, + } )) { Notify.pgNotifier( options.textStatus, xhr, @@ -1672,7 +1671,7 @@ define('pgadmin.browser.node', [ type: 'cancel', tooltip: gettext('Cancel changes to this object.'), extraClasses: ['btn-secondary', 'mx-1'], - icon: 'fa fa-times pg-alertify-button', + icon: 'fa fa-times', disabled: false, register: function(btn) { btn.on('click',() => { @@ -1686,7 +1685,7 @@ define('pgadmin.browser.node', [ type: 'reset', tooltip: gettext('Reset the fields on this dialog.'), extraClasses: ['btn-secondary', 'mx-1'], - icon: 'fa fa-recycle pg-alertify-button', + icon: 'fa fa-recycle', disabled: true, register: function(btn) { btn.on('click',() => { @@ -1706,7 +1705,7 @@ define('pgadmin.browser.node', [ type: 'save', tooltip: gettext('Save this object.'), extraClasses: ['btn-primary', 'mx-1'], - icon: 'fa fa-save pg-alertify-button', + icon: 'fa fa-save', disabled: true, register: function(btn) { // Save the changes @@ -1975,7 +1974,7 @@ define('pgadmin.browser.node', [ ) || 0; if (node_info) { - _.each(_.sortBy(_.values(_.pick( + _.each(_.sortBy(_.values(_.pickBy( node_info, function(v) { return (v.priority <= min_priority); diff --git a/web/pgadmin/browser/static/js/node.ui.js b/web/pgadmin/browser/static/js/node.ui.js index a12a053c9..bc1196a9e 100644 --- a/web/pgadmin/browser/static/js/node.ui.js +++ b/web/pgadmin/browser/static/js/node.ui.js @@ -6,11 +6,12 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// +import _ from 'lodash'; define([ - 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', 'backbone', 'backform', - 'alertify', 'backgrid', 'select2', 'pgadmin.browser.node', -], function(gettext, $, _, pgAdmin, Backbone, Backform, Alertify, Backgrid) { + 'sources/gettext', 'jquery', 'sources/pgadmin', 'backform', + 'backgrid', 'select2', 'pgadmin.browser.node', +], function(gettext, $, pgAdmin, Backform, Backgrid) { /* * Define the selectAll adapter for select2. diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js index 8f49a6745..d445787b8 100644 --- a/web/pgadmin/browser/static/js/panel.js +++ b/web/pgadmin/browser/static/js/panel.js @@ -8,10 +8,11 @@ ////////////////////////////////////////////////////////////// import { getPanelView } from './panel_view'; +import _ from 'lodash'; define( - ['underscore', 'sources/pgadmin', 'jquery', 'wcdocker'], - function(_, pgAdmin, $) { + ['sources/pgadmin', 'jquery', 'wcdocker'], + function(pgAdmin, $) { var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {}, wcDocker = window.wcDocker; diff --git a/web/pgadmin/browser/static/js/preferences.js b/web/pgadmin/browser/static/js/preferences.js index 3f1aab16b..d9bb93ed4 100644 --- a/web/pgadmin/browser/static/js/preferences.js +++ b/web/pgadmin/browser/static/js/preferences.js @@ -10,9 +10,10 @@ import pgAdmin from 'sources/pgadmin'; import url_for from 'sources/url_for'; import $ from 'jquery'; -import * as SqlEditorUtils from 'sources/sqleditor_utils'; import pgWindow from 'sources/window'; import Notify from '../../../static/js/helpers/Notifier'; +import { calcFontSize } from '../../../static/js/utils'; + const pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {}; @@ -123,7 +124,7 @@ _.extend(pgBrowser, { let sqlEditPreferences = obj.get_preferences_for_module('sqleditor'); $(obj?.editor?.getWrapperElement()).css( - 'font-size',SqlEditorUtils.calcFontSize(sqlEditPreferences.sql_font_size) + 'font-size', calcFontSize(sqlEditPreferences.sql_font_size) ); obj?.editor?.setOption('tabSize', sqlEditPreferences.tab_size); obj?.editor?.setOption('lineWrapping', sqlEditPreferences.wrap_code); diff --git a/web/pgadmin/browser/static/js/toolbar.js b/web/pgadmin/browser/static/js/toolbar.js index 974b40e92..6ce976690 100644 --- a/web/pgadmin/browser/static/js/toolbar.js +++ b/web/pgadmin/browser/static/js/toolbar.js @@ -9,7 +9,7 @@ ////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; -import _ from 'underscore'; +import _ from 'lodash'; import pgAdmin from 'sources/pgadmin'; let _toolbarButtons = {}; diff --git a/web/pgadmin/browser/static/scss/_wizard.scss b/web/pgadmin/browser/static/scss/_wizard.scss index 67e2b8c2c..b8985fd73 100644 --- a/web/pgadmin/browser/static/scss/_wizard.scss +++ b/web/pgadmin/browser/static/scss/_wizard.scss @@ -18,7 +18,7 @@ position: absolute; overflow: auto; top: $title-height; - bottom: $footer-height-calc; //similar to alertify footer + bottom: $footer-height-calc; left: 0; right: 0; } @@ -28,7 +28,7 @@ padding: $footer-padding } -/* match the alertify footer */ +/* match the footer */ .pgadmin-wizard .wizard-footer { min-height: $footer-min-height; border: none; diff --git a/web/pgadmin/dashboard/static/js/Dashboard.jsx b/web/pgadmin/dashboard/static/js/Dashboard.jsx index cf06a7ad1..17f19812e 100644 --- a/web/pgadmin/dashboard/static/js/Dashboard.jsx +++ b/web/pgadmin/dashboard/static/js/Dashboard.jsx @@ -30,7 +30,7 @@ import EmptyPanelMessage from '../../../static/js/components/EmptyPanelMessage'; import TabPanel from '../../../static/js/components/TabPanel'; function parseData(data) { - var res = []; + let res = []; data.forEach((row) => { res.push({ ...row, icon: '' }); @@ -197,7 +197,7 @@ export default function Dashboard({ id: 'btn-terminate', // eslint-disable-next-line react/display-name Cell: ({ row }) => { - var terminate_session_url = + let terminate_session_url = url_for('dashboard.index') + 'terminate_session' + '/' + sid, title = gettext('Terminate Session?'), txtConfirm = gettext( @@ -268,7 +268,7 @@ export default function Dashboard({ minWidth: 0, id: 'btn-cancel', Cell: ({ row }) => { - var cancel_query_url = + let cancel_query_url = url_for('dashboard.index') + 'cancel_query' + '/' + sid, title = gettext('Cancel Active Query?'), txtConfirm = gettext( @@ -629,14 +629,14 @@ export default function Dashboard({ // If there is only one active session means it probably our main // connection session cellAction = cellAction || null; - var pg_version = treeNodeInfo.server.version || null, + let pg_version = treeNodeInfo.server.version || null, is_cancel_session = cellAction === 'cancel', txtMessage, maintenance_database = treeNodeInfo.server.db, is_super_user, current_user; - var can_signal_backend = + let can_signal_backend = treeNodeInfo.server && treeNodeInfo.server.user ? treeNodeInfo.server.user.can_signal_backend : false; diff --git a/web/pgadmin/dashboard/static/js/Graphs.jsx b/web/pgadmin/dashboard/static/js/Graphs.jsx index 10ccf126b..82b93db75 100644 --- a/web/pgadmin/dashboard/static/js/Graphs.jsx +++ b/web/pgadmin/dashboard/static/js/Graphs.jsx @@ -41,7 +41,7 @@ export function transformData(labels, refreshRate, use_diff_point_style) { /* Custom ChartJS legend callback */ export function generateLegend(chart) { - var text = []; + let text = []; text.push('
'); for (let chart_val of chart.data.datasets) { text.push('
    '); diff --git a/web/pgadmin/dashboard/static/js/WelcomeDashboard.jsx b/web/pgadmin/dashboard/static/js/WelcomeDashboard.jsx index 386973874..e3186d7f3 100644 --- a/web/pgadmin/dashboard/static/js/WelcomeDashboard.jsx +++ b/web/pgadmin/dashboard/static/js/WelcomeDashboard.jsx @@ -89,7 +89,7 @@ const useStyles = makeStyles((theme) => ({ function AddNewServer(pgBrowser) { if (pgBrowser && pgBrowser.tree) { - var i = _.isUndefined(pgBrowser.tree.selected()) ? + let i = _.isUndefined(pgBrowser.tree.selected()) ? pgBrowser.tree.first(null, false) : pgBrowser.tree.selected(), serverModule = pgAdmin.Browser.Nodes.server, diff --git a/web/pgadmin/misc/cloud/static/js/CloudWizard.jsx b/web/pgadmin/misc/cloud/static/js/CloudWizard.jsx index a6ac67fff..d6b10e534 100644 --- a/web/pgadmin/misc/cloud/static/js/CloudWizard.jsx +++ b/web/pgadmin/misc/cloud/static/js/CloudWizard.jsx @@ -67,7 +67,7 @@ export default function CloudWizard({ nodeInfo, nodeData, onClose}) { const eventBus = React.useRef(new EventBus()); - var steps = [gettext('Cloud Provider'), gettext('Credentials'), + let steps = [gettext('Cloud Provider'), gettext('Credentials'), gettext('Instance Specification'), gettext('Database Details'), gettext('Review')]; const [currentStep, setCurrentStep] = React.useState(''); const [selectionVal, setCloudSelection] = React.useState(''); @@ -121,7 +121,7 @@ export default function CloudWizard({ nodeInfo, nodeData, onClose}) { }; const onSave = () => { - var _url = url_for('cloud.deploy_on_cloud'), + let _url = url_for('cloud.deploy_on_cloud'), post_data = {}; if (cloudProvider == 'rds') { @@ -227,7 +227,7 @@ export default function CloudWizard({ nodeInfo, nodeData, onClose}) { return new Promise((resolve, reject)=>{ if(activeStep == 1 && cloudProvider == 'rds') { setErrMsg([MESSAGE_TYPE.INFO, gettext('Validating credentials...')]); - var _url = url_for('rds.verify_credentials'); + let _url = url_for('rds.verify_credentials'); const post_data = { cloud: selectionVal, secret: cloudDBCred, @@ -283,7 +283,7 @@ export default function CloudWizard({ nodeInfo, nodeData, onClose}) { }; const authenticateBigAnimal = () => { - var loading_icon_url = url_for( + let loading_icon_url = url_for( 'static', { 'filename': 'img/loading.gif'} ); diff --git a/web/pgadmin/misc/dependencies/static/js/Dependencies.jsx b/web/pgadmin/misc/dependencies/static/js/Dependencies.jsx index 7a23b0eca..b861d9732 100644 --- a/web/pgadmin/misc/dependencies/static/js/Dependencies.jsx +++ b/web/pgadmin/misc/dependencies/static/js/Dependencies.jsx @@ -76,7 +76,7 @@ export default function Dependencies({ nodeData, item, node, ...props }) { const [tableData, setTableData] = React.useState([]); const [loaderText, setLoaderText] = React.useState(''); const [msg, setMsg] = React.useState(''); - var columns = [ + let columns = [ { Header: 'Type', accessor: 'type', diff --git a/web/pgadmin/misc/dependents/static/js/Dependents.jsx b/web/pgadmin/misc/dependents/static/js/Dependents.jsx index 0c54c36cf..b9379e27e 100644 --- a/web/pgadmin/misc/dependents/static/js/Dependents.jsx +++ b/web/pgadmin/misc/dependents/static/js/Dependents.jsx @@ -77,7 +77,7 @@ export default function Dependents({ nodeData, item, node, ...props }) { const [loaderText, setLoaderText] = React.useState(''); const [msg, setMsg] = React.useState(''); - var columns = [ + let columns = [ { Header: 'Type', accessor: 'type', diff --git a/web/pgadmin/misc/properties/CollectionNodeProperties.jsx b/web/pgadmin/misc/properties/CollectionNodeProperties.jsx index 71a9b64dc..37952b3a7 100644 --- a/web/pgadmin/misc/properties/CollectionNodeProperties.jsx +++ b/web/pgadmin/misc/properties/CollectionNodeProperties.jsx @@ -198,7 +198,7 @@ export function CollectionNodeView({ const api = getApiInstance(); let tableColumns = []; - var column = {}; + let column = {}; setLoaderText('Loading...'); if (itemNodeData._type.indexOf('coll-') > -1 && !_.isUndefined(nodeObj.getSchema)) { diff --git a/web/pgadmin/misc/sql/static/js/SQL.jsx b/web/pgadmin/misc/sql/static/js/SQL.jsx index c22cadf2d..16bb098cc 100644 --- a/web/pgadmin/misc/sql/static/js/SQL.jsx +++ b/web/pgadmin/misc/sql/static/js/SQL.jsx @@ -35,7 +35,7 @@ export default function SQL({ nodeData, node, did, ...props }) { const [msg, setMsg] = React.useState(''); useEffect(() => { - var sql = '-- ' + gettext('Please select an object in the tree view.'); + let sql = '-- ' + gettext('Please select an object in the tree view.'); if (node) { let url = generateNodeUrl.call( node, diff --git a/web/pgadmin/static/css/style.css b/web/pgadmin/static/css/style.css index bcea34567..62c52adac 100644 --- a/web/pgadmin/static/css/style.css +++ b/web/pgadmin/static/css/style.css @@ -1,5 +1,3 @@ -@import 'node_modules/alertifyjs/build/css/alertify.css'; -@import 'node_modules/alertifyjs/build/css/themes/bootstrap.css'; @import 'node_modules/@fortawesome/fontawesome-free/css/all.css'; @import 'node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css'; @import 'node_modules/tempusdominus-bootstrap-4/build/css/tempusdominus-bootstrap-4.css'; diff --git a/web/pgadmin/static/js/Dialogs/index.jsx b/web/pgadmin/static/js/Dialogs/index.jsx index ee2ca73df..7a8cc6c86 100644 --- a/web/pgadmin/static/js/Dialogs/index.jsx +++ b/web/pgadmin/static/js/Dialogs/index.jsx @@ -26,7 +26,7 @@ import RenamePanelContent from './RenamePanelContent'; function mountDialog(title, getDialogContent, docker=undefined, width, height) { // Register dialog panel - var panel; + let panel; if (docker) { pgAdmin.Browser.Node.registerUtilityPanel(docker); panel = pgAdmin.Browser.Node.addUtilityPanel(width||pgAdmin.Browser.stdW.md, height||undefined, docker); @@ -35,7 +35,7 @@ function mountDialog(title, getDialogContent, docker=undefined, width, height) { panel = pgAdmin.Browser.Node.addUtilityPanel(width||pgAdmin.Browser.stdW.md); } - var j = panel.$container.find('.obj_properties').first(); + let j = panel.$container.find('.obj_properties').first(); panel.title(title); const onClose = ()=> { @@ -61,7 +61,7 @@ function mountDialog(title, getDialogContent, docker=undefined, width, height) { // This functions is used to show the connect server password dialog. export function showServerPassword() { - var title = arguments[0], + let title = arguments[0], formJson = arguments[1], nodeObj = arguments[2], nodeData = arguments[3], @@ -83,7 +83,7 @@ export function showServerPassword() { data={formJson} onOK={(formData)=>{ const api = getApiInstance(); - var _url = nodeObj.generate_url(itemNodeData, 'connect', nodeData, true); + let _url = nodeObj.generate_url(itemNodeData, 'connect', nodeData, true); if (!status) { treeNodeInfo.setLeaf(itemNodeData); treeNodeInfo.removeIcon(itemNodeData); @@ -112,7 +112,7 @@ export function showServerPassword() { // This functions is used to show the connect server password dialog when // launch from Schema Diff tool. export function showSchemaDiffServerPassword() { - var docker = arguments[0], + let docker = arguments[0], title = arguments[1], formJson = arguments[2], serverID = arguments[3], @@ -132,7 +132,7 @@ export function showSchemaDiffServerPassword() { data={formJson} onOK={(formData)=>{ const api = getApiInstance(); - var _url = url_for('schema_diff.connect_server', {'sid': serverID}); + let _url = url_for('schema_diff.connect_server', {'sid': serverID}); api.post(_url, formData) .then(res=>{ @@ -191,7 +191,7 @@ export function showMasterPassword(isPWDPresent, errmsg, masterpass_callback_que gettext('This will remove all the saved passwords. This will also remove established connections to ' + 'the server and you may need to reconnect again. Do you wish to continue?'), function() { - var _url = url_for('browser.reset_master_password'); + let _url = url_for('browser.reset_master_password'); api.delete(_url) .then(() => { @@ -219,7 +219,7 @@ export function showMasterPassword(isPWDPresent, errmsg, masterpass_callback_que } export function showChangeServerPassword() { - var title = arguments[0], + let title = arguments[0], nodeData = arguments[1], nodeObj = arguments[2], itemNodeData = arguments[3], @@ -234,7 +234,7 @@ export function showChangeServerPassword() { onSave={(isNew, data)=>{ return new Promise((resolve, reject)=>{ const api = getApiInstance(); - var _url = nodeObj.generate_url(itemNodeData, 'change_password', nodeData, true); + let _url = nodeObj.generate_url(itemNodeData, 'change_password', nodeData, true); api.post(_url, data) .then(({data: respData})=>{ @@ -265,7 +265,7 @@ export function showChangeServerPassword() { } export function showNamedRestorePoint() { - var title = arguments[0], + let title = arguments[0], nodeData = arguments[1], nodeObj = arguments[2], itemNodeData = arguments[3]; @@ -281,7 +281,7 @@ export function showNamedRestorePoint() { }} onOK={(formData)=>{ const api = getApiInstance(); - var _url = nodeObj.generate_url(itemNodeData, 'restore_point', nodeData, true); + let _url = nodeObj.generate_url(itemNodeData, 'restore_point', nodeData, true); api.post(_url, formData) .then(res=>{ @@ -298,7 +298,7 @@ export function showNamedRestorePoint() { } export function showChangeOwnership() { - var title = arguments[0], + let title = arguments[0], userList = arguments[1], noOfSharedServers = arguments[2], deletedUser = arguments[3], diff --git a/web/pgadmin/static/js/Explain/Graphical.jsx b/web/pgadmin/static/js/Explain/Graphical.jsx index 0f54ee1ec..bb7851153 100644 --- a/web/pgadmin/static/js/Explain/Graphical.jsx +++ b/web/pgadmin/static/js/Explain/Graphical.jsx @@ -24,20 +24,20 @@ import clsx from 'clsx'; import PropTypes from 'prop-types'; // Some predefined constants used to calculate image location and its border -var pWIDTH = 100.; -var pHEIGHT = 100.; -var IMAGE_WIDTH = 50; -var IMAGE_HEIGHT = 50; -var ARROW_WIDTH = 10, +let pWIDTH = 100.; +let pHEIGHT = 100.; +let IMAGE_WIDTH = 50; +let IMAGE_HEIGHT = 50; +let ARROW_WIDTH = 10, ARROW_HEIGHT = 10; -var TXT_ALIGN = 5, +let TXT_ALIGN = 5, TXT_SIZE = '15px'; -var xMargin = 25, +let xMargin = 25, yMargin = 25; -var MIN_ZOOM_FACTOR = 0.3, +let MIN_ZOOM_FACTOR = 0.3, MAX_ZOOM_FACTOR = 2, INIT_ZOOM_FACTOR = 1; -var ZOOM_RATIO = 0.05; +let ZOOM_RATIO = 0.05; const AUXILIARY_KEYS = ['image', 'Plans', 'level', 'image_text', 'xpos', 'ypos', 'width', 'height', 'total_time', 'parent_node', '_serial', 'arr_id']; @@ -66,11 +66,11 @@ PolyLine.propTypes = { function Multitext({currentXpos, currentYpos, label, maxWidth}) { const theme = useTheme(); let abc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - var xmlns = 'http://www.w3.org/2000/svg'; - var svgElem = document.createElementNS(xmlns, 'svg'); + let xmlns = 'http://www.w3.org/2000/svg'; + let svgElem = document.createElementNS(xmlns, 'svg'); svgElem.setAttributeNS(xmlns, 'height', '100%'); svgElem.setAttributeNS(xmlns, 'width', '100%'); - var text = document.createElementNS(xmlns, 'text'); + let text = document.createElementNS(xmlns, 'text'); text.innerHTML = abc; text.setAttributeNS(xmlns, 'x', 0); text.setAttributeNS(xmlns, 'y', 0); @@ -88,11 +88,11 @@ function Multitext({currentXpos, currentYpos, label, maxWidth}) { * Find letter width in pixels and * index from where the text should be broken */ - var letterWidth = text.getBBox().width / abc.length, + let letterWidth = text.getBBox().width / abc.length, wordBreakIndex = Math.round((maxWidth / letterWidth)) - 1; svgElem.remove(); - var words = label.split(' '), + let words = label.split(' '), widthSoFar = 0, lines = [], currLine = '', @@ -102,7 +102,7 @@ function Multitext({currentXpos, currentYpos, label, maxWidth}) { * the max-width boundary. */ splitTextInMultiLine = function(leading, so_far, line) { - var l = line.length, + let l = line.length, res = []; if (l == 0) @@ -126,8 +126,8 @@ function Multitext({currentXpos, currentYpos, label, maxWidth}) { return res; }; - for (var i = 0; i < words.length; i++) { - var tmpArr = splitTextInMultiLine( + for (let i = 0; i < words.length; i++) { + let tmpArr = splitTextInMultiLine( currLine, widthSoFar, words[i] ); diff --git a/web/pgadmin/static/js/Explain/index.jsx b/web/pgadmin/static/js/Explain/index.jsx index 96efa3cf1..aaa44413a 100644 --- a/web/pgadmin/static/js/Explain/index.jsx +++ b/web/pgadmin/static/js/Explain/index.jsx @@ -27,11 +27,11 @@ const useStyles = makeStyles((theme)=>({ })); // Some predefined constants used to calculate image location and its border -var pWIDTH = 100.; -var pHEIGHT = 100.; -var offsetX = 200, +let pWIDTH = 100.; +let pHEIGHT = 100.; +let offsetX = 200, offsetY = 60; -var xMargin = 25, +let xMargin = 25, yMargin = 25; const DEFAULT_ARROW_SIZE = 2; @@ -154,7 +154,7 @@ function nodeExplainTableData(_planData, _ctx) { } if ('Peak Memory Usage' in _planData) { - var buffer = [ + let buffer = [ '' + gettext('Buckets') + ':', _.escape(_planData['Hash Buckets']), '' + gettext('Batches') + ':', _.escape(_planData['Hash Batches']), '' + gettext('Memory Usage') + ':', _.escape(_planData['Peak Memory Usage']), 'kB', @@ -246,7 +246,7 @@ function parseExplainTableData(plan, ctx) { } function parsePlan(data, ctx) { - var idx = 1, + let idx = 1, lvl = data.level = data.level || [idx], plans = [], nodeType = data['Node Type'], @@ -292,7 +292,7 @@ function parsePlan(data, ctx) { nodeType = nodeType.substring(0, 7); // Get the image information for current node - var mappedImage = (_.isFunction(ImageMapper[nodeType]) && + let mappedImage = (_.isFunction(ImageMapper[nodeType]) && ImageMapper[nodeType].apply(undefined, [data])) || ImageMapper[nodeType] || { 'image': 'ex_unknown.svg', @@ -378,7 +378,7 @@ function parsePlan(data, ctx) { } } - var childHeight = plan.height; + let childHeight = plan.height; if (idx !== 1) { data['height'] = data['height'] + childHeight + offsetY; diff --git a/web/pgadmin/static/js/alertify.pgadmin.defaults.js b/web/pgadmin/static/js/alertify.pgadmin.defaults.js deleted file mode 100644 index 3501a7568..000000000 --- a/web/pgadmin/static/js/alertify.pgadmin.defaults.js +++ /dev/null @@ -1,316 +0,0 @@ -///////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////// - -define([ - 'sources/gettext', 'alertify', 'jquery', 'sources/utils', -], function(gettext, alertify, $, commonUtils) { - alertify.defaults.transition = 'zoom'; - alertify.defaults.theme.ok = 'btn btn-primary fa fa-lg fa-check pg-alertify-button'; - alertify.defaults.theme.cancel = 'btn btn-secondary fa fa-lg fa-times pg-alertify-button'; - alertify.defaults.theme.input = 'form-control'; - alertify.defaults.closable = false; - - var alertifyDialogResized = function(stop) { - var self = this; - - if (stop) { - self.pgResizeRecursion = false; - } - - if (self.pgResizeTimeout) { - return; - } - - self.pgResizeTimeout = setTimeout( - function() { - var $el = $(this.elements.dialog), - w = $el.width(), - elAttr = 'xs'; - - this.pgResizeTimeout = null; - - /** Calculations based on https://getbootstrap.com/docs/4.1/layout/grid/#grid-options **/ - if (w >= 480) { - elAttr = 'sm'; - } - if (w >= 768) { - elAttr = 'md'; - } - if (w >= 992) { - elAttr = 'lg'; - } - if (w >=1200) { - elAttr = 'xl'; - } - - $el.attr('el', elAttr); - }.bind(self), - 100 - ); - }; - - var alertifyDialogStartResizing = function(start) { - var self = this; - - if (start) { - self.pgResizeRecursion = true; - } - - setTimeout( - function() { - alertifyDialogResized.apply(self); - - if (self.pgResizeRecursion) { - alertifyDialogStartResizing.apply(self, [false]); - } - }, 100 - ); - }; - - alertify.pgDialogBuild = function() { - this.set('onshow', function() { - this.elements.dialog.classList.add('pg-el-container'); - $(this.elements.commands.close).attr('title', gettext('Close')); - $(this.elements.commands.maximize).attr('title', gettext('Maximize')); - $(this.elements.commands.close).attr('aria-label', gettext('Close')); - $(this.elements.commands.maximize).attr('aria-label', gettext('Maximize')); - alertifyDialogResized.apply(this, arguments); - let _self = this; - - let cmds = Object.values(this.elements.commands); - $(cmds).on('keydown', 'button', (event) => { - if (event.shiftKey && event.keyCode == 9 && $(this).nextAll('button:not([disabled])').length == 0){ - let container = $(_self.elements.footer); - commonUtils.findAndSetFocus(container.find('button:not([disabled]):last')); - } - }); - }); - this.set('onresize', alertifyDialogStartResizing.bind(this, true)); - this.set('onresized', alertifyDialogResized.bind(this, true)); - this.set('onmaximized', alertifyDialogResized); - this.set('onrestored', alertifyDialogResized); - - /* Set the key to null if it is not defined - * When Browser autofill drop down value is clicked it raises a keyup event - * with undefined keyCode. The undefined keyCode matches the undefined key - * of alertify and triggers the button - */ - for(let btn_val of this.__internal.buttons) { - if(_.isUndefined(btn_val['key'])) { - btn_val['key'] = null; - } - } - let self = this; - - $(this.elements.footer).on('keydown', 'button', function(event) { - if (!event.shiftKey && event.keyCode == 9 && $(this).nextAll('button:not([disabled])').length == 0) { - // set focus back to first editable input element of current active tab once we cycle through all enabled buttons. - commonUtils.findAndSetFocus($(self.elements.dialog)); - return false; - } - }); - }; - - alertify.pgHandleItemError = function(xhr, error, message, args) { - var pgBrowser = window.pgAdmin.Browser; - - if (!xhr || !pgBrowser) { - return; - } - - var contentType = xhr.getResponseHeader('Content-Type'), - jsonResp = contentType && - contentType.indexOf('application/json') == 0 && - JSON.parse(xhr.responseText); - - if ( - jsonResp && ( - xhr.status == 503 ? ( - jsonResp.info == 'CONNECTION_LOST' && - 'server' in args.info && jsonResp.data.sid >= 0 && - jsonResp.data.sid == args.info.server._id - ) : ( - xhr.status == 428 && - jsonResp.errormsg && - jsonResp.errormsg == gettext('Connection to the server has been lost.') - ) - ) - ) { - if ( - args.preHandleConnectionLost && - typeof(args.preHandleConnectionLost) == 'function' - ) { - args.preHandleConnectionLost.apply(this, arguments); - } - - // Check the status of the maintenance server connection. - var server = pgBrowser.Nodes['server'], - ctx = { - resp: jsonResp, - xhr: xhr, - args: args, - }, - reconnectServer = function() { - var ctx_local = this, - onServerConnect = function(_sid, _i, _d) { - // Yay - server is reconnected. - if (this.args.info.server._id == _sid) { - pgBrowser.Events.off( - 'pgadmin:server:connected', onServerConnect - ); - pgBrowser.Events.off( - 'pgadmin:server:connect:cancelled', onConnectCancel - ); - - // Do we need to connect the disconnected server now? - if ( - this.resp.data.database && - this.resp.data.database != _d.db - ) { - // Server is connected now, we will need to inform the - // database to connect it now. - pgBrowser.Events.trigger( - 'pgadmin:database:connection:lost', this.args.item, - this.resp, true - ); - } - } - }.bind(ctx_local), - onConnectCancel = function(_sid, _item, _data) { - // User has cancelled the operation in between. - if (_sid == this.args.info.server.id) { - pgBrowser.Events.off('pgadmin:server:connected', onServerConnect); - pgBrowser.Events.off('pgadmin:server:connect:cancelled', onConnectCancel); - - // Connection to the database will also be cancelled - pgBrowser.Events.trigger( - 'pgadmin:database:connect:cancelled', _sid, - this.resp.data.database || _data.db, _item, _data - ); - } - }.bind(ctx_local); - - pgBrowser.Events.on('pgadmin:server:connected', onServerConnect); - pgBrowser.Events.on('pgadmin:server:connect:cancelled', onConnectCancel); - - // Connection to the server has been lost, we need to inform the - // server first to take the action first. - pgBrowser.Events.trigger( - 'pgadmin:server:connection:lost', this.args.item, this.resp - ); - }.bind(ctx); - - $.ajax({ - url: server.generate_url( - null, 'connect', args.info.server, true, args.info - ), - dataType: 'json', - }) - .done(function(res) { - if (res.success && 'connected' in res.data) { - if (res.data.connected) { - // Server is connected, but - the connection with the - // particular database has been lost. - pgBrowser.Events.trigger( - 'pgadmin:database:connection:lost', args.item, jsonResp - ); - return; - } - } - - // Serever was not connected, we should first try to connect - // the server. - reconnectServer(); - }) - .fail(function() { - reconnectServer(); - }); - return true; - } else if (jsonResp && jsonResp.info == 'CRYPTKEY_MISSING' && xhr.status == 503) { - /* Suppress the error here and handle in Alertify.pgNotifier wherever - * required, as it has callback option - */ - return false; - } - return false; - }; - - // Confirm dialogue: Set title attribute - alertify.confirm().set({ - onshow:function() { - $(this.elements.commands.close).attr('title', gettext('Close')); - $(this.elements.commands.maximize).attr('title', gettext('Maximize')); - $(this.elements.content).addClass('ajs-wrap-text'); - $(this.elements.header).attr('id', 'confirm-dialog-header'); - $(this.elements.body).attr('id', 'confirm-dialog-body'); - $(this.elements.dialog).attr({ - role: 'alertdialog', - 'aria-modal': 'true', - 'aria-labelledby': 'confirm-dialog-header', - 'aria-describedby': 'confirm-dialog-body', - }); - }, - reverseButtons: true, - }); - - alertify.prompt().set({ - reverseButtons: true, - }); - - alertify.alert().set({ - onshow:function() { - $(this.elements.header).attr('id', 'alert-dialog-header'); - $(this.elements.body).attr('id', 'alert-dialog-body'); - $(this.elements.modal).attr({ - role: 'alertdialog', - 'aria-modal': 'true', - 'aria-labelledby': 'alert-dialog-header', - 'aria-describedby': 'alert-dialog-body', - }); - }, - }); - - /* Suppress the enter key events occurring from select2 boxes - * so that the dialog does not close. - * Alertify listens to keyup events on the body element unfortunately - * instead of alertify dialog - */ - $('body').off('keyup').on('keyup', function(ev){ - if(ev.which === 13 || ev.which === 27) { - let suppressForClasses = ['select2-selection', 'select2-search__field']; - let $el = $(ev.target); - for(let class_val of suppressForClasses){ - if($el.hasClass(class_val)){ - ev.preventDefault(); - ev.stopImmediatePropagation(); - ev.stopPropagation(); - break; - } - } - - let el_name = ev.target.name; - if(el_name == 'key'){ - let $parentDiv = $el.closest('.value'), - $nextField = $parentDiv.find('.shift .btn-checkbox'); - - if ($nextField.length == 0) { - $nextField = $el.closest('.value').next().find('input.form-control'); - } - - if ($nextField.length) { - $nextField.focus(); - ev.preventDefault(); - ev.stopImmediatePropagation(); - ev.stopPropagation(); - } - } - } - }); - return alertify; -}); diff --git a/web/pgadmin/static/js/alertify/dialog.js b/web/pgadmin/static/js/alertify/dialog.js deleted file mode 100644 index aa8723193..000000000 --- a/web/pgadmin/static/js/alertify/dialog.js +++ /dev/null @@ -1,121 +0,0 @@ -///////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////// - -import gettext from '../gettext'; -import {DialogFactory} from './dialog_factory'; -import Backform from '../backform.pgadmin'; - -/** - * This class can be extended to create new dialog boxes. - * Examples of this can be found in: - * `web/pgadmin/static/js/backup/backup_dialog.js` - * - * Do not forget to add the new Dialog type to the `DialogFactory` - */ -export class Dialog { - constructor(errorAlertTitle, - dialogContainerSelector, - pgBrowser, $, alertify, DialogModel, - backform = Backform) { - this.errorAlertTitle = errorAlertTitle; - this.alertify = alertify; - this.pgBrowser = pgBrowser; - this.jquery = $; - this.dialogModel = DialogModel; - this.backform = backform; - this.dialogContainerSelector = dialogContainerSelector; - } - - retrieveAncestorOfTypeServer(item) { - let serverInformation = null; - let treeItem = item || this.pgBrowser.tree.selected(); - let treeNode = this.pgBrowser.tree.findNodeByDomElement(treeItem); - - if (treeNode) { - let nodeData; - let databaseNode = treeNode.ancestorNode( - (node) => { - nodeData = node.getData(); - return (nodeData._type === 'database'); - } - ); - let isServerNode = (node) => { - nodeData = node.getData(); - return nodeData._type === 'server'; - }; - - if (databaseNode !== null) { - if (nodeData._label.indexOf('=') >= 0) { - this.alertify.alert( - gettext(this.errorAlertTitle), - gettext( - 'Databases with = symbols in the name cannot be backed up or restored using this utility.' - ) - ); - } else { - if (databaseNode.anyParent(isServerNode)) - serverInformation = nodeData; - } - } else { - if (treeNode.anyFamilyMember(isServerNode)) - serverInformation = nodeData; - } - } - - if (serverInformation === null) { - this.alertify.alert( - gettext(this.errorAlertTitle), - gettext('Please select server or child node from the browser tree.') - ); - } - - return serverInformation; - } - - dialogName() { - return undefined; - } - - createOrGetDialog(dialogTitle, typeOfDialog) { - const dialogName = this.dialogName(typeOfDialog); - - if (!this.alertify[dialogName]) { - const self = this; - this.alertify.dialog(dialogName, function factory() { - return self.dialogFactory(dialogTitle, typeOfDialog); - }); - } - return this.alertify[dialogName]; - } - - dialogFactory(dialogTitle, typeOfDialog) { - const factory = new DialogFactory( - this.pgBrowser, - this.jquery, - this.alertify, - this.dialogModel, - this.backform, - this.dialogContainerSelector); - return factory.create(dialogTitle, typeOfDialog); - } - - canExecuteOnCurrentDatabase(treeItem) { - const treeInfo = this.pgBrowser.tree.getTreeNodeHierarchy(treeItem); - - if (treeInfo.database && treeInfo.database._label.indexOf('=') >= 0) { - this.alertify.alert( - gettext(this.errorAlertTitle), - gettext('Databases with = symbols in the name cannot be backed up or restored using this utility.') - ); - return false; - } - - return true; - } -} diff --git a/web/pgadmin/static/js/alertify/dialog_factory.js b/web/pgadmin/static/js/alertify/dialog_factory.js deleted file mode 100644 index 36eac74c2..000000000 --- a/web/pgadmin/static/js/alertify/dialog_factory.js +++ /dev/null @@ -1,41 +0,0 @@ -///////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////// - -import SearchObjectsDialogWrapper from '../../../tools/search_objects/static/js/search_objects_dialog_wrapper'; - -export class DialogFactory { - constructor(pgBrowser, $, - alertify, DialogModel, - backform, dialogContainerSelector) { - this.pgBrowser = pgBrowser; - this.jquery = $; - this.alertify = alertify; - this.dialogModel = DialogModel; - this.backform = backform; - this.dialogContainerSelector = dialogContainerSelector; - } - - create(dialogTitle, typeOfDialog) { - if (typeOfDialog === 'restore') { - return this.createRestoreDialog(dialogTitle, typeOfDialog); - } else if (typeOfDialog === 'search_objects') { - return this.createSearchObjectsDialog(dialogTitle, typeOfDialog); - } - } - - createSearchObjectsDialog(dialogTitle, typeOfDialog) { - return new SearchObjectsDialogWrapper( - this.dialogContainerSelector, dialogTitle, typeOfDialog, - this.jquery, - this.pgBrowser, - this.alertify, - this.dialogModel, - this.backform); - } -} diff --git a/web/pgadmin/static/js/alertify/dialog_wrapper.js b/web/pgadmin/static/js/alertify/dialog_wrapper.js deleted file mode 100644 index 6567060a0..000000000 --- a/web/pgadmin/static/js/alertify/dialog_wrapper.js +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////// - -import * as commonUtils from '../utils'; -import $ from 'jquery'; - -export class DialogWrapper { - constructor( - dialogContainerSelector, dialogTitle, jquery, pgBrowser, - alertify, dialogModel, backform) { - this.hooks = { - onclose: function () { - if (this.view) { - this.view.remove({ - data: true, - internal: true, - silent: true, - }); - } - }, - }; - this.dialogContainerSelector = dialogContainerSelector; - this.dialogTitle = dialogTitle; - this.jquery = jquery; - this.pgBrowser = pgBrowser; - this.alertify = alertify; - this.dialogModel = dialogModel; - this.backform = backform; - } - - build() { - this.alertify.pgDialogBuild.apply(this); - } - - wasHelpButtonPressed(e) { - return e.button.element.name === 'dialog_help' - || e.button.element.name === 'object_help'; - } - - getSelectedNodeData(selectedTreeNode) { - if (!this.isNodeSelected(selectedTreeNode)) { - return undefined; - } - const treeNodeData = selectedTreeNode.getData(); - if (treeNodeData) { - return treeNodeData; - } - return undefined; - } - - focusOnDialog(alertifyDialog) { - let backform_tab = $(alertifyDialog.elements.body).find('.backform-tab'); - backform_tab.attr('tabindex', -1); - this.pgBrowser.keyboardNavigation.getDialogTabNavigator($(alertifyDialog.elements.dialog)); - let container = backform_tab.find('.tab-content:first > .tab-pane.active:first'); - - if(container.length === 0 && alertifyDialog.elements.content.innerHTML) { - container = $(alertifyDialog.elements.content); - } - commonUtils.findAndSetFocus(container); - } - - isNodeSelected(selectedTreeNode) { - return selectedTreeNode; - } -} diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js index 352ec9a6a..f0ea21ee3 100644 --- a/web/pgadmin/static/js/backform.pgadmin.js +++ b/web/pgadmin/static/js/backform.pgadmin.js @@ -7,13 +7,15 @@ // ////////////////////////////////////////////////////////////// +import { calcFontSize } from './utils'; + define([ 'sources/gettext', 'underscore', 'jquery', - 'backbone', 'backform', 'backgrid', 'codemirror', 'sources/sqleditor_utils', + 'backbone', 'backform', 'backgrid', 'codemirror', 'sources/keyboard_shortcuts', 'sources/window', 'sources/select2/configure_show_on_scroll', 'color-picker', 'pgadmin.backgrid', 'select2', 'bootstrap.toggle', ], function(gettext, _, $, Backbone, Backform, Backgrid, CodeMirror, - SqlEditorUtils, keyboardShortcuts, pgWindow, configure_show_on_scroll, + keyboardShortcuts, pgWindow, configure_show_on_scroll, Pickr) { var pgAdmin = (window.pgAdmin = window.pgAdmin || {}), @@ -1889,7 +1891,7 @@ define([ let sqlEditPreferences = pgAdmin.Browser.get_preferences_for_module('sqleditor'); $(self.sqlCtrl.getWrapperElement()).css( - 'font-size',SqlEditorUtils.calcFontSize(sqlEditPreferences.sql_font_size) + 'font-size', calcFontSize(sqlEditPreferences.sql_font_size) ); self.sqlCtrl.setOption('tabSize', sqlEditPreferences.tab_size); self.sqlCtrl.setOption('lineWrapping', sqlEditPreferences.wrap_code); @@ -2623,7 +2625,7 @@ define([ let sqlEditPreferences = browser.get_preferences_for_module('sqleditor'); $(self.sqlCtrl.getWrapperElement()).css( - 'font-size',SqlEditorUtils.calcFontSize(sqlEditPreferences.sql_font_size) + 'font-size', calcFontSize(sqlEditPreferences.sql_font_size) ); self.sqlCtrl.setOption('indentWithTabs', !sqlEditPreferences.use_spaces); self.sqlCtrl.setOption('indentUnit', sqlEditPreferences.tab_size); diff --git a/web/pgadmin/static/js/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid.pgadmin.js index 0eadfa606..5fba5a041 100644 --- a/web/pgadmin/static/js/backgrid.pgadmin.js +++ b/web/pgadmin/static/js/backgrid.pgadmin.js @@ -10,11 +10,11 @@ import Notify from '../../static/js/helpers/Notifier'; define([ - 'sources/gettext', 'underscore', 'jquery', 'backbone', 'backform', 'backgrid', 'alertify', + 'sources/gettext', 'underscore', 'jquery', 'backbone', 'backform', 'backgrid', 'moment', 'bignumber', 'codemirror', 'sources/utils', 'sources/keyboard_shortcuts', 'sources/select2/configure_show_on_scroll', 'sources/window', 'bootstrap.datetimepicker', 'backgrid.filter', 'bootstrap.toggle', ], function( - gettext, _, $, Backbone, Backform, Backgrid, Alertify, moment, BigNumber, CodeMirror, + gettext, _, $, Backbone, Backform, Backgrid, moment, BigNumber, CodeMirror, commonUtils, keyboardShortcuts, configure_show_on_scroll, pgWindow ) { /* diff --git a/web/pgadmin/static/js/browser/generate_url.js b/web/pgadmin/static/js/browser/generate_url.js index b68e2e816..9603c3bb6 100644 --- a/web/pgadmin/static/js/browser/generate_url.js +++ b/web/pgadmin/static/js/browser/generate_url.js @@ -7,13 +7,13 @@ // ////////////////////////////////////////////////////////////// -import _ from 'underscore'; +import _ from 'lodash'; function generate_url(baseUrl, treeInfo, actionType, nodeType, pickFunction, itemDataID) { let ref = ''; _.each( _.sortBy( - _.pick(treeInfo, pickFunction), + _.pickBy(treeInfo, pickFunction), function (treeInfoItems) { return treeInfoItems.priority; } diff --git a/web/pgadmin/static/js/check_node_visibility.js b/web/pgadmin/static/js/check_node_visibility.js index 682fd50d6..2226504bd 100644 --- a/web/pgadmin/static/js/check_node_visibility.js +++ b/web/pgadmin/static/js/check_node_visibility.js @@ -6,9 +6,10 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////////////////// +import _ from 'lodash'; -define(['jquery', 'underscore'], - function ($, _) { +define([], + function () { return function (pgBrowser, node_type) { if(_.isUndefined(node_type) || _.isNull(node_type)) { diff --git a/web/pgadmin/static/js/components/FormComponents.jsx b/web/pgadmin/static/js/components/FormComponents.jsx index 3265c767e..d5dd84a4c 100644 --- a/web/pgadmin/static/js/components/FormComponents.jsx +++ b/web/pgadmin/static/js/components/FormComponents.jsx @@ -843,7 +843,7 @@ export const InputSelect = forwardRef(({ const theme = useTheme(); - /* React will always take options var as changed parameter. So, + /* React will always take options let as changed parameter. So, We cannot run the below effect with options dependency as it will keep on loading the options. optionsReloadBasis is helpful to avoid repeated options load. If optionsReloadBasis value changes, then options will be loaded again. diff --git a/web/pgadmin/static/js/helpers/Notifier.jsx b/web/pgadmin/static/js/helpers/Notifier.jsx index 0969421ca..1b1305c2f 100644 --- a/web/pgadmin/static/js/helpers/Notifier.jsx +++ b/web/pgadmin/static/js/helpers/Notifier.jsx @@ -118,7 +118,7 @@ AlertContent.propTypes = { }; -var Notifier = { +let Notifier = { success(msg, autoHideDuration = AUTO_HIDE_DURATION) { this._callNotify(msg, MESSAGE_TYPE.SUCCESS, autoHideDuration); }, @@ -151,7 +151,7 @@ var Notifier = { }, pgRespErrorNotify(xhr, error, prefixMsg='') { - var contentType = xhr.getResponseHeader('Content-Type'); + let contentType = xhr.getResponseHeader('Content-Type'); if (xhr.status === 410) { const pgBrowser = window.pgAdmin.Browser; pgBrowser.report_error(gettext('Error: Object not found - %s.', xhr.statusText), xhr.responseJSON.errormsg); @@ -162,7 +162,7 @@ var Notifier = { } else { if(contentType){ if(contentType.indexOf('application/json') >= 0) { - var resp = JSON.parse(xhr.responseText); + let resp = JSON.parse(xhr.responseText); error = _.escape(resp.result) || _.escape(resp.errormsg) || gettext('Unknown error'); } } @@ -181,7 +181,7 @@ var Notifier = { }, pgNotifier(type, xhr, promptmsg, onJSONResult) { - var msg = xhr.responseText, + let msg = xhr.responseText, contentType = xhr.getResponseHeader('Content-Type'); if (xhr.status == 0) { @@ -191,10 +191,10 @@ var Notifier = { if (contentType) { try { if (contentType.indexOf('application/json') == 0) { - var resp = JSON.parse(msg); + let resp = JSON.parse(msg); if(resp.info == 'CRYPTKEY_MISSING') { - var pgBrowser = window.pgAdmin.Browser; + let pgBrowser = window.pgAdmin.Browser; pgBrowser.set_master_password('', ()=> { if(onJSONResult && typeof(onJSONResult) == 'function') { onJSONResult('CRYPTKEY_SET'); diff --git a/web/pgadmin/static/js/modify_animation.js b/web/pgadmin/static/js/modify_animation.js deleted file mode 100644 index 622cef170..000000000 --- a/web/pgadmin/static/js/modify_animation.js +++ /dev/null @@ -1,71 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////////////////// - -import $ from 'jquery'; -import _ from 'underscore'; -import pgWindow from 'sources/window'; - -function getBrowserInstance() { - return pgWindow.pgAdmin.Browser; -} - -function modifyTreeAnimation(pgBrowser, tree) { - let enableTreeAnimation = pgBrowser.get_preference( - 'browser', 'enable_acitree_animation' - ).value; - - if (_.isUndefined(tree)) { - tree = pgBrowser.tree; - } - - if(enableTreeAnimation) { - tree.options({ - animateRoot: true, - unanimated: false, - show: _.extend(tree.options().show, {duration: 75}), - hide: _.extend(tree.options().hide, {duration: 75}), - view: _.extend(tree.options().view, {duration: 75}), - }); - } else { - tree.options({ - animateRoot: false, - unanimated: true, - show: _.extend(tree.options().show, {duration: 0}), - hide: _.extend(tree.options().hide, {duration: 0}), - view: _.extend(tree.options().view, {duration: 0}), - }); - } -} - -function modifyAlertifyAnimation(pgBrowser) { - if(_.isUndefined(pgBrowser) || _.isNull(pgBrowser)) { - pgBrowser = getBrowserInstance(); - } - - let enableTreeAnimation = pgBrowser.get_preference( - 'browser', 'enable_alertify_animation' - ).value; - - if(enableTreeAnimation) { - $(document).find('body').removeClass('alertify-no-animation'); - _.each(document.getElementsByTagName('iframe'), function(frame) { - $(frame.contentDocument).find('body').removeClass('alertify-no-animation'); - }); - } else { - $(document).find('body').addClass('alertify-no-animation'); - _.each(document.getElementsByTagName('iframe'), function(frame) { - $(frame.contentDocument).find('body').addClass('alertify-no-animation'); - }); - } -} - -module.exports = { - modifyTreeAnimation : modifyTreeAnimation, - modifyAlertifyAnimation: modifyAlertifyAnimation, -}; diff --git a/web/pgadmin/static/js/sqleditor_utils.js b/web/pgadmin/static/js/sqleditor_utils.js deleted file mode 100644 index fa63a9ab2..000000000 --- a/web/pgadmin/static/js/sqleditor_utils.js +++ /dev/null @@ -1,22 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////////////////// -// This file contains common utilities functions used in sqleditor modules - -module.exports = { - calcFontSize: function(fontSize) { - if(fontSize) { - fontSize = parseFloat((Math.round(parseFloat(fontSize + 'e+2')) + 'e-2')); - let rounded = Number(fontSize); - if(rounded > 0) { - return rounded + 'em'; - } - } - return '1em'; - }, -}; diff --git a/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js b/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js index 5f55a2308..5181610cd 100644 --- a/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js +++ b/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js @@ -7,7 +7,7 @@ // ////////////////////////////////////////////////////////////// -import _ from 'underscore'; +import _ from 'lodash'; import $ from 'jquery'; import url_for from 'sources/url_for'; import gettext from 'sources/gettext'; diff --git a/web/pgadmin/static/js/tree/preference_nodes.ts b/web/pgadmin/static/js/tree/preference_nodes.ts index 42717dbd4..88e5469af 100644 --- a/web/pgadmin/static/js/tree/preference_nodes.ts +++ b/web/pgadmin/static/js/tree/preference_nodes.ts @@ -9,7 +9,7 @@ import * as BrowserFS from 'browserfs' import pgAdmin from 'sources/pgadmin'; -import _ from 'underscore'; +import _ from 'lodash'; import { FileType } from 'react-aspen' import { findInTree } from './tree'; diff --git a/web/pgadmin/static/js/tree/tree_nodes.ts b/web/pgadmin/static/js/tree/tree_nodes.ts index 6a903385d..4e12f7fc4 100644 --- a/web/pgadmin/static/js/tree/tree_nodes.ts +++ b/web/pgadmin/static/js/tree/tree_nodes.ts @@ -10,7 +10,7 @@ import * as BrowserFS from 'browserfs' import url_for from 'sources/url_for'; import pgAdmin from 'sources/pgadmin'; -import _ from 'underscore'; +import _ from 'lodash'; import { FileType } from 'react-aspen' import { findInTree } from './tree'; diff --git a/web/pgadmin/static/js/utils.js b/web/pgadmin/static/js/utils.js index 8eec34905..3dca104d5 100644 --- a/web/pgadmin/static/js/utils.js +++ b/web/pgadmin/static/js/utils.js @@ -523,3 +523,138 @@ export function compareSizeVals(val1, val2) { if(val1 > val2) return 1; return (val1 < val2 ? -1 : 0); } + +export function calcFontSize(fontSize) { + if(fontSize) { + fontSize = parseFloat((Math.round(parseFloat(fontSize + 'e+2')) + 'e-2')); + let rounded = Number(fontSize); + if(rounded > 0) { + return rounded + 'em'; + } + } + return '1em'; +} + +export function pgHandleItemError(xhr, args) { + var pgBrowser = window.pgAdmin.Browser; + + if (!xhr || !pgBrowser) { + return; + } + + var contentType = xhr.getResponseHeader('Content-Type'), + jsonResp = contentType && + contentType.indexOf('application/json') == 0 && + JSON.parse(xhr.responseText); + + if ( + jsonResp && ( + xhr.status == 503 ? ( + jsonResp.info == 'CONNECTION_LOST' && + 'server' in args.info && jsonResp.data.sid >= 0 && + jsonResp.data.sid == args.info.server._id + ) : ( + xhr.status == 428 && + jsonResp.errormsg && + jsonResp.errormsg == gettext('Connection to the server has been lost.') + ) + ) + ) { + if ( + args.preHandleConnectionLost && + typeof(args.preHandleConnectionLost) == 'function' + ) { + args.preHandleConnectionLost.apply(this, arguments); + } + + // Check the status of the maintenance server connection. + var server = pgBrowser.Nodes['server'], + ctx = { + resp: jsonResp, + xhr: xhr, + args: args, + }, + reconnectServer = function() { + var ctx_local = this, + onServerConnect = function(_sid, _i, _d) { + // Yay - server is reconnected. + if (this.args.info.server._id == _sid) { + pgBrowser.Events.off( + 'pgadmin:server:connected', onServerConnect + ); + pgBrowser.Events.off( + 'pgadmin:server:connect:cancelled', onConnectCancel + ); + + // Do we need to connect the disconnected server now? + if ( + this.resp.data.database && + this.resp.data.database != _d.db + ) { + // Server is connected now, we will need to inform the + // database to connect it now. + pgBrowser.Events.trigger( + 'pgadmin:database:connection:lost', this.args.item, + this.resp, true + ); + } + } + }.bind(ctx_local), + onConnectCancel = function(_sid, _item, _data) { + // User has cancelled the operation in between. + if (_sid == this.args.info.server.id) { + pgBrowser.Events.off('pgadmin:server:connected', onServerConnect); + pgBrowser.Events.off('pgadmin:server:connect:cancelled', onConnectCancel); + + // Connection to the database will also be cancelled + pgBrowser.Events.trigger( + 'pgadmin:database:connect:cancelled', _sid, + this.resp.data.database || _data.db, _item, _data + ); + } + }.bind(ctx_local); + + pgBrowser.Events.on('pgadmin:server:connected', onServerConnect); + pgBrowser.Events.on('pgadmin:server:connect:cancelled', onConnectCancel); + + // Connection to the server has been lost, we need to inform the + // server first to take the action first. + pgBrowser.Events.trigger( + 'pgadmin:server:connection:lost', this.args.item, this.resp + ); + }.bind(ctx); + + $.ajax({ + url: server.generate_url( + null, 'connect', args.info.server, true, args.info + ), + dataType: 'json', + }) + .done(function(res) { + if (res.success && 'connected' in res.data) { + if (res.data.connected) { + // Server is connected, but - the connection with the + // particular database has been lost. + pgBrowser.Events.trigger( + 'pgadmin:database:connection:lost', args.item, jsonResp + ); + return; + } + } + + // Server was not connected, we should first try to connect + // the server. + reconnectServer(); + }) + .fail(function() { + reconnectServer(); + }); + return true; + } else if (jsonResp && jsonResp.info == 'CRYPTKEY_MISSING' && xhr.status == 503) { + /* Suppress the error here and handle in pgNotifier wherever + * required, as it has callback option + */ + return false; + } + return false; +} diff --git a/web/pgadmin/static/scss/_alert.scss b/web/pgadmin/static/scss/_alert.scss index 537675c7f..178171d1f 100644 --- a/web/pgadmin/static/scss/_alert.scss +++ b/web/pgadmin/static/scss/_alert.scss @@ -87,13 +87,6 @@ } } } -.alertify_tools_dialog_properties .pg-prop-status-bar { - position: absolute; - right: 0; - left: 0; - bottom: 0; - z-index: 1; -} .error-in-grid { border-radius: $border-radius !important; diff --git a/web/pgadmin/static/scss/_alertify.overrides.scss b/web/pgadmin/static/scss/_alertify.overrides.scss deleted file mode 100644 index b2392adf2..000000000 --- a/web/pgadmin/static/scss/_alertify.overrides.scss +++ /dev/null @@ -1,303 +0,0 @@ -/* Overrides alertify js headers */ -.alertify { - z-index: 3000; - position: fixed; - - .ajs-header { - padding: 6px 10px !important; - //margin is calculated with -$alertify-borderremove-margin, adjust the header - min-height: $title-height + $alertify-borderremove-margin !important; - max-height: $title-height + $alertify-borderremove-margin !important; - background-color: $alert-header-bg; - font-size: $font-size-base; - font-weight: bold; - color: $alert-header-fg; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - border-radius: 0rem; - border-top-left-radius: $panel-border-radius; - border-top-right-radius: $panel-border-radius; - border-bottom: none; - margin: -24px - $alertify-borderremove-margin; //-24px is default by alertify - margin-bottom: 0px; - &:hover { - background-color: $alert-header-bg; - } - } - - .ajs-body { - background-color: $alert-dialog-body-bg !important; - color: $color-fg !important; - } - - &.ajs-resizable, - &.ajs-maximized { - & .ajs-body { - & .ajs-content { - top: $title-height; - } - } - - & .ajs-header{ - //default is 0, to override the borders - margin: -$alertify-borderremove-margin; - } - - & .ajs-handle { - z-index: 1020; - } - } - - &.ajs-frameless { - & .ajs-body { - & .ajs-content { - top: 0 !important; - bottom: 0px !important; - padding: 0px; - } - } - } - &:not(.ajs-frameless) .ajs-body .ajs-content { - top: $title-height !important; - } - .ajs-body .ajs-content { - bottom: $footer-height-calc !important; - } - .ajs-wrap-text { - word-break: normal; - word-wrap: break-word; - } - /* Removes padding from alertify footer */ - .ajs-footer { - padding: 0; - min-height: $footer-min-height; - border-top: $panel-border; - background-color: $color-bg !important; - color: $color-fg !important; - & .ajs-buttons { - border: none; - border-radius: 0rem; - border-bottom-left-radius: $panel-border-radius; - border-bottom-right-radius: $panel-border-radius; - padding: $footer-padding; - - &.ajs-auxiliary .ajs-button, - &.ajs-primary .ajs-button { - margin: 0px 2px; - } - - & .ajs-button { - font-family: $font-family-primary; - font-size: $font-size-base; - -webkit-font-smoothing: auto; - min-width: 0; - min-height: 0; - } - } - } - - .ajs-commands { - margin: -22px 4px 0 0; - } - - /* Replaces alertify button icons */ - .ajs-commands button { - margin-left: 5px; - } - - /* Prevent text blur in the runtime */ - .ajs-dimmer, - .ajs-modal { - -webkit-transform: none; - } - - .ajs-commands button.ajs-maximize { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZklEQVQ4jcWTuw2AMAxEn5jBs7B/e0gpmAiKEGRS5QDBSS7v+Q8fSsCWQgDTA+DsGgJYuypumTNkWCWZg9q/HIAOSDim/xTUcu0exXXaxQG0teRVWQPLx2Gbe8B55yNqv7C4GV/TDq//J11odoZgAAAAAElFTkSuQmCC); - background-size: 14px; - } - - .ajs-commands button.ajs-close { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAdklEQVQ4jd2SwQnAIAxF36GH0pOTFHEgF3IkR5LO0F4SCGJVEHroAy/f/E+igV+yAa6hO7nrcgAZuIBg9CBalppXEnDL0RA1q556ASdQqhBrLlLTxVch1uxHZiU2AuKs2Vdt23GGHSy/wfIvzOzBPhpjaRO/5wG/szevJ+ZXzAAAAABJRU5ErkJggg==); - } - - /* Restyling alertify dialogue panel boundaries */ - .ajs-dialog { - border: $panel-border; - border-radius: $panel-border-radius; - box-shadow: $dialog-box-shadow; - background-color: $alert-dialog-body-bg !important; - color: $color-fg !important; - } - .ajs-content { - padding-left: 0 !important; - padding-right: 0 !important; - } -} - -.alertify.ajs-maximized .ajs-commands, -.alertify.ajs-resizable .ajs-commands { - margin: 2px 0px 0 0; -} - -.ajs-commands { - position: absolute; - width: auto !important; -} - -.ajs-pin, .ajs-maximize, .ajs-close { - width: 20px; - height: 20px; - border: $input-btn-border-width solid $btn-secondary-border !important; - background-color: $alert-action-bg !important; - font-size: 12px; - border-radius: $btn-border-radius; - position: relative; - cursor: pointer; - text-align: center; - overflow: hidden; - z-index: 1; -} - -.ajs-pin:hover, .ajs-maximize:hover, .ajs-close:hover { - background-color: $alert-action-hover-bg !important; -} - -.alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAkElEQVQ4jWNkwAR8DAwMBxkYGMTQxF8xMDDYMzAwfMKiBwMYMDAw3GRgYPgPxTehYiSBKCQDonApYiLV1KFjABsDA4MpEt8UKkYUkGBgYDjPgAhAGD4PlSPooqNYNMPwUXRXM+IwBAbaoXQlktg/ZMUsWAxAVvASmyZCBiCDNwTkCRrwasANIOgFQoADinECAAtnIEoWoODLAAAAAElFTkSuQmCC); - background-size: 13px; -} - -.alertify.ajs-maximized .ajs-commands button.ajs-maximize { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA8klEQVQ4jZ3QMUpDQRCH8V+ewULQE4iERTyCrQiDCpbaCKKljbV4A89gqVgGrCMDWlpaWwVPoFYiIjYv8hBJXjLN7s7u9+3wZ4aKiOWI2IJOi8dHuM7MXxj3WMHe3CRBKeUGvVJKllJG8CrmoNty6jMsYKeGoY/jtgI4bez7OMjMr2oKwaieRzDMIljDRUSgXQZPeG2cv7GOffQ7ETGPcyw2HozWQWY+jLN3M/MzIu4wwNKf+zeMFVSQmY/YbfzeuiqIiAonZgi1quErHNa9F7xPM8FlAx5iA9ttJRVu8VHDm5k5rDNpLRERWxHR+6c/MZMfLIJDwzY66IkAAAAASUVORK5CYII=); -} - -/* Restyling alertify query results messages */ -.alertify-notifier.ajs-right { - min-width: 250px; - width: auto; - width: initial; - max-width: 800px; -} - -.alertify-notifier.ajs-right .ajs-message.ajs-visible { - padding: 0; - right: 0; - width: auto; - width: initial; -} - -.alertify-notifier .ajs-message { - border-radius: $card-border-radius; - width: 100%; -} - -.pg-alertify-button:before { - font-size: $font-size-base; - @at-root .ajs-button#{&} { - font-family: $font-family-icon; - margin-right: 5px; - font-weight: 900; - } -} - -.pg-alertify-icon-button { - &:before { - line-height: 1.2; - font-family: $font-family-icon; - font-weight: 900; - } -} - -.ajs-text-smoothing { - text-shadow: none; - -webkit-font-smoothing: antialiased; -} - -.ajs-message.ajs-error.ajs-visible { - background: $alert-danger-bg; - border: $border-width solid $alert-danger-color; - color: $alert-danger-color; - @extend .ajs-text-smoothing; -} - -.ajs-message.ajs-success.ajs-visible { - background: $alert-success-bg; - border: $border-width solid $alert-success-color; - color: $alert-success-color; - @extend .ajs-text-smoothing; -} - -.ajs-message.ajs-warning.ajs-visible { - background: $alert-warning-bg; - border: $border-width solid $alert-warning-color; - color: $alert-warning-color; - @extend .ajs-text-smoothing; -} - -.ajs-message.ajs-visible { - background: $alert-primary-bg; - border: $border-width solid $alert-primary-color; - color: $alert-primary-color; - @extend .ajs-text-smoothing; -} - -.ajs-message > .media > .media-body.media-middle { - display: flex; -} - -.alertify .ajs-dimmer { - background-color: $loading-bg; -} - -/* It sometimes is applied to dialog and blocks the dialog from editing */ -.alertify .ajs-dialog.ajs-capture:before { - display: none; -} - -.alertify-no-animation { - .alertify .ajs-dimmer, - .alertify .ajs-modal, - .alertify-notifier, - .alertify-notifier .ajs-message.ajs-visible, - .alertify-notifier .ajs-message, - .alertify-notifier.ajs-center .ajs-message.ajs-visible, - .alertify-notifier.ajs-center .ajs-message - { - -moz-transition: none; - -webkit-transition: none; - -o-transition: none; - transition: none; - -webkit-transform: none; - transform: none; - } - - .alertify.ajs-zoom.ajs-in:not(.ajs-hidden) .ajs-dialog { - -webkit-animation-name: ajs-noanimate; - animation-name: ajs-noanimate; - } - .alertify.ajs-zoom.ajs-out.ajs-hidden .ajs-dialog { - -webkit-animation-name: ajs-noanimate; - animation-name: ajs-noanimate; - } - - @-webkit-keyframes ajs-noanimate { - -webkit-transform: none; - transform: none; - } - @keyframes ajs-noanimate { - -webkit-transform: none; - transform: none; - } -} - -.alert-text-body { - color: $alert-color-fg; -} - -.ajs-commands, .ajs-close { - button { - @extend .btn-secondary; - outline: none !important; - } -} diff --git a/web/pgadmin/static/scss/_pgadmin.style.scss b/web/pgadmin/static/scss/_pgadmin.style.scss index f2fe85be7..14816ad21 100644 --- a/web/pgadmin/static/scss/_pgadmin.style.scss +++ b/web/pgadmin/static/scss/_pgadmin.style.scss @@ -130,15 +130,6 @@ .opacity-5 { opacity: 0.5; } -.alertify .ajs-header, -.alertify .ajs-body { - font-family: $font-family-primary; -} - -.alertify .ajs-body { - min-height: $footer-height-calc*1.5; -} - .pg-navbar { font-size: $navbar-font-size; background-color: $navbar-bg; diff --git a/web/pgadmin/static/scss/pgadmin.scss b/web/pgadmin/static/scss/pgadmin.scss index 2abb70f11..e98c58344 100644 --- a/web/pgadmin/static/scss/pgadmin.scss +++ b/web/pgadmin/static/scss/pgadmin.scss @@ -25,7 +25,6 @@ $theme-colors: ( @import 'select2.overrides'; @import 'codemirror.overrides'; @import 'alert'; -@import 'alertify.overrides'; @import 'backform.overrides'; @import 'pgadmin.grid'; @import 'pgadmin.style'; diff --git a/web/pgadmin/static/scss/resources/_default.variables.scss b/web/pgadmin/static/scss/resources/_default.variables.scss index dec233aac..a44e0fbdc 100644 --- a/web/pgadmin/static/scss/resources/_default.variables.scss +++ b/web/pgadmin/static/scss/resources/_default.variables.scss @@ -274,7 +274,6 @@ $alert-header-bg: $color-primary !default; $alert-header-fg: $white !default; $alert-action-bg: $color-secondary !default; $alert-action-hover-bg: $color-gray-light !default; -$alertify-borderremove-margin: $panel-border-width; $alert-color-fg: $color-fg !default; $alert-dialog-body-bg: $color-bg !default; diff --git a/web/pgadmin/tools/backup/static/js/backup.js b/web/pgadmin/tools/backup/static/js/backup.js index ca2642fbe..91b2f06a4 100644 --- a/web/pgadmin/tools/backup/static/js/backup.js +++ b/web/pgadmin/tools/backup/static/js/backup.js @@ -16,11 +16,11 @@ import {retrieveAncestorOfTypeServer} from 'sources/tree/tree_utils'; // Backup dialog define([ - 'sources/gettext', 'sources/url_for', 'underscore', 'pgadmin.browser', + 'sources/gettext', 'sources/url_for', 'pgadmin.browser', 'tools/backup/static/js/menu_utils', 'sources/nodes/supported_database_node', ], function( - gettext, url_for, _, pgBrowser, menuUtils, supportedNodes + gettext, url_for, pgBrowser, menuUtils, supportedNodes ) { // if module is already initialized, refer to that. @@ -307,10 +307,6 @@ define([ if (nodeData._type === 'table' || nodeData._type === 'partition') { extraData['tables'] = [[treeInfo.schema._label, nodeData._label]]; } - - /*(if (_.isEmpty(this.view.model.get('ratio'))) { - this.view.model.unset('ratio'); - }*/ } else if(typeOfDialog === 'server') { extraData['type'] = 'server'; } else if(typeOfDialog === 'globals') { diff --git a/web/pgadmin/tools/debugger/static/js/DebuggerModule.js b/web/pgadmin/tools/debugger/static/js/DebuggerModule.js index 68ef75bfa..332474e9c 100644 --- a/web/pgadmin/tools/debugger/static/js/DebuggerModule.js +++ b/web/pgadmin/tools/debugger/static/js/DebuggerModule.js @@ -8,7 +8,7 @@ ////////////////////////////////////////////////////////////// import $ from 'jquery'; - +import _ from 'lodash'; import React from 'react'; import ReactDOM from 'react-dom'; @@ -282,7 +282,7 @@ export default class DebuggerModule { _.each( _.sortBy( _.values( - _.pick(treeInfo, + _.pickBy(treeInfo, function (v, k) { return (k != 'server_group'); }) @@ -343,7 +343,7 @@ export default class DebuggerModule { } return db_label; } - + getTreeNodeData(item) { let t = this.pgBrowser.tree, i = item || t.selected(), diff --git a/web/pgadmin/tools/debugger/static/js/components/DebuggerArgumentComponent.jsx b/web/pgadmin/tools/debugger/static/js/components/DebuggerArgumentComponent.jsx index 16daa8b7e..fbfaf6e9f 100644 --- a/web/pgadmin/tools/debugger/static/js/components/DebuggerArgumentComponent.jsx +++ b/web/pgadmin/tools/debugger/static/js/components/DebuggerArgumentComponent.jsx @@ -81,14 +81,14 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, const wcDocker = window.wcDocker; function getURL() { - var _Url = null; + let _Url = null; if (restartDebug == 0) { if (!pgData) return; - var treeInfo = pgTreeInfo; + let treeInfo = pgTreeInfo; if (pgData._type == 'function') { // Get the existing function parameters available from sqlite database @@ -156,7 +156,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, function checkModesAndTypes() { // Check modes and type in the arguments. if (debuggerInfo['proargmodes'] != null) { - var argmodes = debuggerInfo['proargmodes'].split(','); + let argmodes = debuggerInfo['proargmodes'].split(','); argmodes.forEach((NULL, indx) => { if (argmodes[indx] == 'i' || argmodes[indx] == 'b' || (isEdbProc && argmodes[indx] == 'o')) { @@ -164,7 +164,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, } }); } else { - var argtypes = debuggerInfo['proargtypenames'].split(','); + let argtypes = debuggerInfo['proargtypenames'].split(','); argtypes.forEach((NULL, indx) => { InputArgIds.current.push(indx); }); @@ -224,7 +224,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, } function getArgsList(argType, argMode, defValList, argName, useDefValue) { - var myObj = []; + let myObj = []; if (argType.length != 0) { for (let i = 0; i < argType.length; i++) { if (debuggerInfo['proargmodes'] != null) { @@ -379,15 +379,15 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, }) .then(function (res) { funcArgsData = setArgs(res); - var argName; + let argName; - var defValList = []; - var myObj = []; - var funcObj = []; + let defValList = []; + let myObj = []; + let funcObj = []; - var [argType, argMode, argCnt, defaultArgs] = checkModesAndTypes(); + let [argType, argMode, argCnt, defaultArgs] = checkModesAndTypes(); - var useDefValue; + let useDefValue; if (debuggerInfo['proargnames'] != null) { argName = debuggerInfo['proargnames'].split(','); @@ -405,7 +405,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, else { /* Generate the name parameter if function do not have arguments name like dbgparam1, dbgparam2 etc. */ - var myargname = generateArgsNames(argType); + let myargname = generateArgsNames(argType); // If there is no default arguments if (!debuggerInfo['pronargdefaults']) { @@ -547,7 +547,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, } } function getFunctionID(d, treeInfo) { - var functionId; + let functionId; if (d._type == 'function') { functionId = treeInfo.function._id; } else if (d._type == 'procedure') { @@ -562,7 +562,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, function setSqliteFuncArgs(d, treeInfo, arg, intCount, sqliteFuncArgsList) { if (restartDebug == 0) { - var functionId = getFunctionID(d, treeInfo); + let functionId = getFunctionID(d, treeInfo); // Below will format the data to be stored in sqlite database sqliteFuncArgsList.push({ 'server_id': treeInfo.server._id, @@ -596,7 +596,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, } function checkTypeAndGetUrl(d, treeInfo) { - var baseUrl; + let baseUrl; if (d && d._type == 'function') { baseUrl = url_for('debugger.initialize_target_for_function', { 'debug_type': 'direct', @@ -639,7 +639,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, } function getSetArgsUrl(d, treeInfo) { - var baseUrl; + let baseUrl; if (d._type == 'function') { baseUrl = url_for('debugger.set_arguments', { 'sid': treeInfo.server._id, @@ -680,12 +680,12 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, try { /* Initialize the target once the debug button is clicked and create asynchronous connection and unique transaction ID If the debugging is started again then treeInfo is already stored. */ - var treeInfo = pgTreeInfo; + let treeInfo = pgTreeInfo; if (!pgData) return; - var argsValueList = []; - var sqliteFuncArgsList = []; - var intCount = 0; + let argsValueList = []; + let sqliteFuncArgsList = []; + let intCount = 0; let argsList = []; let argSet = []; @@ -698,7 +698,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, intCount = intCount + 1; }); - var baseUrl; + let baseUrl; /* If debugging is not started again then we should initialize the target otherwise not */ if (restartDebug == 0) { @@ -711,14 +711,14 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, }) .then(function (res_post) { - var url = url_for( + let url = url_for( 'debugger.direct', { 'trans_id': res_post.data.data.debuggerTransId, } ); - var browserPreferences = pgAdmin.Browser.get_preferences_for_module('browser'); - var open_new_tab = browserPreferences.new_browser_tab_open; + let browserPreferences = pgAdmin.Browser.get_preferences_for_module('browser'); + let open_new_tab = browserPreferences.new_browser_tab_open; if (open_new_tab && open_new_tab.includes('debugger')) { window.open(url, '_blank'); // Send the signal to runtime, so that proper zoom level will be set. @@ -733,18 +733,18 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, }); // Create the debugger panel as per the data received from user input dialog. - var propertiesPanel = pgAdmin.Browser.docker.findPanels('properties'); - var panel = pgAdmin.Browser.docker.addPanel( + let propertiesPanel = pgAdmin.Browser.docker.findPanels('properties'); + let panel = pgAdmin.Browser.docker.addPanel( 'frm_debugger', wcDocker.DOCK.STACKED, propertiesPanel[0] ); - var browser_pref = pgAdmin.Browser.get_preferences_for_module('browser'); - var label = getAppropriateLabel(treeInfo); + let browser_pref = pgAdmin.Browser.get_preferences_for_module('browser'); + let label = getAppropriateLabel(treeInfo); setDebuggerTitle(panel, browser_pref, label, treeInfo.schema.label, treeInfo.database.label, null, pgAdmin.Browser); panel.focus(); // Panel Closed event panel.on(wcDocker.EVENT.CLOSED, function () { - var closeUrl = url_for('debugger.close', { + let closeUrl = url_for('debugger.close', { 'trans_id': res_post.data.data.debuggerTransId, }); api({ @@ -761,7 +761,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, }); } - var _url = getSetArgsUrl(pgData, treeInfo); + let _url = getSetArgsUrl(pgData, treeInfo); api({ url: _url, @@ -814,7 +814,7 @@ export default function DebuggerArgumentComponent({ debuggerInfo, restartDebug, }); setLoaderText(''); // Set the new input arguments given by the user during debugging - var _Url = url_for('debugger.set_arguments', { + let _Url = url_for('debugger.set_arguments', { 'sid': debuggerInfo.server_id, 'did': debuggerInfo.database_id, 'scid': debuggerInfo.schema_id, diff --git a/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx b/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx index 826609ecc..6173a9a37 100644 --- a/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx +++ b/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx @@ -85,10 +85,10 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev // Function to get the breakpoint information from the server const getBreakpointInformation = (transId, callBackFunc) => { - var result = ''; + let result = ''; // Make ajax call to listen the database message - var baseUrl = url_for('debugger.execute_query', { + let baseUrl = url_for('debugger.execute_query', { 'trans_id': transId, 'query_type': 'get_breakpoints', }); @@ -112,16 +112,16 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }; const clearAllBreakpoint = (transId) => { - var clearBreakpoint = (br_list) => { + let clearBreakpoint = (br_list) => { // If there is no break point to clear then we should return from here. if ((br_list.length == 1) && (br_list[0].linenumber == -1)) return; disableToolbarButtons(); - var breakpoint_list = getBreakpointList(br_list); + let breakpoint_list = getBreakpointList(br_list); // Make ajax call to listen the database message - var baseUrl = url_for('debugger.clear_all_breakpoint', { + let baseUrl = url_for('debugger.clear_all_breakpoint', { 'trans_id': transId, }); @@ -146,7 +146,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const raiseJSONError = (xhr) => { try { - var err = xhr.response.data; + let err = xhr.response.data; if (err.success == 0) { Notify.alert(gettext('Debugger Error'), err.errormsg, () => { if (panel) { @@ -187,7 +187,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const messages = (transId) => { // Make ajax call to listen the database message - var baseUrl = url_for('debugger.messages', { + let baseUrl = url_for('debugger.messages', { 'trans_id': transId, }); @@ -221,7 +221,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const startExecution = (transId, port_num) => { // Make ajax call to listen the database message - var baseUrl = url_for( + let baseUrl = url_for( 'debugger.start_execution', { 'trans_id': transId, 'port_num': port_num, @@ -251,7 +251,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const executeQuery = (transId) => { // Make ajax call to listen the database message - var baseUrl = url_for( + let baseUrl = url_for( 'debugger.execute_query', { 'trans_id': transId, 'query_type': 'wait_for_breakpoint', @@ -318,7 +318,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const selectFrame = (frameId) => { // Make ajax call to listen the database message - var baseUrl = url_for('debugger.select_frame', { + let baseUrl = url_for('debugger.select_frame', { 'trans_id': params.transId, 'frame_id': frameId, }); @@ -342,7 +342,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }; useEffect(() => { - var baseUrl = ''; + let baseUrl = ''; if (params.transId != undefined && !params.directDebugger.debug_type) { // Make ajax call to execute the and start the target for execution baseUrl = url_for('debugger.start_listener', { @@ -382,7 +382,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const setUnsetBreakpoint = (res, breakpoint_list) => { if (res.data.data.status) { for (let brk_val of breakpoint_list) { - var info = editor.current.lineInfo((brk_val - 1)); + let info = editor.current.lineInfo((brk_val - 1)); if (info) { if (info.gutterMarkers != undefined) { @@ -394,16 +394,16 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }; const triggerClearBreakpoint = () => { - var clearBreakpoint = (br_list) => { + let clearBreakpoint = (br_list) => { // If there is no break point to clear then we should return from here. if ((br_list.length == 1) && (br_list[0].linenumber == -1)) return; disableToolbarButtons(); - var breakpoint_list = getBreakpointList(br_list); + let breakpoint_list = getBreakpointList(br_list); // Make ajax call to listen the database message - var _baseUrl = url_for('debugger.clear_all_breakpoint', { + let _baseUrl = url_for('debugger.clear_all_breakpoint', { 'trans_id': params.transId, }); @@ -421,7 +421,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev .catch(raiseClearBrekpointError); }; // Make ajax call to listen the database message - var baseUrl = url_for('debugger.execute_query', { + let baseUrl = url_for('debugger.execute_query', { 'trans_id': params.transId, 'query_type': 'get_breakpoints', }); @@ -442,7 +442,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }; const debuggerMark = () => { - var marker = document.createElement('div'); + let marker = document.createElement('div'); marker.style.color = '#822'; marker.innerHTML = '●'; return marker; @@ -450,8 +450,8 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const triggerToggleBreakpoint = () => { disableToolbarButtons(); - var info = editor.current.lineInfo(editor.current.activeLineNo); - var baseUrl = ''; + let info = editor.current.lineInfo(editor.current.activeLineNo); + let baseUrl = ''; // If gutterMarker is undefined that means there is no marker defined previously // So we need to set the breakpoint command here... @@ -476,7 +476,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev .then(function (res) { if (res.data.data.status) { // Call function to create and update local variables .... - var info_local = editor.current.lineInfo(editor.current.activeLineNo); + let info_local = editor.current.lineInfo(editor.current.activeLineNo); if (info_local.gutterMarkers != undefined) { editor.current.setGutterMarker(editor.current.activeLineNo, 'breakpoints', null); @@ -503,7 +503,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const stopDebugging = () => { disableToolbarButtons(); // Make ajax call to listen the database message - var baseUrl = url_for( + let baseUrl = url_for( 'debugger.execute_query', { 'trans_id': params.transId, 'query_type': 'abort_target', @@ -526,7 +526,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev // We will give same behaviour as pgAdmin3 and disable all buttons disableToolbarButtons(); - // Set the Alertify message to inform the user that execution + // Set the message to inform the user that execution // is completed. Notify.success(res.data.info, 3000); } else if (res.data.data.status === 'NotConnected') { @@ -545,7 +545,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }; const restart = (transId) => { - var baseUrl = url_for('debugger.restart', { 'trans_id': transId }); + let baseUrl = url_for('debugger.restart', { 'trans_id': transId }); disableToolbarButtons(); api({ @@ -553,7 +553,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }) .then(function (res) { // Restart the same function debugging with previous arguments - var restart_dbg = res.data.data.restart_debug ? 1 : 0; + let restart_dbg = res.data.data.restart_debug ? 1 : 0; // Start pooling again params.directDebugger.polling_timeout_idle = false; @@ -654,7 +654,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev params.directDebugger.direct_execution_completed = true; params.directDebugger.polling_timeout_idle = true; - //Set the alertify message to inform the user that execution is completed. + //Set the message to inform the user that execution is completed. Notify.success(res.data.info, 3000); // Update the message tab of the debugger @@ -683,7 +683,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev } // Make ajax call to listen the database message - var baseUrl = url_for('debugger.poll_end_execution_result', { + let baseUrl = url_for('debugger.poll_end_execution_result', { 'trans_id': transId, }), poll_end_timeout; @@ -721,7 +721,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev params.directDebugger.direct_execution_completed = true; params.directDebugger.polling_timeout_idle = true; - //Set the alertify message to inform the user that execution is completed. + //Set the message to inform the user that execution is completed. Notify.success(res.data.info, 3000); // Update the message tab of the debugger @@ -775,7 +775,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev restart(params.transId); } else { // Make ajax call to listen the database message - var baseUrl = url_for('debugger.execute_query', { + let baseUrl = url_for('debugger.execute_query', { 'trans_id': params.transId, 'query_type': 'continue', }); @@ -806,7 +806,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev disableToolbarButtons(); // Make ajax call to listen the database message - var baseUrl = url_for('debugger.execute_query', { + let baseUrl = url_for('debugger.execute_query', { 'trans_id': params.transId, 'query_type': 'step_over', }); @@ -834,7 +834,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev }; const getBreakpointList = (br_list) => { - var breakpoint_list = new Array(); + let breakpoint_list = new Array(); for (let val of br_list) { if (val.linenumber != -1) { breakpoint_list.push(val.linenumber); @@ -847,16 +847,16 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev // Function to get the latest breakpoint information and update the // gutters of codemirror const updateBreakpoint = (transId, updateLocalVar = false) => { - var callBackFunc = (br_list) => { + let callBackFunc = (br_list) => { // If there is no break point to clear then we should return from here. if ((br_list.length == 1) && (br_list[0].linenumber == -1)) return; - var breakpoint_list = getBreakpointList(br_list); + let breakpoint_list = getBreakpointList(br_list); for (let brk_val of breakpoint_list) { - var info = editor.current.lineInfo((brk_val - 1)); + let info = editor.current.lineInfo((brk_val - 1)); if (info.gutterMarkers != undefined) { editor.current.setGutterMarker((brk_val - 1), 'breakpoints', null); @@ -875,7 +875,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev // Get the local variable information of the functions and update the grid const getLocalVariables = (transId) => { // Make ajax call to listen the database message - var baseUrl = url_for( + let baseUrl = url_for( 'debugger.execute_query', { 'trans_id': transId, 'query_type': 'get_variables', @@ -922,7 +922,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const getStackInformation = (transId) => { // Make ajax call to listen the database message - var baseUrl = url_for( + let baseUrl = url_for( 'debugger.execute_query', { 'trans_id': transId, 'query_type': 'get_stack_info', @@ -1010,7 +1010,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev } // Make ajax call to listen the database message - var baseUrl = url_for('debugger.poll_result', { + let baseUrl = url_for('debugger.poll_result', { 'trans_id': transId, }), poll_timeout; @@ -1067,7 +1067,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const stepInto = () => { disableToolbarButtons(); // Make ajax call to listen the database message - var baseUrl = url_for('debugger.execute_query', { + let baseUrl = url_for('debugger.execute_query', { 'trans_id': params.transId, 'query_type': 'step_into', }); @@ -1096,7 +1096,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev const onChangesLocalVarParameters = (data) => { // Make api call to listen the database message - var baseUrl = url_for('debugger.deposit_value', { + let baseUrl = url_for('debugger.deposit_value', { 'trans_id': params.transId, }); api({ diff --git a/web/pgadmin/tools/debugger/static/js/components/DebuggerEditor.jsx b/web/pgadmin/tools/debugger/static/js/components/DebuggerEditor.jsx index 3d236c1a3..95fc346a2 100644 --- a/web/pgadmin/tools/debugger/static/js/components/DebuggerEditor.jsx +++ b/web/pgadmin/tools/debugger/static/js/components/DebuggerEditor.jsx @@ -36,7 +36,7 @@ export default function DebuggerEditor({ getEditor, params }) { const api = getApiInstance(); function makeMarker() { - var marker = document.createElement('div'); + let marker = document.createElement('div'); marker.style.color = '#822'; marker.innerHTML = '●'; return marker; @@ -44,7 +44,7 @@ export default function DebuggerEditor({ getEditor, params }) { function setBreakpoint(lineNo, setType) { // Make ajax call to set/clear the break point by user - var baseUrl = url_for('debugger.set_breakpoint', { + let baseUrl = url_for('debugger.set_breakpoint', { 'trans_id': params.transId, 'line_no': lineNo, 'set_type': setType, @@ -69,7 +69,7 @@ export default function DebuggerEditor({ getEditor, params }) { function onBreakPoint(cm, n, gutter) { // If breakpoint gutter is clicked and execution is not completed then only set the breakpoint if (gutter == 'breakpoints' && !params.debuggerDirect.polling_timeout_idle) { - var info = cm.lineInfo(n); + let info = cm.lineInfo(n); // If gutterMarker is undefined that means there is no marker defined previously // So we need to set the breakpoint command here... if (info.gutterMarkers == undefined) { @@ -84,7 +84,7 @@ export default function DebuggerEditor({ getEditor, params }) { // If line folding is defined then gutterMarker will be defined so // we need to find out 'breakpoints' information - var markers = info.gutterMarkers; + let markers = info.gutterMarkers; if (markers != undefined && info.gutterMarkers.breakpoints == undefined) markers = info.gutterMarkers.breakpoints; cm.setGutterMarker(n, 'breakpoints', markers ? null : makeMarker()); diff --git a/web/pgadmin/tools/debugger/templates/debugger/direct.html b/web/pgadmin/tools/debugger/templates/debugger/direct.html index 2a217aa59..318572bf7 100644 --- a/web/pgadmin/tools/debugger/templates/debugger/direct.html +++ b/web/pgadmin/tools/debugger/templates/debugger/direct.html @@ -47,10 +47,6 @@ try { {% if is_desktop_mode and is_linux %} {% endif %}
diff --git a/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx b/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx index 116df9dda..48be677b8 100644 --- a/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx +++ b/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx @@ -565,7 +565,7 @@ class ERDTool extends React.Component { if(this.state.current_file && !isSaveAs) { this.saveFile(this.state.current_file); } else { - var params = { + let params = { 'supported_types': ['*','pgerd'], 'dialog_type': 'create_file', 'dialog_title': 'Save File', diff --git a/web/pgadmin/tools/erd/static/js/index.js b/web/pgadmin/tools/erd/static/js/index.js index 71616c6c5..17976d75c 100644 --- a/web/pgadmin/tools/erd/static/js/index.js +++ b/web/pgadmin/tools/erd/static/js/index.js @@ -6,6 +6,7 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// + import pgAdmin from 'sources/pgadmin'; import pgBrowser from 'top/browser/static/js/browser'; import 'pgadmin.tools.file_manager'; diff --git a/web/pgadmin/tools/grant_wizard/static/js/GrantWizard.jsx b/web/pgadmin/tools/grant_wizard/static/js/GrantWizard.jsx index 9fedec760..6d9bea766 100644 --- a/web/pgadmin/tools/grant_wizard/static/js/GrantWizard.jsx +++ b/web/pgadmin/tools/grant_wizard/static/js/GrantWizard.jsx @@ -60,7 +60,7 @@ const useStyles = makeStyles(() => export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { const classes = useStyles(); - var columns = [ + let columns = [ { Header: 'Object Type', @@ -112,7 +112,7 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { isVisible: false } ]; - var steps = [gettext('Object Selection'), gettext('Privilege Selection'), gettext('Review')]; + let steps = [gettext('Object Selection'), gettext('Privilege Selection'), gettext('Review')]; const [selectedObject, setSelectedObject] = React.useState([]); const [selectedAcl, setSelectedAcl] = React.useState({}); const [msqlData, setSQL] = React.useState(''); @@ -125,7 +125,7 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { const api = getApiInstance(); const validatePrivilege = () => { - var isValid = true; + let isValid = true; selectedAcl.privilege.forEach((priv) => { if ((_.isUndefined(priv.grantee) || _.isUndefined(priv.privileges) || priv.privileges.length === 0) && isValid) { isValid = false; @@ -153,10 +153,10 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { setPrivOptions(res.data); }); - var node_type = nodeData._type.replace('coll-', '').replace( + let node_type = nodeData._type.replace('coll-', '').replace( 'materialized_', '' ); - var _url = url_for( + let _url = url_for( 'grant_wizard.objects', { 'sid': encodeURI(sid), 'did': encodeURI(did), @@ -165,7 +165,7 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { }); api.get(_url) .then(res => { - var data = res.data.result; + let data = res.data.result; data.forEach(element => { if (element.icon) element['icon'] = { @@ -189,12 +189,12 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { const wizardStepChange = (data) => { if (data.currentStep == 2) { setLoaderText('Loading SQL ...'); - var msql_url = url_for( + let msql_url = url_for( 'grant_wizard.modified_sql', { 'sid': encodeURI(sid), 'did': encodeURI(did), }); - var post_data = { + let post_data = { acl: selectedAcl.privilege, objects: selectedObject }; @@ -211,7 +211,7 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { const onSave = () => { setLoaderText('Saving...'); - var _url = url_for( + let _url = url_for( 'grant_wizard.apply', { 'sid': encodeURI(sid), 'did': encodeURI(did), @@ -244,12 +244,12 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { }; const getTableSelectedRows = (selRows) => { - var selObj = []; - var objectTypes = new Set(); + let selObj = []; + let objectTypes = new Set(); if (selRows.length > 0) { selRows.forEach((row) => { - var object_type = ''; + let object_type = ''; switch (row.values.object_type) { case 'Function': object_type = 'function'; @@ -286,7 +286,7 @@ export default function GrantWizard({ sid, did, nodeInfo, nodeData, onClose }) { selObj.push(row.values); }); } - var privs = new Set(); + let privs = new Set(); objectTypes.forEach((objType) => { privOptions[objType]?.acl.forEach((priv) => { privs.add(priv); diff --git a/web/pgadmin/tools/import_export/static/js/import_export.js b/web/pgadmin/tools/import_export/static/js/import_export.js index b46626a10..918512977 100644 --- a/web/pgadmin/tools/import_export/static/js/import_export.js +++ b/web/pgadmin/tools/import_export/static/js/import_export.js @@ -147,7 +147,7 @@ define([ res.data.errormsg ); }else{ - // Open the Alertify dialog for the import/export module + // Open the dialog for the import/export module pgBrowser.Node.registerUtilityPanel(); var panel = pgBrowser.Node.addUtilityPanel(pgBrowser.stdW.md, pgBrowser.stdH.lg), j = panel.$container.find('.obj_properties').first(); diff --git a/web/pgadmin/tools/import_export_servers/static/js/ImportExportServers.jsx b/web/pgadmin/tools/import_export_servers/static/js/ImportExportServers.jsx index 89c3fba30..67a6160aa 100644 --- a/web/pgadmin/tools/import_export_servers/static/js/ImportExportServers.jsx +++ b/web/pgadmin/tools/import_export_servers/static/js/ImportExportServers.jsx @@ -57,7 +57,7 @@ export default function ImportExportServers({onClose}) { const classes = useStyles(); const tableClasses = commonTableStyles(); - var steps = [gettext('Import/Export'), gettext('Database Servers'), gettext('Summary')]; + let steps = [gettext('Import/Export'), gettext('Database Servers'), gettext('Summary')]; const [loaderText, setLoaderText] = React.useState(''); const [errMsg, setErrMsg] = React.useState(''); const [selectionFormData, setSelectionFormData] = React.useState({}); @@ -165,7 +165,7 @@ export default function ImportExportServers({onClose}) { if(activeStep == 0) { setLoaderText('Loading Servers/Server Groups ...'); if (selectionFormData.imp_exp == 'e') { - var get_servers_url = url_for('import_export_servers.get_servers'); + let get_servers_url = url_for('import_export_servers.get_servers'); api.get(get_servers_url) .then(res => { setLoaderText(''); @@ -179,7 +179,7 @@ export default function ImportExportServers({onClose}) { reject(); }); } else if (selectionFormData.imp_exp == 'i') { - var load_servers_url = url_for('import_export_servers.load_servers'); + let load_servers_url = url_for('import_export_servers.load_servers'); const post_data = { filename: selectionFormData.filename }; diff --git a/web/pgadmin/tools/psql/static/js/index.js b/web/pgadmin/tools/psql/static/js/index.js index e63a04c42..cdf61eda9 100644 --- a/web/pgadmin/tools/psql/static/js/index.js +++ b/web/pgadmin/tools/psql/static/js/index.js @@ -10,7 +10,7 @@ import gettext from 'sources/gettext'; import url_for from 'sources/url_for'; import $ from 'jquery'; -import _ from 'underscore'; +import _ from 'lodash'; import pgAdmin from 'sources/pgadmin'; import pgBrowser from 'top/browser/static/js/browser'; import * as csrfToken from 'sources/csrf'; diff --git a/web/pgadmin/tools/psql/templates/editor_template.html b/web/pgadmin/tools/psql/templates/editor_template.html index e60575098..66a17e5f3 100644 --- a/web/pgadmin/tools/psql/templates/editor_template.html +++ b/web/pgadmin/tools/psql/templates/editor_template.html @@ -8,10 +8,6 @@ diff --git a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolDataGrid/Editors.jsx b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolDataGrid/Editors.jsx index 69cf01bdc..836058337 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolDataGrid/Editors.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolDataGrid/Editors.jsx @@ -327,7 +327,7 @@ export function JsonTextEditor({row, column, onRowChange, onClose}) { if(column.column_type_internal === 'jsonb' && !Array.isArray(newVal) && newVal != null) { newVal = JSONBigNumber.stringify(JSONBigNumber.parse(newVal), null, 2); } else if (Array.isArray(newVal)) { - var temp = newVal.map((ele)=>{ + let temp = newVal.map((ele)=>{ if (typeof ele === 'object') { return JSONBigNumber.stringify(ele, null, 2); } diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx index 366384fc7..509cfe023 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx @@ -32,7 +32,7 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { let loadingEle; let prevSearch = null; OrigCodeMirror.registerHelper('hint', 'sql', function (editor) { - var data = [], + let data = [], doc = editor.getDoc(), cur = doc.getCursor(), // function context @@ -50,7 +50,7 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { * and icon as per the object type. */ hint_render: function (elt, data_arg, cur_arg) { - var el = document.createElement('span'); + let el = document.createElement('span'); switch (cur_arg.type) { case 'database': el.className = 'sqleditor-hint pg-icon-' + cur_arg.type; @@ -90,15 +90,15 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { } if(!loadingEle) { - var ownerDocument = editor.getInputField().ownerDocument; + let ownerDocument = editor.getInputField().ownerDocument; loadingEle = ownerDocument.createElement('div'); loadingEle.className = 'CodeMirror-hints'; - var iconEle = ownerDocument.createElement('div'); + let iconEle = ownerDocument.createElement('div'); iconEle.className = 'icon-spinner'; iconEle.style.marginTop = '4px'; iconEle.style.marginLeft = '2px'; - var spanEle = ownerDocument.createElement('span'); + let spanEle = ownerDocument.createElement('span'); spanEle.innerText = gettext('Loading...'); spanEle.style.marginLeft = '17px'; @@ -106,7 +106,7 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { loadingEle.appendChild(iconEle); ownerDocument.body.appendChild(loadingEle); } - var pos = editor.cursorCoords(true); + let pos = editor.cursorCoords(true); loadingEle.style.left = pos.left + 'px'; loadingEle.style.top = pos.bottom + 'px'; loadingEle.style.height = '25px'; @@ -120,7 +120,7 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { return { then: function (cb) { - var self_local = this; + let self_local = this; // This function is used to filter the data and call the callback // function with that filtered data. @@ -146,7 +146,7 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { * Below logic find the start and end point * to replace the selected auto complete suggestion. */ - var token = self_local.editor.getTokenAt(cur), + let token = self_local.editor.getTokenAt(cur), start, end, search; if (token.end > cur.ch) { token.end = cur.ch; @@ -211,7 +211,7 @@ function registerAutocomplete(api, transId, sqlEditorPref, onFailure) { api.post(self_local.url, JSON.stringify(self_local.data)) .then((res) => { hideLoading(); - var result = []; + let result = []; _.each(res.data.data.result, function (obj, key) { result.push({ @@ -264,21 +264,21 @@ export default function Query() { selectedLineNo = cmObj.getCursor(true).line; // Fetch the LINE string using regex from the result - var line = /LINE (\d+)/.exec(result), + let line = /LINE (\d+)/.exec(result), // Fetch the Character string using regex from the result char = /Character: (\d+)/.exec(result); // If line and character is null then no need to mark if (line != null && char != null) { errorLineNo = (parseInt(line[1]) - 1) + selectedLineNo; - var errorCharNo = (parseInt(char[1]) - 1); + let errorCharNo = (parseInt(char[1]) - 1); /* We need to loop through each line till the error line and * count the total no of character to figure out the actual * starting/ending marker point for the individual line. We * have also added 1 per line for the "\n" character. */ - var prevLineChars = 0; + let prevLineChars = 0; for (let i = selectedLineNo > 0 ? selectedLineNo : 0; i < errorLineNo; i++) prevLineChars += cmObj.getLine(i).length + 1; @@ -289,7 +289,7 @@ export default function Query() { startMarker = errorCharNo - prevLineChars; // Find the next space from the character or end of line - var errorLine = cmObj.getLine(errorLineNo); + let errorLine = cmObj.getLine(errorLineNo); if (_.isUndefined(errorLine)) return; endMarker = errorLine.indexOf(' ', startMarker); diff --git a/web/pgadmin/tools/sqleditor/static/js/show_view_data.js b/web/pgadmin/tools/sqleditor/static/js/show_view_data.js index 619435686..6b9afe548 100644 --- a/web/pgadmin/tools/sqleditor/static/js/show_view_data.js +++ b/web/pgadmin/tools/sqleditor/static/js/show_view_data.js @@ -10,7 +10,7 @@ import gettext from '../../../../static/js/gettext'; import url_for from '../../../../static/js/url_for'; import {getDatabaseLabel, generateTitle} from './sqleditor_title'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; -import _ from 'underscore'; +import _ from 'lodash'; import Notify from '../../../../static/js/helpers/Notifier'; import { isEmptyString } from 'sources/validators'; import { getUtilityView } from '../../../../browser/static/js/utility_view'; diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor_title.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor_title.js index c7372b03a..fc2db8688 100644 --- a/web/pgadmin/tools/sqleditor/static/js/sqleditor_title.js +++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor_title.js @@ -8,9 +8,9 @@ ////////////////////////////////////////////////////////////// import gettext from 'sources/gettext'; -import Alertify from 'pgadmin.alertifyjs'; import pgWindow from 'sources/window'; import { retrieveNameSpaceName, retrieveNodeName } from './show_view_data'; +import Notify from '../../../../static/js/helpers/Notifier'; const pgAdmin = pgWindow.pgAdmin; @@ -139,14 +139,7 @@ export function generateTitle(title_placeholder, title_data) { * This function is used refresh the db node after showing alert to the user */ export function refresh_db_node(message, dbNode) { - Alertify.alert() - .setting({ - 'title': gettext('Database moved/renamed'), - 'label':gettext('OK'), - 'message': gettext(message), - 'onok': function(){ - //Set the original db name as soon as user clicks ok button - pgAdmin.Browser.Nodes.database.callbacks.refresh(undefined, dbNode); - }, - }).show(); + Notify.alert(gettext('Database moved/renamed'), gettext(message), ()=>{ + pgAdmin.Browser.Nodes.database.callbacks.refresh(undefined, dbNode); + }); } diff --git a/web/regression/feature_tests/browser_tool_bar_test.py b/web/regression/feature_tests/browser_tool_bar_test.py index 2ad9efa1a..e9a62849f 100644 --- a/web/regression/feature_tests/browser_tool_bar_test.py +++ b/web/regression/feature_tests/browser_tool_bar_test.py @@ -91,7 +91,7 @@ class BrowserToolBarFeatureTest(BaseFeatureTest): self.assertTrue(self.page.retry_click( (By.CSS_SELECTOR, BrowserToolBarLocators.filter_data_button_css), - (By.XPATH, BrowserToolBarLocators.filter_alertify_box_css)), + (By.XPATH, BrowserToolBarLocators.filter_box_css)), 'Filter dialogue did not open on clicking filter button.') self.page.click_modal('Close', True) self.page.close_query_tool(prompt=False) diff --git a/web/regression/feature_utils/locators.py b/web/regression/feature_utils/locators.py index 20eac9bc4..cd7171634 100644 --- a/web/regression/feature_utils/locators.py +++ b/web/regression/feature_utils/locators.py @@ -24,7 +24,7 @@ class BrowserToolBarLocators(): filter_data_button_css = \ ".wcFrameButton[title='Filtered Rows']:not(.disabled)" - filter_alertify_box_css = "//*[@id='0']/div[contains(text()," \ + filter_box_css = "//*[@id='0']/div[contains(text()," \ "'Data Filter')]" @@ -271,14 +271,13 @@ class ConnectToServerDiv: password_field = "//input[@id='password']" ok_button = \ - "//button[@class='ajs-button btn btn-primary fa fa-check " \ - "pg-alertify-button']" + "//button[@class='ajs-button btn btn-primary fa fa-check']" error_message = \ "//form[@id='frmPassword']/div/div//div[@class='alert-text']" cancel_button = \ - "//div [@class='alertify ajs-modeless ajs-movable ajs-zoom']" \ + "//div [@class='ajs-modeless ajs-movable ajs-zoom']" \ "//button[text()='Cancel']" diff --git a/web/regression/feature_utils/pgadmin_page.py b/web/regression/feature_utils/pgadmin_page.py index cb4e12935..9edd22015 100644 --- a/web/regression/feature_utils/pgadmin_page.py +++ b/web/regression/feature_utils/pgadmin_page.py @@ -83,18 +83,12 @@ class PgadminPage: def click_modal(self, button_text, react_dialog=False): time.sleep(0.5) - # Find active alertify dialog in case of multiple alertify dialog + # Find active dialog in case of multiple dialog # & click on that dialog # In case of react dialog we use different xpath - if react_dialog: - modal_button = self.find_by_xpath( - "//span[text()='{}']".format(button_text)) - else: - modal_button = self.find_by_xpath( - "//div[contains(@class, 'alertify') and " - "not(contains(@class, 'ajs-hidden'))]//button[.='%s']" - % button_text) + modal_button = self.find_by_xpath( + "//span[text()='{}']".format(button_text)) self.click_element(modal_button) diff --git a/web/regression/javascript/browser/modify_animation_spec.js b/web/regression/javascript/browser/modify_animation_spec.js deleted file mode 100644 index e023bc058..000000000 --- a/web/regression/javascript/browser/modify_animation_spec.js +++ /dev/null @@ -1,94 +0,0 @@ -///////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////// - -import $ from 'jquery'; -import modifyAnimation from 'sources/modify_animation'; - - -describe('modifyAnimation', function () { - let pgBrowser; - let dummyElement; - - beforeEach(() => { - pgBrowser = jasmine.createSpyObj('pgBrowser', ['get_preference', 'tree']); - pgBrowser.tree = jasmine.createSpyObj('tree', ['options']); - pgBrowser.tree.options.and.returnValue({ - show: {}, - hide: {}, - view: {}, - }); - dummyElement = document.createElement('link'); - spyOn($.fn, 'find').and.returnValue($(dummyElement)); - spyOn($.fn, 'removeClass'); - spyOn($.fn, 'addClass'); - }); - - describe('When browser tree animation is disabled', () => { - beforeEach(() => { - pgBrowser.get_preference.and.returnValue({value: false}); - modifyAnimation.modifyTreeAnimation(pgBrowser); - }); - it('tree options to animate should be disabled', function() { - expect(pgBrowser.get_preference).toHaveBeenCalled(); - expect(pgBrowser.tree.options).toHaveBeenCalledTimes(4); - expect(pgBrowser.tree.options).toHaveBeenCalledWith({ - animateRoot: false, - unanimated: true, - show: {duration: 0}, - hide: {duration: 0}, - view: {duration: 0}, - }); - }); - }); - - describe('When browser tree animation is enabled', () => { - beforeEach(() => { - pgBrowser.get_preference.and.returnValue({value: true}); - modifyAnimation.modifyTreeAnimation(pgBrowser); - }); - it('tree options to animate should be enabled', function() { - expect(pgBrowser.get_preference).toHaveBeenCalled(); - expect(pgBrowser.tree.options).toHaveBeenCalledTimes(4); - expect(pgBrowser.tree.options).toHaveBeenCalledWith({ - animateRoot: true, - unanimated: false, - show: {duration: 75}, - hide: {duration: 75}, - view: {duration: 75}, - }); - }); - }); - - describe('When alertify animation is disabled', () => { - beforeEach(() => { - pgBrowser.get_preference.and.returnValue({value: false}); - modifyAnimation.modifyAlertifyAnimation(pgBrowser); - - }); - it('alertify disalogue/notification animation should be disabled', function() { - expect(pgBrowser.get_preference).toHaveBeenCalled(); - expect($.fn.find).toHaveBeenCalled(); - expect($.fn.addClass).toHaveBeenCalledWith('alertify-no-animation'); - }); - }); - - describe('When alertify animation is enabled', () => { - beforeEach(() => { - pgBrowser.get_preference.and.returnValue({value: true}); - modifyAnimation.modifyAlertifyAnimation(pgBrowser); - }); - it('alertify disalogue/notification animation should be enabled', function() { - expect(pgBrowser.get_preference).toHaveBeenCalled(); - expect($.fn.find).toHaveBeenCalled(); - expect($.fn.removeClass).toHaveBeenCalledWith('alertify-no-animation'); - }); - }); - -}); - diff --git a/web/regression/javascript/jasmine_capture_warnings_beforeall.js b/web/regression/javascript/jasmine_capture_warnings_beforeall.js index ac133ef67..2eab2d9ac 100644 --- a/web/regression/javascript/jasmine_capture_warnings_beforeall.js +++ b/web/regression/javascript/jasmine_capture_warnings_beforeall.js @@ -13,14 +13,6 @@ beforeAll(function () { spyOn(console, 'warn').and.callThrough(); spyOn(console, 'error').and.callThrough(); jasmine.getEnv().allowRespy(true); - - window.addEventListener('error', e => { - console.log(e.message); - if(e.message === 'ResizeObserver loop completed with undelivered notifications.' || - e.message === 'ResizeObserver loop limit exceeded') { - e.stopPropagation(); - } - }); }); afterEach(function (done) { diff --git a/web/regression/javascript/sqleditor_utils_spec.js b/web/regression/javascript/sqleditor_utils_spec.js deleted file mode 100644 index 886625769..000000000 --- a/web/regression/javascript/sqleditor_utils_spec.js +++ /dev/null @@ -1,21 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// pgAdmin 4 - PostgreSQL Tools -// -// Copyright (C) 2013 - 2022, The pgAdmin Development Team -// This software is released under the PostgreSQL Licence -// -////////////////////////////////////////////////////////////////////////// - -define(['sources/sqleditor_utils'], - function (SqlEditorUtils) { - describe('SqlEditorUtils', function () { - describe('Calculate font size of input number passed', function () { - it('calcFontSize', function () { - expect(SqlEditorUtils.calcFontSize(1.456)).toEqual('1.46em'); - expect(SqlEditorUtils.calcFontSize()).toEqual('1em'); - expect(SqlEditorUtils.calcFontSize(2)).toEqual('2em'); - }); - }); - }); - }); diff --git a/web/webpack.shim.js b/web/webpack.shim.js index 750751d35..c94b81337 100644 --- a/web/webpack.shim.js +++ b/web/webpack.shim.js @@ -72,9 +72,6 @@ var webpackShimConfig = { 'deps': ['jquery'], 'exports': 'jQuery.fn.drag', }, 'jquery.ui': {'deps': ['jquery']}, - 'alertify': { - 'exports': 'alertify', - }, 'jqueryui.position': { 'deps': ['jquery'], 'exports': 'jQuery.ui.position', @@ -120,7 +117,6 @@ var webpackShimConfig = { // Vendor JS 'jquery': path.join(__dirname, './node_modules/jquery/dist/jquery'), 'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker.min'), - 'alertify': path.join(__dirname, './node_modules/alertifyjs/build/alertify'), 'moment': path.join(__dirname, './node_modules/moment/moment'), 'jqueryui.position': path.join(__dirname, './node_modules/jquery-contextmenu/dist/jquery.ui.position'), 'jquery.contextmenu': path.join(__dirname, './node_modules/jquery-contextmenu/dist/jquery.contextMenu'), @@ -160,7 +156,6 @@ var webpackShimConfig = { 'select2': path.join(__dirname, './node_modules/select2/dist/js/select2.full'), 'backgrid.filter': path.join(__dirname, './node_modules/backgrid-filter/backgrid-filter'), 'backgrid.select.all': path.join(__dirname, './pgadmin/static/vendor/backgrid/backgrid-select-all'), - 'pgadmin.alertifyjs': path.join(__dirname, './pgadmin/static/js/alertify.pgadmin.defaults'), 'pgadmin.backform': path.join(__dirname, './pgadmin/static/js/backform.pgadmin'), 'pgadmin.backgrid': path.join(__dirname, './pgadmin/static/js/backgrid.pgadmin'), @@ -292,7 +287,7 @@ var webpackShimConfig = { 'pgadmin.browser.datamodel', 'pgadmin.browser.menu', 'pgadmin.browser.panel', 'pgadmin', 'pgadmin.browser.frame', 'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.browser', 'pgadmin.browser.node', - 'pgadmin.alertifyjs', 'pgadmin.settings', 'pgadmin.preferences', 'pgadmin.sqlfoldcode', + 'pgadmin.settings', 'pgadmin.preferences', 'pgadmin.sqlfoldcode', ], // Checks whether JS module is npm module or not isExternal: function(module) { diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js index 73f5abe7e..40ef92477 100644 --- a/web/webpack.test.config.js +++ b/web/webpack.test.config.js @@ -117,7 +117,6 @@ module.exports = { 'top': path.join(__dirname, './pgadmin'), 'jquery': path.join(__dirname, './node_modules/jquery/dist/jquery'), 'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'), - 'alertify': path.join(__dirname, './node_modules/alertifyjs/build/alertify'), 'color-picker': path.join(__dirname, './node_modules/@simonwep/pickr/dist/pickr.min'), 'bignumber': path.join(__dirname, './node_modules/bignumber.js/bignumber'), 'bootstrap.datetimepicker': path.join(__dirname, './node_modules/tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.min'), @@ -138,7 +137,6 @@ module.exports = { 'browser': path.resolve(__dirname, 'pgadmin/browser/static/js'), 'pgadmin': sourcesDir + '/js/pgadmin', 'pgadmin.sqlfoldcode': sourcesDir + '/js/codemirror/addon/fold/pgadmin-sqlfoldcode', - 'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults', 'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin', 'pgadmin.backform': sourcesDir + '/js/backform.pgadmin', 'pgadmin4-tree': path.join(__dirname, 'node_modules/pgadmin4-tree'), diff --git a/web/yarn.lock b/web/yarn.lock index 4ddda44a6..092060568 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2984,10 +2984,6 @@ ajv@^8.8.2: require-from-string "^2.0.2" uri-js "^4.2.2" -"alertifyjs@git+https://github.com/EnterpriseDB/AlertifyJS/#72c1d794f5b6d4ec13a68d123c08f19021afe263": - version "1.7.1" - resolved "git+https://github.com/EnterpriseDB/AlertifyJS/#72c1d794f5b6d4ec13a68d123c08f19021afe263" - alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"

p^! 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 Ktnog^ zx#3GzqeZ;WGtSG+@d9u>jSc$qDueyg{bkAzWX@F*aM|^_B7zzn zDfF5~`_%k}n%&-QmAVaT*azaZI;2|d&SjT<5=8he0&aZ@vm;)ceIb-V#Ok>c0(R@X zh%L~y&) z@!{qeCz^iweYDJ3o&7691Yo^Cu+H|XfG1vXiAk(oV z8dlrYPh1ZN1x4B|wvN4!up{EcJ|-ccZQ@r8);jB()0G8;AT!T-P4iKfVIp!IJ@-7# z>UFPkzBl1dujj8XQ%O~z>wVyoc@6`$nQpst{Bn~O@bSFIj#c60tm{s%Ot~axwnBYs z6<+adR?L)lu3UA-&VoHo|M^HgkRXY&aVxRgFCqD{Fi|cc0)r}@zNSZaAm<@x(dc5@}66G%`nuvX;xvDyzf<$KF^cx_KS!?Jo1CC|U1$^Cj{Tyiv(;;7}`BTVEbk)Myc$d1)joOoyTn(q?hH)Z5>uf3&pb zPrfLCi-%$6lczVh7mj()(l?!pw)G`k5*->9xL}&9YleWW#+D>_v|}3)6F?Co@ITsH z_~&@IT>s#0iw&ND?Q_3ZueR$+o(ZL3Sln%=1$Y2vrcrNcQ1&!DF-A`B2-$Kq%{qBP-v+kLMTG#Rdwt(S1WO!sAPkWp_EQ6t+Mq(iV_(a%c>{jz5 zhGB$eWAClXNam#kM?@)$g?92k2qq!#B0`D4(JcV5=n5@oikstMb~}%&J9Z+dvYC4$ zhz0bWi*nG!5TA{@N|9dz(3PXepCYLEhv|kS4oA&xc?tR&%auaL;cI^tOO3QhjYJGUwkjl1|M^|PfvWSgd8N>35U{r&UIaG? zf7J`>vDY`(Vkn z8H{0#fusYATv{p)sayCTQ~CGM#>2Jdh17itMU7$!&J*eSH7y-Tg(rn+NG<%Hv2^}`U1WemqA3}Dl)S~$~6r)Mmq*~Ky|z$MY)CQ7=wU@Jqf}n zu}A<(3qq5{523T3S6@2jYM0jWI`=5|eHZA1oY$w4r`wjE6{Z^z|>*olg@fcXVp-6=Yp&xzB zfly6+QkX?TxWW-eoc6a|2Dm?NICbp2sPE;rceYJ|Rg|Ra`8=0a#5<}@Qi%AhCgAg@ zvyFz?EKLy`VN<2s+e7>NAc_y#GKp36V)#}+sz75j;mc*L-&YtwsHCV43Zv&qRM-aD z7#_ZGqxI7C(}$(-z6oz?&gaLTQbzwbHtL@_Dtfhojly_eQ?T}UI7%QS#-fx4i!m!J z`j!XV84oUpbK+Vyd{;Pz-9fvl(4xrFI6NrbH}l$RG2mG|Iq#vkaB8Cfr2pUD>Q?Zr zR4St}{z#qrx6_sl#)G%-mFzc+Gh>ZHuC{md%zU$s(RagH9y>wT);^fq9;=`W?+W#n zY#o<5)s(5CRJ||l2u}y}gQPQQ8rVgR8{nAcCe!0)N5yl*BHJu29$C#1)x(kG*uK5K zjL}4oXaWoK5US}dyZ=3d(a3&o+eG1?G)H?8iebB+4v{0p*2qxM%IIf0sRQma(K7}? zXWnO%;<#sR`$Q`uXW%)W63NuPm_*HFtmwhD(FsD_y`;)cvZItwPvw0&m>IE$=fpiPdb{y z2dJn5AL}z|`-`Wo#~SwrLH-veB@I#}{`q0)Xx&Z_y;5u4+e?k|#feyQJ*Q+k^%SQm zz817HXz{#2g%+jzyR`Z^B`E~Cgn?jx%)#SckMuzQK&BmJ5Vd}*boOxDc>Y)~j2FeN zw2bS>)vv;9r_^23i-ItmG;x#vvx)z-*!f=HxI%Bzj`o&Os4T$ zHL6>|ULWSwErQ+AWEze{<1B0d=FavDL4!iGh?`K21Q)quIzE;_!xk2^vTvzK2*vmg z;x+;|Q+4I(XhCkLvHO3IjDfyT@9^|{Ci|9c?M7;r-~x?HE^R?sH%(*rv`jPiNE4R@~-x1f3{C}~9@ZL#Lh}8D;Ku5)K$4#2f$_PqTs49eL z`u~qTf*JZ5+!)my6?PfMExfWmh)9QjIPpY!qZJNyAK@enMjPY~yEirAhXS|iDXGb7 zKV1R(wMCk-vuI+is8b(Ii)EG0RyVTJ#GBi(J_xY!UZ-oBA=1(FVx(CgHiVcK)17#V z&xF-CjE-UNS@On^CoP5X@<%Yd*i|381>1>Fn^h=sc%&JoEijhk+Q%|YI+%}Lc{hxX zWA8n6T(y#e%%n4{Gz4A7D111w19wixFJ4u^ z2?^GZ84Ni#ZH|aErQSc~*r9gp5)LMogs^uY>t`{R5cW zCBHi%LmHiR*HjOOvfxu^$S4iHt@&QOtXebkSR!t=M^^OkaeVZ`cAqgvx3!^Rdj6yv zxIlr7N^8UHq3x%GO<#KI)$K^`y>wskd)E&(%~$4$skkW~r;Z2+clTQaZpHLdoEhWR zhLb&Xu{;TO&5doLSSlqt)8^YW66=#lullBu*iA-aH8$+JyC^KqO$ND;IQ#m$%@s^m0v0XFZMCN!C0&ZM%JX)<}xd0Ra-W zFL|W1ftLk9rpfq5g}s?iIB84nt|EF$2{wKWyA2HLwxrO>Oxj1*ATvZ@3P)-!VZ5rw za^DsL-NJ3Lu$ja3-dM(Hs)w$IZvEh?#e)K6eeU=pCH%xA^7XH4otZt!B`)(0GW{B5 zMGE?;sj;FnFAC`t)-3onctYByXOLQhNHVRe(zOIkfJx|3ljV$AB%PvA#y6{dipvxl zdh`8>9e7jH;TqlI62#ag6U?D=OSTy-Orn%;Gr{8W`{GP)?!Q_CW70f&aljk}-#qVF zH<0hCcpsOW<5HU8QZ*m(^n-`Hb6WPiDTbWJ$niqp#==Bra3O@S6<#HV|MgAL)m>oK24mGG@uNnbhA z?nf!vQTyAzjkBx8TCuk~76H6?cdlrey>CBQV-%{p-1U517>RX;> zA%|Ux?1Or-NLj0FyCAmTEyY_7tBw72xDxbMrmq^G)3$s^&-=uGsv&OV4+k?X7v2`} zV;tlC3AKW&66P=e^|3YXSShVq9O<2IJXGKXH_}GhMev&+y2-Pqsk_E@yX$;6@(JwQp z?u^5|7RquK4pE&EF7WaJ9ofvwoD}*g{m}_kqPzMzLV+h<%5pRmPf#g`GNzuZNRV zoqNG-!@D7lE}@ycC}NalOTyyzLZ(?GPOtn_B}JpwdMUc=M|?`|<=*6=xQqKfC&^cu+7p6MxFtMq zPs&yhQyQ(tLXgy}<0RX^J7Vo^2SM()kUy3#d1ASJlQPMb_H-}iO_h9*cw~ku^Liut zWg^|>OT=;|PxJTKcQT7zrcI%Ci>*I6Oqasq0jeAQXd_-jiWi;xnRlo62P^$}AF(bct*RMV3!iCeuUr zX3!dm^?Neb1milLPglU{4mUgH{90Q=&x5?_QblrHR+Dg*G9}S=*Hc=%p66!oUq8gb z0H!F{dFOSZ!}d_h2G4mX`FYQ4_eYEGy?qs`6_jsaQIgu6_Qn#5q;~*x)y%lIf^?K0 z<9+OedZ|vi%noFUn#kvF9;wxF2Y07b&)h~^*p6%2Onp+{d#8F(yub8mM1Fw0ook+t z9sS@XXO*+Zr4ELwZ_r9}bNZ=EL}$u^sx-O1Q9>AxmU4o^N8bIpsMat8Oh`)2vS!1X zjSap^mw6ltop(Q0>-at2m`V24_ai$0h7WI-%z+6M(otbJ?i{qr#ZkG;dE-d$nR}DI z62Dx84FOj3gu}+t%(E?}W`CRV%3nsTZcmo37L8-!0jN^b`J#~~g8(c?usS@(x#4Ym z7*V6yP%M-ANzu0RQmkz=6o2QUA2rqQ^>G7R0F05~a#(*|^*pYcZnRYPxcCOkKoDZJ zdhg)4Y*`}N=7>ajMX&3M?sqHuw%*OKKR>QCv+gRuT<}h+m}GwnX(O?^3#Dzot+xGC zMl)o$p=5~SysvRmfqVcigdur{>54Jnn#Su-6h? z*wX<9eQ<~exMf~S6>1EJ-}8blLrrg46H)}IrZDtUr57t|x@mbM)7h=eJlyrt4s|EH zof};hqEhI!Nv#%azQY%PQ4(9bzh~`eL3gixsd2V!5>urv8Jnd|!v)rF75{Bx4>;RVbdGw&{|&mOaQsp94`Q5t0*l zc2>1#WCc$9+^tcm>$)UU(4YKXcv^z!+}lxXQ8>pxWI5M9fHi&q_`P8%O!~HO7%>@2 zWzyfW1f69cQeAhhV6Z9jBX!&+{vg z#59bU;^K!mag!juRTIb2q_u*fDQDu2jtrKKZe)`H}q&?v79j)_dm-s+ukw zBFjQ0%YbPLJQBT`hE;`njjh8-AZ#S#9r7^>ys_h(3f5!vI;2!uU8$pmiX1uNr^>X3 z!iSeRo2xhcR6C?W0!L%SYTQRBF5f)IyT(kU3dE2ZXb#J;sh3j&G~#_^PDCS4=#oSu(X#3osp&Z!LumE<1O|UG-4(+Z!$YFA6nJZYu6tik zxayNqolLd%)-j^6Y+;I`i2awOFKtg`%4`v8XAr*Bsvu=mJlw_vqp-LXP5 zmZkt*o|16GIL#PV{>-%YH(YD;IVMmnn_6lXefJOy6?5zw+}by z*b~A*R=;RN&;A?q)#~+Bn$nz1GIbI%hn&aH09fmUpJyHC&Fp?Bt`YSEKK?F;VE@F& z1??n`hfmKrS&U1CyY)cEMDuKqp)-6AZ_ByzWLawi3S+1s_MkALWnJ5zXV;FNT5J}O zzbMWwd`N7x;nxELh-fmWRfplUqG)72g~CM&j1X98^rEn6!&(U8q`Kg<_rvHEarM8? z@zg{)?omt;di+>{m)5zQXk&@jnVc7u^@Zp!3QxUboME8k>YUDPJGT)?SOOA_$3=-y zR(k<*0Tp_N>#loP;57GIQH@Spz1q1B7L9U}N*Y-0Xw)LJ`l3I_uDWdAZ*Ei!waYwh zez;;Fi(epd8o9_rbou^|6T^!NibpmcipWp#!Gkf5<*Tpb|rthFCnA8l${C8nQ5k(Oe z7JtKVRWdIK~hw5S!b{@MPpRziHT8o;glEH*5u)bQeVF+dg?2wc8oAyW6Z5>u@ zrjD%%+gTU?aVd$}qt5jL2ASE5;475x&cZa7?1!I!2BGf6@SN4w#}ies0;mC)hj7NQ zQ;G%R@QhuvUSKa>ai)(bQn1BPpTj=>d#Rwau8 zs9WoT*xqOWC3m}!U8Jean@3c2v9SpDlf4YPx~AAJ&zpL9j2gBlh0<^jPmb)on2~*g z5FnKV>kO6B?YjPQ>>8-o%q!f4Liz&_`!Z~q6Xq7^$3oZC-q(-ye=>RuVn36#lnv_Y zVCl8K;F#?)ZH?Djcaoy+hZIc=;a`RAr*&R(lhv}JUGRr$RKJ5$0dKgU*tz2}7 z!bu;0TpNe%^9*)@7lk#_P3Rb`6Q)R^$0P}NQK+;sS|jt*2vMN5Cl>JtB5vVnCUWcZ zLA}%D=kiBn5W$nVQZi!O?33V-wZo^WL&KcX*Z$}f*0Z64W_2s zuy!&9Kyr#`%?IW^WjT(~+$vgEEBeRqKUjEdhTue@LL;<@%v%YLkTaN)GsWKwwdmFB6~1Uhx?c|BWO&hE;o1u$W$SA0jD%up zl-~2>GrG-|fgNDQxov^Mo-pfR_)7Kz3eO4iN?t6xKAQUz*drY$@U)4#S3CmST*h-~ zPwY(h-ZokTh{Atwp!|6X?5TZh&VpYW_LWNd9zk1m?Rjd4^#RoDeuieCyGkaV$}lG{ zWUUa=rc_rc{i{nX8ZV7Z6yGCfgzt3(_fO4q4H=S@*N&Ie1z^wl zLkkTJwJJ3|KXqsZ49cuJ&WNl3VQ7y)V>i=IA8$Me(Va=JQ)J#|k^bgrR>J=KMt(88gtijr zt46bT6OxBtIK39LI_(iB&^jwglIDK+ky%Z!5^$E#&Sa?1%*{gi2Uc(^^42?w)oI>( z%@TyJ%fv4_PG-t>fy=&JYZ*ze-6P6jO-n;(1H%_YdR)})?!t0yw#2{-(~!apBlZ?S z$REG3(f8V7Gf?!X?=}s2HkPk4QKc%s;R2dsIlvwhlAe8Oq@PB)>F6lC#E-O1XfEHh zez%8C#+!}iL(3Jj|Lznq)QQ4jhsrx_+n++7E!24@$b=lTNhI?cf{a1rW9VuXG6=hQ z_aO^OG^;-;WRBn1FeUmaGmc|qGj|QQ2?2QfN`=jqbbP<=ulven(Wy`~0oCbe?If$_ zUUYuYr)VEyK&ucv)tcBWH>!4Lv8tNMWF%-{DPs>qC1^7HpjXgHVb1rJieQDRMMeJM zw&g>IB*xjRl9Qhcg!5`UN@=s2w~f1@a7poLU}RZOxBjMMZ+fSEBMEC#FZk;^3%X(O zYk03M03vAEQCoU+7MgBnE2oEYx;4=IMhAbXM+*zz{S08#@h*-ApAIERu?3AQhgesz zZ#qaQlmdoqJ>pYegqx#iAEqixuOW9eX&=cx-O2L%n_-Wq zbmL;{{Yztwb>{IYF78+$;_f-!e$1OO889Kj^d&H4nM$hSrm?Y^WyWmo_-C7387no|ZD5 zN+Z2+(>pR$fWT`MHZ8v-bqKZ3g(!nZP6qYr^!B}S%CwwLw+zjpuhE+_mF~(mjwLx$ zQMcDq+8$JAU5CwZ=rD$kCFd>qcF@~5iZ2S`Kh52EE1A55PQe;(9WwFa3;r?sCADVj z{3ZIAd9q7n;v`n}((tg@PG0>!lAb*R4~>MlQ<3&K)*3!Ww$4&3c^o3P8BDCyQ7{v* zcq4W4Tfpt$pu=2w8msA%v(q-%_V1*TvDB5yS!rY}2b0k7UDy&qV?8o*+?Q{UVHv69 zK~glG>48bXiSh?}k{Z@wK4mR~?f+(s`5*=uG(h&V{M9VI6pVFT6hAo<=3}Q0vGdHS;y7a7KZML`IsE}Y z*bGHPlPx#|(g;~$rdakglUO}Gd>>z`n)Q=W6NF zRq=y4cVH)mNcLYN$O3o3gR(qCmYi)Tm-BR9G4Qz;)|LPGY@xH%!w@G@iRu0w_jQk^ zZYi1QTLQ@QTdY|mZK=ns$u_T9IRT^Ryx026{)^52s@Mh~!G?=bXbv(#txVm7`}R<@ z4J`KqpBkClZvV|>3#$11Vx2JqvKsZgblv5fyYYh`1q{d@b*Ef+NE=3;6*f>-Brqzx7Mxo0_F#b>DWQE$B!YC)*1f40dz(95; zNtaqFhXBU2k5aIUc@KfySo@|7I%QH{T5^gvapf(7AA){pF=TJtnn@xA4*JiXCSWph*#x_ria4?{KIYq)1YDBdS|vqi_(TQZonf3HG=`d(IZv5ojKpBL)U4mQ`7Z5{}@Mw zyZ*w;cE&304lzBiGp<9ARd}TuLE#mnG#q|Q5aN^vNZ4DYKEE3I>+LC$2PmXuH(mc# z?wZC*Te9EIN+bytdIC145P3>g;Wt(Q0kxi^=XJ`ysVyM@CML+@ZMGg8x^N$r7VM;3 zRkN6eqfYt0fc721h-=1RxI3J0rQG+fyHz@BeQ!EIRd0NBLdZ?Ia2U!Jn7lDOKN^M4 zDW~WD0_~A^j+lZ9SZSEzrvr1L&TWGHE2`Vax>*K?o$Q__qKmyjjDabNPfNz=wfnjJ z2zM*(IX84VpOD z5n!s*7I|;(+yX%z_HLXo3JYna`Id0o_xsCjXg419gj#G6H!$@PN#?>|X&6I_R=%*RG&yH0wPXR0PZPVvzUXSxGs?KH%PeE8+6H1vU& zR5`Y9W}cXbD#AZsqFo5mAxvNG0vT8kemsG$C#q1P0qoM$A{W6ydTvc*==;=C)@;!k z#C~Xpe5f#kPfoj$?ny0Rg3mh4WCo{=8l8=3!&tR?>Ovgq`lnKukgnK1SLCU??(`wN zzl@0mlDHF(PAil1k7X5LCrcBzcDKFR2p4R z=Y=)b@zeVB_K5M$S2!^8rs*({Zkn!u0id8;?pxthh+toCb`$&rD#TyNhu=0AP5 zW_bB7jGCqjm)Z>`9j)m+DrAGdd`M9<^cnuDLZ&5L+Bjmm$_W2e6 z6Gh?^0A0J7=hBDReJBdoxZ0;c0N*A<#UKFu6@}f56u#+z)~@NzuRo3NKd{9((}nIe ztfY63Ws@au6bLbvA4*N7Q#BN|8+pFNWS9bzQ(a*R$&`CQQp;{9WG$;8eJ79QM#};n z&o#S3*~h)KHpKkF7oOGYnH!$$g` zhercFoOUvEbn+Sf975OqBL#SZArMdoJc~1I+eha)40RtKH(nVTv>M|MXG(xzx@3-8 z;e9WStsB~L*6MRL7~$FL6Tb(uk&W;bR~>;2zxj%7uP=`iMj@*mXYF*S%j#8H>>w~X zlj1j^fkg1>`@D{>`({XZEw9hBD)=*wos)(sxe~VDXz+jVU<}|+UaEbxWRmdt0bnAq zBp(jwwjyFWPnr|o#CA^eI{INEE4`^=)aJEQJ+$jJ=IJhGW%t6^b2OqPEAKelc?MpW zyyzjJ+GUxn>1e)z@KJ@ZKFw{O-=_jF;}pwJ-8E~2npz5IkIRvzNpG@dAnxMP2u1Q$ z)@rmY@t9?)P;m~5aGQ!DL%Yq(=JP`EBV`9W6Bs*ASP}a~QA6Ojo^}%D<#GxRK7*A# zw7_Vx+Ru5sAp?{Caw7&jE|`q-+J?`L?N?)Tr$!lpr2ImEL>#1(~#3Wg${3;yfuEFm@*uPBQ*O>eY&vV=?!Wo&eed^M2SWm0> zUP7QLX*g;qmS=~Kil);$evG0KLE^ymt`|GX;?$pWQ4SkPE4fX0h|U->dTvI^kedB| ze)!R9Nvyj2g5WS81g4F1w{x9VxQ#JZx*c%iWEYHore@B(R{ze0&A4CZqTKETC=nNP zk3qU3jd}z)O)Y?QEU&CgM3#Bba%GJ>&N`b-672MgPRl^mXI{{w8`eO!lXB?D>t$4Spp_^8;LiZh?E3GR2B!TQL@) z$y1-UkG9JalrcHEh`;C-A?g<-OU5>AyA{o*GD)Rzm>PMPe#j#mPT%&%IQ|SEEHq3s zd-yiChE}Li$VUXJ9#|UQ@#JteCgU)5+Wify8SRQUnse98;)KI1K9!kXSkHoYMHwyE zrwiHRuoNY$dwrdo1jDgyh0feg(!7J@j3JrEjE|KFhpT9P?zxx*w4ywpNsF20`aU3V z8R;9ZP3I}XHXXgKIO2PLaW@q;#zVJ3HjaU?yWaKB&~xP9GH zZMQ&?;>AjlAVrG1Ly%J3i+hW^JE3@ScM0z9PAP4X0KwheB}nkT={e{5#`ykZWF&u* zE$d!;tvRoKc-j(47!$jsw!@^klTTulgpJs>6`E^nd_g+B9)-zj{9RekZl%>3Or`P@ zqXC_eWNIV3Yck&1m4}-~Y&wwFMT*PS1%q5GrHpL(x#9cN@*hbn{_v7uMR#&M&F99hav^8h05s|F9UB^V2~$ARE(~!DgT5O2_qKfieAB5ux=$LNdnt zztJDrU>>}<;I8#4)*UyNOGDN9zaHDq=JtZGm33G0tYkjajt<*AY-4+OS5YPowAwGJ zhc#a@Q#74Kf_9)?6xFtD2T2|mdJOPrW|V*8mqzL87gqtNnuk9{)e%;Orc&(|o=#sK zQ|Ri*&FiC1+NT~W#n<2#HpUsxw`0MzdNJ>Uen$W)gO-0q!(UX&&)B@v`m_8fpUhZX z<5gW`4M`;~g);aL9R$k*Zm!8@BlfT=cp_`0_!z7*lRJF6%=86 zA0gjCDO!gTx|Qpc!-Y*Okp06|e^ve0agl(|vHoqg#*pC*o3uulr$$Z`w^jD<%iwMH zfPjw{W7&-{8N=$1Dm))H7J!Wd+5_hbduNJ9R^PF*+q8@IZGV29bF z6lZacJvpg08t>v>)Hc;cCy6Y0*RFV4F76<0x?W%Xg! zPa?_qxeON=VvO;4(9(b>IEHSC0w>iU%X78aSC}M_tl(9ZRw(ccWI)WKW9PTNb265G z9w-KdR4rVx#9l27F42hmOf%Rsh4KdAH6W}8S*QIW-uJA-QeBrqK+}wq?Kueo{lyUe zT9r$Kox9<6K)XTQUl=p#h1{fPp%Sdl$8(!IRDx7OK@jsiD_=tt+GipFPK+8z4r3Y*Z*Xg^Er6y3x67Ia(ZNQ z0}dzz^Zc1tc6)+YbUO?_#pY6ZKJWNsWo#F3)D-3Z0Xu`Rj&>dapvUsh)q1)efaM`0 zn~@jck7Fby*gK`(!Fz4ckHTOmlg25+9+}0s+0{iH?-NT4?I+0Hep+t`vYT{~Z8Uy) zTITRw0hYZfPIn3pblU)R8?2@t!jsspdJl@Kb&b!7r)0$shC1bk?db_`$KFaV830U$4 zV`Qo?%ERv-iHT zc>HGjEYezC3yhOJZ0KTPW5a?A0DTNB#7r08nB;VX*N4GkU1>x^x^TtrKUQehGKKH+ zf5ixgvQDh_Mgv3B()!|zh|>(Go#RxCx?C2Rl1NF6rZ&iU?Hz{Z(`gz5C0Eb0QC@i8 zPRQsly4z;>Uz7C(Z9>JqiTA~A`{%*xBYj1X7#Xk+XUF?wN!?>s%eXrMWteK#cUJq1 z8bKAG%acL%Fu$#x`-8H2F2`pi>(#D$x6}Dmj&l+mDD=WuIW@n(S2fDtnk=4o>bk^O z`F3%egKYUJURk|cPqR^gV<{G*4i6SydhzS!)A8j6qHv^Wy-*P0b~?R^+G8A@Lq&mW zXNz3wei+2%v8+8Qz2)@sk_2FGmg+qJeL~2$dvcP`c2TvrxJABNWU5$WpoLHT@jlBs z(~;DAx~xZchtW73$9@F+11a9IrFDrim@Y+Ajf~qNak^SV!?+`dMf9%9pk1$;1iWBU z@-@6=vPn)VOB6M@Sjbh(ZJx1Qx3B}Gs6Th0#ki;0NV;Z9D>miWQ=L$QcCfgJ>W-at z{-maEuFC$MFOxqYKl+`h@){@2N{2_XP_yl>!dCFx+dBHsjK<11voDcqGA?&nlM$sq z=F^-L3SN)L_vN4KgLoWgb^aW%@C9RUl5Ueb-}dRv!cy7o?-xjn4=sr;6rS#zi*3_z zgvJ@^5H?p;+Z_Yj@CyQZ1%J(3Mh%3sS@C(&9J13NC&t@VN0qG7&JzSVoUyI8uM44^ z-udC@4yb&qqR~Zmn3wKzO48<}Mg?e7)mki!P7MY1n|yB@GHx{eEZ1*yk!bGX6;~71 ztNAHFjFk5iLfTaUc9}O`xtA{uucd_Idjc12lW!opje8JkG|$g;-Lds=DZ$K?nE}D5 z?nPNG6n7I25S~%lW>nSMv7AL+<8xTzJT$FV=L790ki%2E#(>A9&I5qQ@tNj?8)6Rh z&-W8Nu(h5kC?|Ikw~d;rD1Jb)Uy?tIc!JkjBz3Ke|6T3%;e`aFB%>V-GWdWIVi3i} z7V8fui!B_wyNHIEkGB;#0Sq$rPk*SA+d};#(``VS%Wc`iGWUSSKk9hZBcavV!aBu8 zuae8O#h{$J>jO^vypykd^3G>%PIi%l7r#$D8^mpQYnd9`gAtb&toY=YdDF`NN3kv< zN6L++BvP4ayth5PEqrez$5NO9;IS_;Ys4~@x6-8d>3A8-0#E0hC4<{D@PmG_x<3z5 z7P)$FE)d?gclAK(S|sr#HG>(92xz=~o4y zzLQ0cC*DZ8CUV`v2i#DMV=raaiHBHAvZrvq z-MfKp@>Etr;@l~n2rptpb!?eMyeOyFB>!f?T{26nGIdW`Oqu_CzYtUu(wOE^;uwGs zdSLM6F3nt%dRoE9N>J3qav@UTaeQ-bhep)bB864IE@e7!!$B6%8$G5h-|u^bTIX~= zP?pL23zn)HbLRq;AmJ`UA%KZX7gRvSRHh`pL8GGaO@=r)XH;rqC=`0v8%3Mvuw1wL zEWnN^r!^YQ))-ml5%b$`uSwyLJ4mXOt5<|1&!M>%eg8oj^-ZjQ?g$bV_?mt5$zAm| zrdk*VkDC!Sio?ldXT3_!!?)!b&Z7hKY**JZl#1K5M$4YxHdz0d50D zt{=(xV*6=+V8SCTjZ!{gA1)~TdzZi~gdVy|!KG+?MWBe`a~7;}@_U3T=rSUyhcoxX zy`=B;D6U-{Jf-97Rlp7f=HBlx=7kDP+hV1oUD$pS^3`wP8Y&8V_r1en&e6tzaUwrj zK>A>2MNJ?8RB^3BNYX`2g^Jhubgf45Ic`ou$KU&42EMapTF8n+x1TTba6o0AgdGO( zY3l9HCZ$>rb2~$ZlGb$HhWqgd#Q-Arlb}6cxVstC<3uhJK?c4O_r;3B;#ea0Jv{Sc z&Jw=o2_*JT2z8#|9V91i|Hs#aVpG*$fZ+5yp|=6|?Q@BJ?LClmYRiJUFdU2A6L=~% z5^2@nz2~0$?)D1Ky1*Q+yQ5JURvKwwYtZQ?Yq~ z=5j-8!Yf@a40N- zHSPAx-x1HDZ&vo|Nv2Y>`y2xp9lN;=h<*z3y#@1qHR^djx#NiUvm9j5d#)}K5V>^% z>K5B$U!MR~#pe15C$)(k1K{40shS&9h2D_n4WZ5y!s=eLys9YKz8zAcNgwxaKh?}A!Mgb`w z$rjZHJ%pnvVn|ze*FvMX+!qxgQGutyaXn?jZWOvrUggVPkSCuwItTadEjBGhGm#QF z4YEe^51FfHsrrJhbMFV`3Ezv0QsV@ArFS|H&ksPAOqbzrpxxtFT=FRei_JENPeSrb zm$b});5C_CuLU!wzxL{t1YFbxAY;&z|B<$FfUs20qs=G14@$tgXznx8aNoVsNbZvn zlZTifmlqDa z3KG?>(2|2K_WBTMGA268#A?~CdOHdXU6D2|o|>PVeA#qdY-u8$J}Z`}U{s#IZ%)7! zqht+Mhf26gC~lyFfl*e4z7Jhyukkm|DwqXcze;X0{Gw}y6trh=uUW)wn?dQ_)mt^| z8|*o(e-=G1!l1MEI1rFKvFF_2aLVfbW{tChg_5iY0rl0j$q5 zF9>?njtSseg!jO;yEdjBumW<<_S@SV4)3$4qE(%gdy!ccVs>3N6CS_qx6O78P*-NB z!*I{fN}4{lhhc6+>PZG7S-^2iUg)v+CCSlcgc!m>TBQw+e&?7TL(a=~;$gq}CRNpM z_A-c7{eBn4^Q7e_Xe3hz{XOtu%B>vss{Suz%8Y~jDt{TXKN{ko4PK4{2u6j!cuMWX zwt+ocWZv6qv)97E_58q-+KVN`pYO-}ao;B%lcpVxtiNRUL5ub~3Ec*s1LYdxN*tBK+!mhzufpV-;PKhNw1%8h|bYOT}wf>Y|=)1q(7^0}kQs2N^W~_~N+P@uishohqlpUm5gfp83oltGJYGAEUP{Zgn2$^f*n#mv-9g~r_E~k zA}<^=x2D+2i@bio#?Bi+F)25b9!<3C!% zA-vkzw!}Y?ms+*RODbHtCpOhd8TQJJhe7FLP^JpMB6qR;}&)#H7&U|R@Eov{xkGp^O#$OXDInePSXnaba80g?PS^@7I^B^7*xly z6C(kDaLUl#78IFyOTFx0bX%Dr**BBr)j$Q3-?WctVw!3+MaYCy>-rKlf<9~&y#7%62%O* zhsquA;pqjJh2NGLRomf#aUh!g?tCBiIW7qP2H2X^YAZL~GYM=2iWR#=8ycv1G`QMI zsuErQP?*GOnd=k1Qp;HLx9v#HpUtmu_6*q`Dg0So^MT*~#;>>UMlnyN$x2VVC*WrS zpInIg&7Zuu?U1cFo+BdoR$PD^)8@&Y*yl^Pf-@<_ZJr545cH32a|aavojwD6Kr3&K zusj(J=+Xvj+g5iQ`M7_7Jlq3v;-Y@cd%Wn9Iw*jq3+G#^|EL$2ejR8oUjb&@oh1L1 zfU$hoQwAM~EN+@ZIJ=Hb(Z~0${aKqUlhc64<4T_X+ol!#1o-s|XQtJpQJ6?qh5+(& zn2hP>elWh5*Gta4uO*kiUj`TFcC`BoyQk_UzwyNPqDt#GL4|jI&I{ebLFT+{)vLa3 zbPMyo$+lGDlgHM2W6{j-xWIzNvB5dl@54L#bE3hUAj|ZZrdh<80Obs~TG60uQYxul zad1s&RO-^tjTE8FD9H&C-f^p`it_ei4vn}k-!vmgug!(@bD>JV-_yBUa2%uxqIQbu zn4gb*BbOxI`fYc_PRM{-#+azwwZEbiqq`Ium6p{UBJny>dT#6_I>qOfim=O2LbAPU zGm(3{Cp=gCcWD6*l}~1tIv1lXr4SZUofk)vko_M6GABFrZ2y*&Ko@KZow%&?Y6IVy zSE+z0a98I_Xw+jSUyUW31qX+h_a|0^!8~O#S=zPNkx^-J5+UF%<>}AW7|QE=?xklV zYN2&;x-h=Xhpl=UO1o1K)~BPx7ooHfE_}RYaZ|m>M`oyLk;8L`H2^p4zBhTx9sRSCWxVc~u4>=32Msleus#t+BCha2~=3%;Hm461X$CVvbRn@X*iDTx%#^3U%3h@37+cP%F$ab(z7 zGUPv~?59{FU_Ti{SQn{XZqUcl3Nj9d0=yEo&5uE{GR>$eNqQCYYOx*eiPu@@-hk4W z($VbNSug*RBj93U54x$jeF-#l&&W@PL6WVB1LVb*E^NwFRIOZ-UnbSWN#M{1qU}Vq z1jwoxecQ|*TuEQeoy8H|KVJCI279ItIAeQzpHLLr{>*L*sPmItH`Y3n5I5mM_1TG` z4ns@lFVlw9m4a3SqRZpK_Jrl1d#A`G4aJ93$HQ$_k9DYB5*bfEGix2-c%`)B>zhpu z;^EI5;+0KF`bX6Y&P6tUvgG97$4nv3mc+Tj3*1@rECLSWZ z`s9BH?O6NLkJ00+Eh;vQP zNALQ-h=QHWQtHEd z(P>2@u(J)XUU|(o5@WAamZ`qmZ*!}>x^2?}cMsTDUUCe`Qihm?Sace2fnfVtus9<= zqpS$pkBIwxRRR37NYo=AJw8W9VE1vjmZQ_&w%B(wY z#eEBLUh8TgaYDd?swI?zKUpI{&cBO+JgXUvyBgSqMT+H^qVHdCYEg`&%(ydEPGxE5 zjR(8#zKBZR$cwe@1qk#i7}nHuABNj}u=;YOVB~X6vBfW~WY`IE?KhvrbyA@@M$fq` zrC{U_&~a8Pp;{!F<7?#!l$pmle-KaLYGWpZTgvySUF$mDld}?2L`9Sp1{7OvR@sjOTb8 zSjstNaVl8jwm65&TGbxiELgw$BO0W{_J6ymtGIJdZrw-lzWz;XZR}`Ywahpyx6)oa z7<^wp8yYAwi^Hel1fk~|gbdea$F{D}zEdVAK!uCl1{ruCEd1Q=|7-}ER$+*x+WgSU ze00UWe4qVe)zHG(G+UTo4PCa?2fpcK8H)biVT!9~S9LMq@;q z(H9vBMC&?oVYEnAL2*<^Lj6PBayMK0UQz*-Z={ahpowKoVc3}9;XpiafdA;N&WoqV zsNk8PWcVZ!aWBJL4nNqzZBy?9l0W|aH`E?l9AVkkPn7w=r|mYSzcPimV5#ix3s znTH)O4b#583YPv`=r++s5PYw|4*I0mVwXsXSFN2UYyqSu?qk>OnB)tj5} zc~9S=SDO=T9xQ`8gH=FfvTPeY<4I>-juMo zAcyrik#gQwR>8EbfG`-1Wx^_E&9MpH7h06rt{bybXd45S*QjWz}t%u40M0-rx4WMb9xf zSPH1SMm8`5cop@ogo^}Qj2RW}C^#t3N{mkV5^T0}1#C=SJ#jletLs+Ys+9%{wW_7n z@!Pqg%qn2NP31nCcIER4+^%85@rV9_U!5K6+(WQsVl!gfR(_TU zQZ3MV_(i;pmu04yEwVBj-{9TX*dcbcpKGX;@I~qkJA2pF0$usu>p8{}6SRE7Fa8F3 zPodAxFnzG~nmm12-55x0m)XCB4vKNa{h@0?!0cD4@!~t?)0BW`_y>JJreb2m>Ku2{ zeL0c)&9ZbV$2-*D2R|T>#>vZ7A9O zV;?I)M=uofaCk+rruRm&{itWp{!5rs@**`LdYV@WV%M0;{wJU^b$Iq;Mri7&CBo8n zomu55b@3%-rfxBe(MSBNqA&zjXR7# zOOor2*#s!JH73f@u_;Y$=(~^oBDsnARD_(>(|h{u`09dpz}(>HUy7@zZsYbQsrkGOcJG)3f#?q zr7d*$J<1L{6GGW%#uBriH3F23$X|+I>*_!=o^_O-##VR(oq7!a^gC(8`PrpJKA}jW z?0d5OVl4#FS*GT^WC%`#2{8}Zu>>Oz-Zmj~6D%2|WW%q1x5}gGjfics%@#R7@zh>! zf#Yh0gH>jK*v-ZjH%d{mo1GFpPU_B`PmE9SSy`7nKO?v=xyP^hqz)H2NZOhv-EFWWb!@|;$U8ICJnxq>n{C}Vc>fTe02Z5L!VZ-6 zB1yL0-(wxkmkPa*+}%KHo#^@8k1E`RyR`nb9c3Vqu0;?01+8DJdfHr;|N2(a6Nn70 z$JJWcr3KR!VL4n)4k{MGwi;(#@u~r2fQMdxN?Aq8 zE939Y!rYc49CKQS?_&K2qulM=uAIS}s|#E4IAIuYa2keSa`;0ApG9HNSVtkek= zvq}J7SY*E^4>n3BMxPT~FHowF{4r4UTessBOSj2BWAbX~&%xej>63xwtgPlLof*M! z`PBJ>r>2B!il23VOhgCX`8uV|>g}Qu!x8rl(5-Y*SRK)2sL})^k8Amyxzujt&XpIo zG~W2~q4oW)%FyeS0SS!}cJnQ!>6U)X=&SM=wGnFP8e6{F2a1IMsW{>|N}10;)mbSa z$7F%dyWAV(vxx-11+I&|ZSluef<7(lfU9+i!UMRp&U!m03vF%tllUzBp)B343xmNv zdSEs4II(`A9%4Pd(^ALM5ki9uHC3yC!*GN@41aF?zQeXs)OY4E2*0aYS<4iA=b^&x zvxE`GK}>^rVa?8AZin)H3*3=!*{aO8XdiQ}OtUFJwJ=7nLA63v$Ctu0{d(oy4D--C z3R*Q~gGz6UJOhYVobLd_o%M4WcWdGEPJ*^-{vj#qqb`#+6tmuef8t(E+kiGV4 z`fXe&raUBx)vqGd8U|*F9wYlhEqs|-7tgiTe{@csMByO)YGsPr@s??jPJ{(|lN)|_ zKJultE^0%*6Qdp84Alm1x!i>WH_d3T5DP)F69%iMC+QOAH3xj?Zl1CQtpccwXxb0GtklKf$)8nlL|M&T;;vq7j8Z~ zQl2OPAWpU6kHjP!W+u>L(O1jCz2w*PCu;8S)}aq@?(e_K-5LTJCOR zUsC+U)P(ON+Mos+C9NL9-T^^?7Osb&-+6tSd(!tyrHI#P2NDf_*Ov{U7obz;S1FcR zLPc-x1)?6&_VqZc^c#0s;t71OWtr8y8@ju>?(2qM?^rSiL(X9?SW_Vzpj?}qN3T*E zidsFJ55n4>d?8$y=(YWqimN|284CvrKRV->r*_vJsfO*HaQ$rSGE%UUG!>yXN)7s{ zF$AL^XEs1xP$w_WS;3^tO8=Pd*UTGD{#u1w$nFG0)(L1ZJ*P zOqIa~{;Gpk&w#cHDjv{?-swv)Es!CjKv^$5NE4ZQ@A^W`6F9`YG*7j9K&?JB3kQ(0JFIrha|x=cM_cJ6;(eJ4^4Q z$Q`6jDFT)$2tNL~y~jk$B2&^e(hPVmo>Cd3h2aX34B#(Pi9e zph93ItkP15``tOBV|Vznc&=V_+fqBX6u^06aU5;SWga@09X^*UW8uX|xyQQymgj-b zyG=cKbHJEw2kR08LXg|9G0*Fqago0qG}h0PftXIagZ^8CF>dqonz6Z@JYkZwvkJ}xm+p;C&2jS&U@X#G-<^iDle($a}mH- zYLd=snjP~$KV46n=MG2o8pf{>-u_w9v(hrKo$J@WwWLVb%S$xp_tDB5om*`U;$4@n zA5G7j3_6W#*Fq4)LdvmNwvcv_wVlGQ)9eNxr3QgTn(F}}%L>2k4Rc9n$#R%2v@?&( z+sMeMhCw;oDw1w5en8hS$k4LQqrtU%`jj?K1oj;?1S*j!u6Gqo7X3c};ju3Ix#9a& zh3B!wM)_XHlvKXWtzlmGr;*e1G4tqn9ai~tt}(rL?AijU^DBB04Qk5I9(yj&wayAo zUo1bhSk|U#6?o8F_#wwA0d7KD=1&YCtme=B&wM+6)FgHxROei#KSTUdixJSIAu`7< z(+l9;kjnAy#(gyR*tm4~j`{8RhQ}{|ht)3c$=-l~3?A#mArSUUYRW>)hg7Q$P|J_ALE5;c zju9}>SnO__K=5umNr~^4+-p6sBi%U_!A$P0+xkZvMsS3a5cC}t1f!-T%EcCf3pz*k zZ({(gENAe~|GlSvbNOEezOOKn;^4({EcA4xx7eC?G0Iz^Dxwp)J#^q9L52Jb$DFwe ztG<^cOxY;gL+~=*Tw8n5!*UBjNVJ5ER`#8`w)igBhpq?GsJFYAdm~_6JBTq!^*wE8 z7>zN1{c1Nciah}#MjABqTrrOvLqLBj*3i>!{GehFRl5F6pUbHJQ6Jnr%RiNvJt5dg zQxsAqZ=wItJO4}T^2XJLTI|myp6X&k-}|U;y<*dVMfoiu^}9Z={v+F)(KlkI;f zUnc$!H_aI@%``yC%w~D$1zq_cvB`uK5t~b_eK*tAjX$j-=o)vC!~vz!3gJHcN6_}g zKIrhf2iF3endt|AV{6C1&+D`Yr^c zWU|%RSVOh$k3hb`bhSR>zANKW`d=G{AcR@CVeKnPx$))<0KKS?Mw%Yc|S_sL3ac4mUtBR@kiuZ3SsMV}!s>XX%e zM?>rZcM6Sq)C84t*K@{>-i73E;+kWCvoRZNUc=?3>Cy)X$IM){D4C89g1$W&`T6>A zM#;PXOE}VZ7mSp-YNqtN?RO>af*dg#?CGWij zB3}{H!RSPZ*^@bv8I1cwN=7r8(aq7Nf6WPA^mRDh{2@xvcWD33qUgEo9G!#3(z%x1>iR?YpC{NqV=Dv7CeLSO4(XErxLoT7XzFAb)pg>B_XpZ=fR9ds zCrwi$(zw4CoRFkn+TzvNwN>Pgn}qi1_1^<#X(d7$afVV-5d^fUTPN_>6~aj3D};v% zGxF{0UvZ!-+VE9rM;c#X;oqC;sU-!)Dm}$)Pj8y0ORrRX}Aq2{G4UIU~ zw{;sO%Xx(DEZR18MjN?Tz8pp36XV9sc_- z;WTwij(jh#7|HzP^qC?)$W(EE$r;xL3Mhd7cCJCd&sPkM$90@YuU}|U^2NMGFvvj| z?aj@Uk*~7kMG#P-`)gQx$uGClyKbw zSkz1ClnvIUqLZ|dIkfc=(p3rCeZhxaoG>NR%$mCk)CGg^J7PZA=4TbqjRRV^23$OL zQnd9lRAY7cL-oJ#*-RGI+w)1}+R;1jsMIF^yUhSmEww&SeXoWTCwwZP&n+!LX0;4@ zIH5mH{~DVBVe1|-V9;gw)Ki-668RyF(beSOwQ0-aSDk-3tS9w)63a!;TIV9~?EgUu zJj9S54Cg!HvtcorLn^ghitl*s;wgD*^?TK-@%4+ogf+ z;?dDj)loIM?dJ;l5=2IJ(UzCbxH0^P>ILO8Y(5&P7?TDY8JUo%icP1{58|?kxU%>w zn_tM*{cebz*%y3CRC$b@zTa%y{iArEz*|NFEhsifWvIbU!*SA4PId2NVXBtHdoU3I zK~LOM)hzC;y}F%3xn#T5kV{6VNqsU~s7nSK3gQ5^)p7rFWZURv?e)t&=y>1bjmZ-uq7_GjE}a{6Xlt)wvQ!}mNVzqV@EzTvAE z`j}%^X6;9)AgI#i^+9@X*n>`A`ZR2QV7^e#?9B%*>hnc1Z!c_|V<{;QrxR@CNQO>y znKN*B`6dC_$Cqfr9nl7Mtd0c-jEg$5^ILBod{+=VhLJFA(tevQC$K(gLj$z<#3k(! zz%ft1iHlQN(yl)RVq#9@0pFMqvl`J=>+v+a9!C?Hz_nlK=%>d$*Kc>pL8!DBgAQc2 zoabtm-kZzI_&4tDXz!)HFMWSM>jmDlempc?y2iUv%4&HJE2$0d5~ExbnF5`==CcY? z`sK75Crx$qUMlx6h?&M?7RNG!s$>k?tmu@Ri{{x~ci9zwF=V6-(S(5i{T{?%4PK)c z1xUC$X+9Qy!oRD#3uk#w=!Yt)-=>QqXfgDPzn(;Mv}dMV0l1J6uvcz?h_Z`M+yD`* zjdUjvu<_XFMB#150Qx0(@7@zGPonbGyTpHH>tIF6V2?zFWcg*_H}Nrhnyxbtcat ze6Of&AgT5~cE7l0Ow!cznN%d}XxO1i0_gbL-FCm3$_voM5C}nf{2tFUG3Kd2M_kzx zy_sU!4N2m(=LfQx?XekH0rpbqA}1^yui&Q48-6T^IqhGNX*U=D*x@jH`98L@)o!K4 zVpM_G{^eG{q#WX2P&x&zK?EaWI=VB6f=6CxaH__zQvzo5s7@E9Pw`#9$AA@2w-cQ_s#<;adlfhtIhK`HvXzwu`3Iy#rArEoTuH%DKrb zHF?5J{9dm|fw;B+ivuoLc=*G>iZduzr41DY2}uwT=+z4cfh7>e1T)=2q@Nnl?&@9i z$`gMX;mNZkH7?s5$phd%_rW#DZM)xy=$nyOaVZAIG@%A?B#b&F+S2Hl&2^VG^@5-j zvR|*EIpv=idJ$Ys)}#~K*!%a0?(Q)v0%56m<9$`m?{;FHj9}*^ukNpEmnh~`4@guc zS{m)M9nGMOg)kD`7#-aN`U!$EN3xs6!=i5|LwLPTXNT(fI|CRmNmx?Kr}hvMM?bS5 zoF~F-X{-L2cp1?-$9Wd1Fn{W9vD;ri*Drpz$-zKt)D5Ov#NNl{{LOv@=Pg&~-z>&* z*#U5X>FJE^?2vtc*U!x@PLp-U3{KbF(9vvO<5f^A*lwvu>gX~7(f8}HuzGQ&1? z02Q#jY3;*DLz@;6U$CScc)?(S)1Z*yMvs#naYqg{K3+k$TR1YPmFHnypW5#rbH;0K?KAcESr)L`zgNz(z61^j=nQ#vRJ~?hf^4Hzhp9utfPDOp|cXu`;8wqlkIF?LOJ+>RdJG5 z!SN(`9aK#^noMa5=xXUhCrZK(4$nd6EkmKw)8LYrBghg{h?qWmk#AY(AIJYX^O^I_ra_^{Rx=3%%|CoN zNE)&;J*!k~e`Jw6(xkhbJS!CVDzjQCt96Ki-|&l`2ui)*9V}CB>u@F$ev`xHw=H0( za8qqRTmN;>VMT;dX!vKd{*MH_ie$K_k4GL2AcXlF4&i?mS1kU&F*$te&6oe~Kbw8M z4&R9y{bZ7jH!XNvwH}k1-lb|u!sH7DK?p~P$qv%nprp=)e6BZ1zdS0pKi4flw^?C|Tawa|gp)ZMh1?Hqr6NW+P1;pEE|Hhv#z~*tx36%jKPz0v71tDxbL8yw&;y~RG8b+?LSDC53BXPI@4WR3sr zN0md)A(zwO+j67o#3prn!?n2ZVN0+|{Jndn{si9JiA8t8#%{tv@EVHj`R|bgm$nzB zqyV$~eFDF2R}KfGEhp^%%=*i~z--^E6VFb8m%vHel0Sf)W%f!n|_PSGJHVHddpwWjgoo?$-r;*3URVJt)Rl_cian` z=LFV9H264u-@kHX=g{P~Ade|U)~b6Ej90;Dx171ILLMSZvdE%-i}Am)F^Cb*rB})l(`nMdu%0Mr zCsbIP&5ET=dL^cM_eGeJqN2o4QMW1^7+|LETy{$>LKQ!SUx!%BrrcRwM_HnL;%1hO z0u!fEB+LceHwUkcW&`VdwbQ+0X^EDBuaLx4+4Y*fCu^CSwAEl|ihZrYz8B72U2M`| z)~cCpET||W)#qF&rMEuP{|jd>B1l&&OD*%_0yDE_n|ZeX5y&VWN07oHl0%^vw@c>59m6C(HazKqdnU`S%82Ax{kuUxm}^FL+FN*&d&0RrZxtD;MqF&c?+<8(Dt6(?(F(D`yN> zmMw>$jA(DYye}~S8*>m3G_;pze_dw+yKrhrR?l$Z@5GG4qjbIl{$;@)DEs_^juF7Y zhl!5?Wn8$YBHqhX@z=0hRq9DoXD@o!mQsT=yb!V0456%G`$hzpM*R6EAk1-hcQ54SliQ zwe)I#LW+dJQQ1$R)nSDR!M)^mCE7IMl6X9GOC2ATJs(hd%VRc(cd*o2+kOG}G7zn8 z>%DA3`QOuTTO9?D?d|QrE8OLwpOM;Uz840IljzPye`tw`Rlr2Jo4@b8ItGE0R)S{& zU<98pSE6T(VQlHnjBpo3YM6A#u$DxhtCB4v;$U&=^|+4ne_=FAJeH`4Tph=+3sLAQ z@`azC(g}MU$M5C(vN^wfPfy@ir##*#xlD+{@9~J|(4>C4D|V0fNjv1joYUQ%p7kClZBen7fO_Wy6ffMM`j7hgikSm z%VXEkiyfw?8A|#hv^P^~rX+UGY`-J-BIGig%}6!a@9JIc8#muw zAD1^Om&Q)Ya7hC$B)EPw?Ek&n|M}PdPI>+LBWJ}c7ZmGlH#Y!>tQf%FR&*41J`b(n zd=U7%!v>25)>}Y_ECI~^qhEyC7lW-ZT>2X5<0idVWfe#}j#5@8>Gl;K1OL`=DrM{a z-{T*Ej7Fgtvl0_T@+D(d+pC!yaN}mQfHJSIZ}~W4dHy%q{+}PRPVDoJUR>9-R;L|q zQWW?hE@wT2R!LW&IG&OFn}_pJX>ZfN4b=e5RL-*bQu+49-8V__{GwR<@vFkOZ-}dX zzX1fBuP7Q>sqN;#8Pu#?Rc@Ct@A4s*rGdo~a~E1&JXI*)`9Lj{^`H0u-}&Z$9>xl2 z!x_cLL8?T1?cxSdYN7tQx}AZ^F#gYghKw-DQ^062&1k20MPuDodfDp=h-Wo*g+9w6KjuwCw{?8fqKNrn@gxPoMi`}8n?u#hB zB2e+-KKw6+0c_|!aL)&WG0ERx*a8nYU!q8@x+t80MNO7y$xwGNkv{R!73PNz9AYj2 zNzPxr1KgnLW;LDC0lWJyDWosAT=xf%O~8(;8~|>Ly|4pK#?2A`o&NnluN@p*B!47s zE)^B@Bi~SkfFF`!D4W}rIab-6cMkCCodG&~AC@e)?tT_vFht%RhFi-bXPo*X@a@i& zrq0gK$nyX_gR{H+@1VNGB9~>WQc)rGI|5RKpucWczva$Ku|LQ2E%4hw?<3QfcYdGk1}zzK z*-&84@A&+^0Q@;(!1;4;(jmED;}u)6&Q+3e>C}E0x;gC4#KfIt#IN-9U>U~)XY8+IOu8N=i(6d z_$sw#V9$ZD+GBicLO1JgfifLEBAW1VXmZZc5_z8F+gc~;e@QR@^FV>KToge=RINoX zujy>h?2q29UjOMr=C2UJIh&j}=8UVJTE79if7f_Ff08OCn+bil%Ouw?5pUIKDYrYf zupR`Cwrx6C{`ENk(#X{@A1SguBef@tm1VIImDPVl69fd$uLyE9>Gl)Z-MK=&H`J2p z5?VGsfuS}StC7oYwhw9CWy|VGNWG8g7&ftwJevQiJzw&_w*29RAEQeiMfJ0uOto)$ zpPQn4BxKNIohL{G|SEIJ_Gt$x(lhZT`4PKu8x``U0D1*ozPfL2Dk9or4W~mUG&&*`88#PRu%jXH!@k{4+jjpTxSdtxQ zG#*L9EGYfYp=a$3n(NB-WS=)jmsS*Bt~~+~{O;^z>3R)%Cy$_L{-^yYgmY&z%E!u* zqc&V-YnzJJrC}v`y0g!+sl<6>i=n{-fr<(wkNJA_|L)$r0O=P@m*BTO0?`AnQ^;ia zSE$Im`P&4>f#^`p_eUV>YyOXRvRhsbPvz^}VJZ*9r<1Rdqde*82E$aJGQ4c-f((Et ztHBhy4rj!T?sVoMddj$tKYFfWOA-n5GhFvwP)WzysV~<*kE<6BE_pxeb(to^As1eh zH7@u@0?e=8!S4l}Bxj3uqY}VzbjVbA3d*T8~Mm~=$+ zN?u*JGc;Md;Ri=8xO6|#@f}Lb1Y0P3lh^=;T?XGrbRo_rn_P;jA%mHToqyvysUhrX zw7tnT@8snwbOhG1WJ$_<{}>E@k^#Is-)#Ev8ASD-b4P8PJtR}=$GzJcy>{-Qo#OfD zCzGB${yz4W1RkpO6sFDzhE2r~&o_y(OiSor9K5E!unH(RKFGI&eVd_7~$ZQhZMPLW6aK^D0l0?U02>o{Yp!7f!G1 zZQdi%u_mDJXV4k=DuJGFgm(VLZ*6d+KMp8(`EE|OPpx~;tG(ARdcW9bQ%Anijg0H% zlF>z-{%?r)ZW91)a7M&?jd}3f%UMLO4UhgjmM>AzNrwmP=m7BGf>07Fk9I`dJ^*zr zJ6~;wqtkIhqPC|htK}jUK=F%v;arAdQ@;nSrQ?xa5r_jm zoCZ%1w~VG!RJXv{ZD9iZ0kD}~%St!jOJk01~@6qt9qwv-3hq284fe5 z{{q3(SS;jPEw}v9?|nTFq)89EvR<)3HJrS{2xLPp$IaJLSpfUQA4Wjnzg_@kY3^tJ zFFmaJTB}SHAE1BRYQEH@s^xwvGGAp92jm(GWp!()JYi&ewyxJlbT618lQk+apm&7j z=dfhKEE|6bsLqgwqo#A2--^Fu{}ss{_7q)SW+Fzto*;Sq%dM@af_)7yNs&kxPC~*T z*F_er@%9 zM87s1PML?SG1wcgwE4_rSZf3Dmze}^B2S-xPFm}x_tE>J815IhcI_0ukd3&q4X~pF zw3SWV$D);5l7CV%J%0*);~Pni0M4b5PWh2SlX~FlHnW3>8MDn_avtv&hN~e`FANlU=7+6m#@4+u>QR;_>iiEl{Vc}}~qZ0~jp2KA$OC;&VXHUjYuz;sH?lS~|lljSw>I|KN} zGYAYz^axZSfe7dLeIVUQ08I4;*V-B#523(>`b|!mes3hpA{A}NIuKc2tn_M{=o@z4 z0|ws_(>@Obtft1d??1dB5`g~tF`ucDtAB!A((Vo*hVoGm`4DuVWH&-slrr%Ei+al6 zxuW^;itB|p6m;MhB~T~$^Pf9@!h>L2Lb?gp_W~h;FJfDA7P`4V>BKMq^3W@?Ui1Jy zBn0A2H`cim22-h|<@@QF6NU+4zq-DSP-mMKbZq=S#uJr4KP2?zK$%pU@db(G?QC?5 zk37qOJmC%Fiw*ra^Yt`n%j7tt8R@mf7Le$%!4?3{;fw&s$IK0+L`_Xi@rmr@gg47Z zfPK|N0LvagzT&ki6@Ql~o+-_BK3$^#W&5ZC9r|y7~Bk&@8TJk}oZ;~7PtOU@{2SRmvq4axVx8vsK%PoJI zzZ+K;n!RMir@bV#uBv&Ho~XE=OSVZ5V}P-))QSM*SHpxI-+n9PePCgk2AXJ7ear?Y zYky0$nj5C08sa}|stqL4Td7qgGZ_u62>4yfHQVNs=|{ZH_p&^5;%>=YK?I_>1RO7@ zunG(Mu7jFcw*%o8cn__Tu$~6BwM=YKei0%3leV>;hVw_V9d_pKB(^@}p~#_!ZjGdy zK`xTmzC?#%`H|JGUJJmHxIH}Za_~M8_jrSe!|BtadX2`W%QU%|GWDW+bjJIQ_R?j$ z)^%FC9K2+4%V1%pR#k8VwnDD_ers)yr03mI4@*1iW<^B1p!gW~}YAH4?&y8-F~@!2xX&C=Q>#?lUeZSskT%aM5%sT7-l+?lK^&87!G zzqBJh%AM)`fG9_r@p6{|7Kom$0}Dz5`o@Vs?av`~bkms|>6CmY@bo&TpGH2%Undl( z^f>D`6V!8o0fU}QrxZ_EL2;p9O66KSSOX{LPPnU){TRWF@c@7Z$jA-3gZ=7B4FVtj zR;R9SAfp%Z2{Kj*QwD=IFf+ixWL2_B;hd*w@9x(znR>}I{z(B~;5f9RbE4V)I>!yi zGFo>@1+^1E{-W2^F~W~}$1+ICCrKO3+yT=Ekaj$?_gg?$(T{f~D$NmUGSTE>N67tU zOwR(wMy0qz?G2Jq61whHS5_?F3}8#nIxLlmr}1V>ID=d)vP#uyCV?UPLz)1gAyY~3 z&eZQofqeN4R*fht1ibL~DmPj2EW*Yn8iOHYN4}gE1n1mUziuE`AOS=>e&^hx1f)`M z>h}sml+|b8EU46k6-ahqC}DElh!Hby3wI2v8OenqARpQ$T|z;cPr{j);qgKXeGRstUWszI8Wx0f1*Hk25>j28T97fai7N^2dj<7J1^nbKoZL1i7A@8(WzVwKuR) zl&E+i`^1!+tuJMg9P$5?^sz5t_EqM4oFYRk?rXX}Q8E4f6yEy-WJf$CccRY_kmc9r z2NST16*f-hD7rt97dAY{R6OjB*^cT8fQ`+w`dnjP`us!Lc;4-a$<|T<3?^hezBqoW z{*|~|&g~QWYSR!g*%$Pg`AYxF+dBa1AywF!S&au$l4A(^g4ZES09S5Y0FNSyU+RituJ5_d3ofJ4H26VUv2Bla{EB*OzTOSXt zO3`^-FDl$MA)78_=9RncNni9oEfF~_l8K<=RytK1SLWm^39aZWPh(0(`rhX+mr%xg)WVN6~bFZT%Ob+5AVt%<`7IA~J86 z52GC++rrDJw~(uff7D&?w$s4>(=h+;76BS&>gHx=!*g5hRrXLpqnknEMd~NF>%-ak zQ{x1-#$CoRF%CQ_y*s~MOhGh5iKL548H8`xi|7wY_`T@C-N)z%Dt_%VLmJ7NM##*D zrO6+Sl;6_fK*|6w?C+ZnKa+)Qcwg;{;n`RmGh_pY)Yud zsh-Hj2cmFJqB$@A1&xNlp2x?pTq_s?f$4V|=be#u2i)5!Z&)SyZ*;RH-Jzt=Bmgy- zY#rr&+y#SsUavSUC9j1*#0uu`glR_x@ORW|6#j95@p>|01ht`4l?AIQf3#4a(0-VX z=q;&LtHx?n&0DP|Nf1rf<)8QB+0;T*ox{TZz1?XswsN?8ebdO7Cx&qF8ika2y3lR4 zLgiAm`47l0*)IA8g8mSB21{;BdJ zMG){Ry&!H;5t?V)ToSErw7Rgw=&eSLtP{IH34`8o@Up?6T6cI;l4|DR@!6Kl|Z^6w-|cK>{F0@I%fu z>7HmarwC35GUxG1a=%HPU~q6fw%-;-{T{Kmp=sp z`%@a@z-(vaC9Ok{G5JATFivPo0^R;No}f-ZO^fQep&`-$0%nRJP>~@C{UhhEXDxdITahpD}+5 zm7MjvL{J^Wrp25$4||RjoX7eyvlza*@d_6^xQT&fjb)> z`Kp*}A~0DD8g*XqX(Z?(W27^kvVZNeujJh+H+ST@Q$|;I)8aW$s&K{h?ECXwgEt*) zTRgp*G+l^w{B<683o@Z3P$4N%O_i_G(r;(7brU3>!)}c<+?<hU9_7c~$h~uxppM+hk{iE1c6ybH5-9(ss%GI1uhuL#>hneLa}#4(I9^{_C`y zK3C@}fbcM`BEYL7q;dz)#NK<{T~v1Ofuz7p>m|2s2!TZ9D!prv6}G*R?;w-3Y`=ao zY?6ayu^Wyu%q$*fHyNakPM~F2o9^sxm6?1e^aZ~o|UlnhX78b zb9&Al&1oQO;|`U~cGp<`dW;vfY2URSKK6US{(saa2Rdw~+g*q3f6GnN{@6Lg2lA=V ziM&wtd&#Ip3e0nXKo4>6|n%r4@xW_@Herdyto^QI-A|D z`?pFL@-&iT=Y9Q*zH0ZA+?;XS2oVPoJ|&}+`6K^dCR*tY)5+c9o62g%A_<9qA8_H; z$996C`XAk^A<)@oM4P-j-06%HgBVO=j}*>pyzwiF#EfV0Q#UdUI{KI~+1SbUZhdTI z^7RdrhFJ+DPdxG#f-{7cK4vel5h6EJCE<$a3B=e0`ipCOp#NZv(3Gx2F`&kUV9)$H z8bj~2;BkT&Qz40pbZCJ`5MwvlScmED1Lj?_Hz_X`vU!Df>$VudH6{Jh7q-+*Vzwp* zk4+-I4qqo<<`Z2yoTeld9sRc>_+OP^gC0)An2<0AgjL50I)hy0l%=#+#ol$S%GSwR zl47sPrq`bZ<+G`Z|0?l`M27>3adSPz+FUW%q6$vMv~yYiw}Yq;?_=MX_D+L@_Xs_I zt&7Ky^5L4{e6p@zQL|e3;A}g7D9Vj;`=@H!#!2{Dc(26P{`IP>JGu8tTUPvEDxltW zVftur@A-OT6GM0Bc3V68qa;phAa*t!M9H!29fOW{y+HKg73R!5wl~rKoNpS@0Rx8t zaz9X65F7)ohYA|)4)$~M4AXq%L7!2B^`{RBoF_TjMhMxl=iA@ z_<+33ZW@JbfCR_panwj*+_*j=)VcqG+jEic=!)5<^#|MaQ=+`;B0Z3xldg2!N0SLj zLHuAQYOS<&(LAL@Fx3DEvx%S#P-|EeTeC{&qFG5PjlULn@z_rTU|tjmWbXVYhLUEE zksIPLHH;)*^!x*CMsfB)vgQFJ6!2O&VbKZ1rQoL~Az=3W58VTa*MrS1pjqfQHfG0c zrqys(@An$=3t2Ye;U{#%zO5n!<i?yBk=1SU>K`n&gUXPSP^g$A_6Jdm<59QUuOVKidc(_w(Q?v zUrBchwEfrA8;KQ$3Q~iD=E5RQ`ZsXAO&txSw~onBIE_Tkfzz7!|wlL56uE< z`Gg*puNz{2soB&RUvF+!Xc+^TYSjBDQNVBm;LW&q1D2gh8yozAgLFiCy z=Ggg;%`y!jsCiY`KMA?dSlVo2Fm>Dr`=cqHbRvu))&NRPiq2LLq8);O`#1EPIHdQl z_gmO4SBi?u82S7=r=}FS6!E07ec!SREJBDG<9jsJPmCcru*fpqGQJN`CWLL5g&~f4o7O)@Bq2Ag;E{#DGG=Fac zNG@}M*eAN*+cqM7+#<182DIzXHs9E+tT*nHfpmHMQYc1LgxG(5e!iP+tqMm}>{Bz_ z&jDu?Vr;ln_Ut{~AJ?+TA5@{}3eEv5C+A{W8=q)rf7p!n;P||b@YdJJwI<^@^~W;U zuSpM*!Pfh~2Sysr?;Wz?i+C>DP6!-H?}B+8utlYr9vWl`!{|p0CAA&;eRdw3}zny-PF;2Pba?= zVmJ+bimoD)=3glggwcg*hllk)>`gar1;Yheowf0FU<p>-q5W>5ldZv zQHEahZVg}!gVA0qv#+8m~m(@{MN{|-71bFRFjvHNwW->3;fx@@fo{1(` zvf!U+mSgRQ_}xDbAYi+lbxjYh+hD=A$9#l?E&sHN;`2|{-iPgT;4WkrVWNGOET251 z1|QjD?(j}(acsP=7cVGt9SIfz!~d1lw?(%`Td!7RYz)ew@&^ z3jGlE96IMN3uueFas3~2o2U)b8M$T?dcS*z$3I`tOX$jke`!E_0E;p&(j(KYZglq@I>JXsj`b`} zoL@|RYoRV!+q)GJ7caB>Sow^p{a5%N$bXTo@ozgjZ?U2-snB^j_<~r7faXISpe!=j zSQnoA);6xYON8H}f)EmWI>iM8H5u;3?Th!BYb_oN%C z9i^=0b37Ua^B8hXz3fSt?Dh1JH{gk~wmIrqM2;Khqvp74y=IuWz1lnI=>qBHa(nRH z+m1(u=>NoPwlFIHTu+O$?nCmeH$0<%yl3zpuO#444#|C)97Y9)O7H;ZXvu((in6oO z+XVb&_NThl_GPlH{_ynMUKd0BFTDs)bw;uJMK-~{8_p4m0J*so)i`quJ>6w1IfTY$ z<~7>ZyhMrJ_J~5GqlH-^NGa{75PR6=LY0ZWiLpPJeg)uSOUL=I09!!YN!FrxPq`xA zjQ}N>?g(hodO-c^~Mf9R`Ye z8V?|$>YfLGt5Ys4+$E_Ady-8rIbh>@!j#}acY_NY@xyiVj(f)bX_p=Y|PX6qlJ*o zB0;dGUeqX5QF%EQnfs3%Kk9 z@zGO7cIHc~54Fl=`_8-KXo))4x!qq8If}d5@YHMsMW2V9Kajb5LYeuFk{_xJ9#`u( zog?Bi$vb`09_n4=g#VABqG+jf#v?xEh9=ONB&y7Pk+uzGHRN3!? z?A(hKOZ9@XmRz>el|TFEz3eY#`L8$un_bD#L0L}c!)%hKrbQ-G;0hdiHFFd8*&xjk z@Qr1|F2#ar3gg+te}wU%Fz@RaKo^NV;^B>*U2@i5a&C-jx*Q4m^J5oPU+j6!%jW6S zlhV$Knf=5*xmWVIbIqmu?}>N|8{gx&rQC2GQ1s9(ym=&h7q>2Uojbt(36-O6=qNFb zVubKIe^}ijc5r=tJKkmyo;Zz)iTKn$1Y{EFtnz2!xW0iaIg`%{$?f=RkDkl%h;ih` zEv00_2uJh|aF#5L^Db`b9UX*u=U(o(2fMOhpM^&`y0Gr5Vt6ZZI#D_BiFng>cUtR@ z;USWK2u|0zT7`AU#iMhfk-@SGhU8XaaPI3UKW%J!9%haqq1eZ`W2Vp`ZROJk)i=j~ zGafHVuMF5Bniy-G&op!!AQNL(>rtNv2Q*O&e>8$%kuI6d=2`R4{%Z1OK ze2;=H84Prj?BTo4<=hz1=tiE_p*L6<5EAA)od)!Kb(`>ZhbTDOeQid?PVc&mk!&~>rdqg3f#{Js!)Y+ys$fdzK#a^lv@}#et z^DI8f_v>PWoP%VPoKoAaiF7k!OsP1ZKuMTmeG6D>lX|BWdP_v%!HqD|qw8i=Bfm8^ zy4o4Ez+`R5zgAHbg6s)3DUbk41Zf=tCc|)2Dw{FmB2*rbZkmsuGWs_GM-FmrfBGjd zbY(hM0&DW?;d1RVLM6~cOI``E_HSeJdU9X40X6_rfJ~0o)SNPjG?3$chZ=AczM%-w zI!;@37My zZv>7=xJZH|bjKq79 z&9H}4$Fj4Zf#*6ex2pjB0ezY!hYt!@8q5$U4H3I`2C0MiKZ8B) zEtuO6ZTjiS&ulk`2`!4^wHNBwl?tr|I7&6c{8{@SSJxfRAJ!k%PlHpnS<>VJO(sIS ze}$j79X3hqA9q#l+Wj~g8+XPZhXYu3sg8*wos)*$=Z(iXPu5dL+Qs~=-OlWur}mLC zMr#IkUQvV7o!ptZ z5t2;CuQO*q1yb1sflOn2cB4RKaq=rWtHL+?i4Xh=&Zj>5>2FPL-7crUZw3-tMgyg5 zGBqi(*VW;|EJEo^UxPK8AFF4c`yEXvHK}iu*}%#!{YWizE(Cd;ot^t<1#q^eYz@I( zAVUPI6q!qSJ?`d62!Ch*J#bqfCvmI#kFo`%|K{%$%FJy{tZgmU<$vpO;D6aOQ~lK; zVM6roJX%B(^@Q*TkDrDGv@z z0~Yhe`8`fUbEgUg$_~?OiL4Q`bMzF@_a`%Ssp3S^#~wFxHdqEnP2CEWf~p*)9+K20 zhKxzZUnV76!+(#=8>Jhb?hcMupc62PCYX9Y^4%(q@Li*;)|*Cr(yURaF`qBP()#Ey zwkQlt@Te!5Xt#RCP5*S~k!8l73W8M#npFE5aAtr-V)^WSPKVE9*fia2n|Eg0vujae zMa*p<{z<)36bbzu^>(^P!`An&z$yXhdP|C)L9u#4LzS6ZXo~G|OnYZf-`P(y2QY`) zy5rcfJW49jv;7qNe3d~lv#Fez8ne}pI@cD@ye9zd0AZ}Latc)}Q*0j?4ZqqB-9#;A zN^&?DQwzv_NO}IzSgu?hyZU@Phhj>RQ55GcV(^m}ckS#inZ>Cdb^i3+uastpQqpJn zoTSsG3SCI}yT`n=T=>Q!C7L}pi`FXcJb5Tve0wx24AE_=YONMt?pX<1 zUbPyhgE{%{X_^HlA|69u8P1~wQzhCIQurq(!x5#3K6D9cwXT5?Z&bS7DttRcGHnw7 zw45ZVbk+rb52PMY4i?35^yH=LY3ZY2H4U(;BTpOUn?Pcyv9e{B8><~@RfS$A&~faW`oBYwbPn?wscTE>*Pg-I^3!PH!sG zT>iXX#h1cl6~kv*-f%qEJm z`J-7F%O=hf$KxY7#mW&+DQE9B&OEt1Shvhnv(!dtewqlCnoo3RMrgM?Zxqs(zG9xT z5<@%0T|pGZy8N5QVw8Y)X7%lGz8l0B31Qvb-h0@6SQxUKVuZK;-rfb^R>Hfot)%T#pE@{fxk(qORdPJ^n8`W5&B#@JLACtgd(Hxtu)X@UU;LH-33`8U%Q@(NFyu zmKQi~UV^u%Q01xqqeg@sn=)OT1k<5&_*V-)x5RUClxy1_pV2)n{5uxKj3T(Uu&28C zbrn8Ld%=%>JzGnF^#jWIgdR`Ii+^#vF`8A{dk?Q*nh4#~t%+~Sv3fJvVV{?uB{nWEhF5ap;$a0# z(r@MZ?0E^R%%eoE)rUK8FSwRGLeSG)e<5cdcupTgXbO(V``;o{l@t8rkn{MTscYD zJ%9P$pp{=$!BWDHCTbs>#i4iU>)hYg_1m^{80~Z!ho(e{EZZQA)-K)lA#D>W7UDDN zrL|~h;+tjc68`0zxz5UXja{6CGdG-yhu%6?9fjibvKPIrb(E(}n@abW>aBUujvXKr z#k>+O7*#VDg!LiWyZ>W9PvhamIapF3mU|r}^eLiNw^8CQ+cPo@IXSb2$M`0=l2INJ zbt!e)j8(k0_AZ4_kdPvsd)=<;(6eZCd>B>}O;8w`^xTeXk;Q6qXy>TDz-lPL2Qs~& zr@pf+*yHl^4hP>W%w8W5SuGZp*&ojIB5i-TJOj2xIei{&XSFEa&5TQg&)eb5e?U5Q zEMyp8_sjkxMk$h2R^DoLIx;O0!As&rlj-qPeM=7GF?am!5KC=tqX$BNS>*)Z?p{0N z2EA}mi!`lyie#)${)EMYJOO>jz4ILiOvR7ily*;-_``zQ);H-ii|SBW-j^OHtOR7?UjWFYR82sF{i!hF#SwAf`%w=Ke9=NSx6?>hVQw|EGcH4%*Q26ly`xw0^I2%*`IW5ShK z+JJY;rT`1(Cty^`{$Nhta43m-l<&Fe#c$^fm@!pvc+)MpgY5p(g3$+=paNJRPy?Wj zzv<0*(^ob1Pr+%9W|V8foq~itWdJva=cEn(3|JKSI!erAG2?4{u{$|C160uSl22FH ztr7vDQ}$|lgeC@4S(y)>J2OzL=C@T zW3P|ozRcu<>V*5uXX&n+=eOpXev~QGmhACl>0DznTWT>Ns^1$xlbSpAjDjVE?4q-W z0-J8LYS^83C)yfQG9!Eizf6ddUZsCA%YLOc&J9FCvB0Q@fi=$}NYQkWA_Ht*!)xQ+ zD5Ig!nV>GGR|{qEmPp$MgYmJ;%P!5YqjQEs#x}^h$by9pm6rieZjG`TLU^R=Z(VyHpbJhHPe&RqHP|^ z!U=H+MI>&Apcf` z7Fs1Qja3L*Xz@rSijG9`W`%AJIfk5~uLg;jV5B%$fWXG6R`sX2XJL|~jI4Is^a|1k zYLiEd?B(Bzi%ijS9Jca*PpN>$w4*X9Is>DWO8Ybv6k?Ur<-Fm`um^GxkmrTd>;<&BG#S zDqV0Sm@&>GdD_;TkURHJDych*9de=J<%MTbtWC(w z6p&}((&I?CU|!Xu%Cl*>Rj!8MyWX>2o{q4@uS?%2oq7|nnj1ski{YH}R7n65=uaA@ zqCP;GD=0ehrI;&Gs~+G@IeIdM)#ZTW7xe1EvHLvr3g&M82~VSVR+e#DA^scZzsBhz3l>Zx3jvnKgQ8dhX6Q zh(BviM~1V}y&~Dhnz;Lp^a0TF{$P}D`{}GQ1^#q^VFbVmZwCyE+vF$KhNqLSo1j5o z!~^iExKFlIr_in9%@24~I5QkWldE)4l`GmLSl2m^_J21#?Q)sSmtrAyU4!S1*AB)Imy(9R?2r^}aRZKq32H1f z`v*s^L>J1Cx}gk(*GL8E4H984U%iMv9E~^OYmlipXG~$S`NgT1jTS?onR5qsh}-F9 z@I%I9wSvg|#twVa5-i_1hyIBB8RjYkFdAz4lTHg8osxB2?U9OV?rpK9<8{?1<0dge z4*kV_bOZ@Hc@m=WO>YF3O&{O6Nlj|jeK;W8jFL09B#LGnGvpb0Go5qtK)_O{o5IDg z$~CBT%{RG2nUpo{wLQ7;usCQGDVy`>}OTS4K&BxeJKD2;*#6DgVjCQ+{ zNb5W~gQp^j?V*n%1bV#psGaw2S*H9oJycOyO5ODXJFXAEC?frf8z#&kwe;Q`IyW5A zF|5CLB+47F6LK%4d6^`SdazVPbHpUY&B*y{ft7w8JUBa~j7T1Mm7(t>o(D=;*z~Pc zVW+1j=)Gtu$yOLgc+QRF7zl5qu%6F1%oK`*L&x~|xh~V!Ja(`9#hFs`ma5H^Ab+~f zb=UCd#yv}sZJM;M6ipN*HcVW~s!*yrbw&w<8Jvo;prNJePCMsNtHa^_;6UJex7Wbj zlaX@E=z?{+5%j9R$6P@6r&lA~WwaNaDp@@evOO5DHp!VwlF z-PW|xYeG70O8lhx(W*!^)_t(JLXmlRadKardkJO9kNrzbvh715qv@=H;+LoD#zjpODs`5 zO#G}rE+!%1BhT6kwPKv5xBeDg7~pHNyNE%V)1prBY8X%>H4% zuOoz^5XgibFCXTr;Plu85ZDF=2tFb3jQT~PLTM;vfq9mHZwY(i!BO@}(AZ=5k);1d z#z0y<@I~%sA+HQ*zrC2_*uQx90AuuA9S^9&x zh+mT*a{tBb4Y{xY`uiR7biCl~$_5#hcVNFaymPriOp`TA`s!BvcqEQeaOuIFD`vZY zewzBuv_Gj#UL2tP-OO%%9^u_GzTmbpe-4Vg`AY10a&5AVr74+1VK)|%f~!bXnr5!9 z`E~dXJV6@T^xXDTWxr)$ITOgR^R#|k#)g&D`rMkhQGUIoXU3G_cIz>`FEbfm8EKmP z+I1BksZ>cQ*acIKp$Zp#d8%r+)|E-GD>IbPD2m2Mc#^AYXfyE(3OUW?MkZnRIc&d3 z=aGE?-{4_an=MSuc&}`a5;Bo9n~#G&4;1>Q82c)b{I$SnpQ=fkVYb?*AUATbG-J9c zflsd0QHA5f1+NfM4(#bF8#P~Fz4{_ip2oU#AxVWsNYBW6Sg{!g$u%NQp98suO}}6DZCZ} z{Xo!3SP!fq)5PY`I$NW zQLV#e=jEM(omBe9x-gjwYzV_0um5#$j+2ij2Ak#5`|r;*dz0E8k374xUj7ejf9y7- z|4yGUPZL8vW5e3*Ro#X(5wet!!y|hc5|l~O^D;$H?srejCg2CEd4g(jW-D@rxEv<* z5?lOe#?hc66km+R>H}ikI^U^UT8S^|P(%j<9MRax*j7&Tp2;d&Fy(v^&cN1Sf5To(!IzMKD8$IQo5&%-)73Z z_{<8knV;fk8c5&ii6;4EW1;2r7SSY^l9FKHm2MfN(?Zd$ONk{o7 z;(QX!m9rJU-gh371BPh4$6IIhZK&B;V?Yo0~M|>KTBQpa*G#@JJkrC+Gq=hPOYG3P6lZ0&!CQw`Y z(Ie;#?Wr*Hip_RiD7;#RI;7HJI9H5V9DIii38PGM2K#*4Vs($aQLptZzIB;HN~bgI z$#CH6I{f7~h-msbfHk-sXOrOFdFnu;)63Oa>jgZ?;T9 ztwOu8|B*@~VC(_ohSh${~EB}1gXmy+N^!Av%W@vc3eetgbg$_Ogj*j!+SGP@uw?lO(aAZ{Ryoe|D9}vAOO@AaN*W()2kz5e{AV6lN@KJ%BJq#YFNZ<(S7NzJ4IM~PV`OU$?^C@x9 zh%ZM47UlnF37BVM{(k37nL#Nq71i>QNf6R#cu0|)ONh&F^t+8yZ_2;Q(9mfUT=>9*t2lA-&ehq zifbxa$xo(h2VHl3th9awSVu%$@6$#&&J}kr+esG=qggu%>Y7asKa5~~8ys)Qw@#N) z69DnrtVUI9>-We^8*ypwS56J|1Y#Hu$yiLwEqv#5%Qt6clA0~$bnz1Bdv0aB+e_&m zEnQyoppk#C09Ks5KHW!QI`BC7wRvwk;XY09n^ghD3}LTUa5$(~IfQwD`EP`2WY`r- zhbyU;vJ|M2*&AAGl0(oEReFdqF727{Sv?h;ODFjHxqmX(WD+?Hhc+ASUFv=iJzRJq zE)ybg)-bUF>8sJ5j5;|(leU=o z_y&i4Xm*Qn^U3+mY4JJ6Y?==Y5sDu%ryZvnr()*m#hZzv;7L;RmH6ck4Va3 zeSSs2{EeyRa)_r+&S|8#sKvK4bf%x27c^`lySq9wrRkKhL>E?2G;V(g?|vF|sBH+d zZ{{B+nEr(BY3v0}QxH2`q9yc_+GOCOEeIRh9c4HElbzx)G?hNVu*+HejgZhf_IopjB(XWnU(vXYuD1gL^X^JkqfrVVZ^{-%ewR`9ZwHlZ(-ucfu@kux`j-o z<}=<8Tw1lUnd7>CDUP=jD&&G{jyw9>%rhrBm_pv>(|>FT2s7QMjI^j)kBrrqs)P}z zxFHJNe^{x6&}p=)qD!B>`QV#?ZMme1fGi~CB#iggmP&MJT%lho9+U%8CmOE&(^06A z5k^YJ_b2irOIvNtO-&YnMt>^GmxJ8d997MQSD2;R;#_M^ksH6}9O|=)2OGgg0ZAUiiN!+0Z@Q{l$AVGZh_xof zu)GMpSY{B)WxizJuTPqj$Q1t{TW1*-)z&|3 zL689i1`v=O5D7tP$)N?LyGx|I1cz<`>25|E6eJapZs`U=x<HUE?aglNnfu1(Af61b)f?gu^EOJo4>;er1+ZPnjP&e0Qsl_U zS>EQXe)u&056xrbN`r{Ot(CX^K%cisEO#-|g}NL_+%1+9y27D{O+f z8ta8qsUO=^l&du(=b5*mik4O}1vR_X(lNbpq<|0NGLQU6y$toFOSZ3`?Uh5dd-0pw zMw?t{596aD(dv*>znxAU9;s>jXMVi6CJEWBY(l>;d5$bo1P3xa%4dS}JZ+?Wnq3uQ z%}uHOEa{<7B4OP}^JwEd^o@dSC#vA>YG!tejv7_o;w9ZTGzxdG?=S@%46GaUHG}%< zg1>n{6L2oSj)vxqzIub6K+e69p;c3vzF+wvyrythZI_90Hd6DK;#f_K^$qjly&B2E zjHy~)ZgoXHN}IbeC8l4@Lc_s6IDaB$UKiMZN%%IvK&%G~o@AU|X!K1lIfcBD6q%@P z#4#u}4^cazE?h+TJb*ARr1G@eptaS+ZA4*8HB#%eQytvTPIPYXl=YkpZ{2pRTW;vn z{M=7nyZD))S}k|vxxaaG5Seg8utvXF!h8feb>zLM#0O}H;Kp$weyzHGYtYWb?mN|a z)9MEC_dj&Yf~ZA4SjUWgly6X;6pwc7>T_MltJZ!O3Ec)7r{EN5p6LU6**>Wt#fT*c zOG|hE7BDkXanaOpv*mp4S$CVwCNy0NOSo0pH`dxr7`Gth%X1lH;<$KSxN|^@pP1># z#okhTF+1!nTFWf$l5J%HP9|@p<#!2lG@))a&b@EltWNHeu>xIja6z>LQO`1_fL>@+ z85eGn1no?SX1}-CTZ66~#&^`cmy1T+8gS!wK;+oGs{C9o*St*Q&k}TXEbIryEt2v5 zjBX=E6jcwoyG6Ktvmw(kDwuhq4Aj?!f*|6!w{N&(Wjb<rI=Xbyj)Lpyn+mFMGA{weGqb*|Ac@^51 ze9MQy^>^9E8E*i{|5~Hp)|Y8V0q@z;Y#SvQ(h^9~z!3oHp>O_S0r+IP_?1cE{ngD9=1=e$2||7fC%Cuf6SsJUmCbrs|Ksz}(yl-&|;TzCjL_4MyG3YWt!+I%PI zSs>Or#2d>8dC>!c`{S7N^NYKdg#zmu@~+We34@?t=l{eUs<>aM^Zr~lBPpz>(YOuT zPBM~4$iM*5sqdKqPgQLXY~jE^e*6_Q?<|dqv>?nE+qE=d{?Mgso<`aAW#j7R^459X z>S;S(98Ipz@`}jN;&y~zw~1==Ax}5QnWP{h!Rj}~-sA4^?)iyl0$C~a-6E1jDM?~; zSBiuU!x7bExrTm4IIGMH2kCgOo9PIaOBN^x zvl8qJnPkj0AJVgR9*+@Gbn7rZR7+^~@pPc2Or0whx)@cK8s22ic22S74?AZEJsoP zC&SPu`oe@Du&_RujZ{7Iq+WBK2F|y8|kf3MR+b5Qgpr}-JA+CISc%15yHkPxI z(seaUN>RiXy!j2)tx`4_Eu#1MX5R+t;F*2`>phLSP&KZMLRV5f2EOthe$ZoPqqE2h zRRn(*((Cc6V$8<6ayLu%5R##%O*G5$(jOQt=%ml?o;MyX9Ta|cB8w#OM#N=gvuWzb2OTzwcD_(}*(VqBm0`8|cfJn-EHpO+6@FQ)*T&#h?9L)~>ZAn`LINc9;?KG}s?3W?{f z=1EHu<@Q4)WG#ES=%3g0PD`$n#K5!aM0po?*2L4eB2v=)8fijTKfupLOUFa5Z=Ei# zGo8naTDVxH(kHTXoel{8rk$ad)H&@^5Z#04v5Saoir{z@$hHRuec>+OO{V^X>{~7S-qdlm`R%7#iZrp6pe6fPt0dUgZj#Zh<3y*x&kN_XqQ&1}` zsy^K#V0TA8=CO(`K=uC;Gqt+@Sp=Xh&w%FLBvkbL{lm${fx^apzXuOG56d9V4Whnt z#8{$xNP0Nh{RgRc3@HXj!p({7{~6ik*8=m8p+CA|$<_5PDl*0V^6xF-=OyHSVw-R9 zXKBj}()Fw9>S}UzDE*~8&Fy)I+K+eEy0s2j*JrgYNdm4LsbVf-1QJp@;dcUyb#UBg z8NBvm#BlnuM}blB%w|`F(lWu5EXOiXdE~{?Fl_*gW)Ta|cX$%%A>!r6s@u18JM_EX z676pS9@Tx&&SZ5M(0k_h%4WsK0h}8R$_$YGdtqL`0#Ol0J(BoXVys`DbW}cYrNZ!ZsCAXyVx{5KS3_1Z!*_Aua)5IqA<|i9)Z`h+j~!**6AJiLY3m#ol_JgpVETo_6yb=zk{iAWA+%)+d8|Ms;+Bc2bY%zGO5n(H8C%h zzG#;x1I>JW_X(i1iW$5~0FJH~g$Aq?0I9Y0YqLvFJA3S$|Rd$Rm4a+pjCNLh=w%jNJg=Onoph-Q!yg#{D z0Fg-TTe2lEYsbi9$G;(f}almZ%@K~quPjxKY1F68+qT^=o?eEl8`b_b( zHG69alZ!Zb(egsa!Eser$7XGRB3nVBkLoR8P0Dg&3T0UIGRkKByKW6UDJP!4?wyF1 zcPmG~(CLKwI$#)x6WXim!1x5f1m&*Ib`?$E6$c)3x&;~ow4*32z3d{mr=HS)Yc95Q zwdF9c--_w2_9rnk6JeruvS6o^c3k$?+f!wVKPg1K>#WnkMksEg_$r2CCco-ZSNikd z@_zP~x$9?Fp%7nYtC+9Nmo_L+(_}e77pel_g2W%0f0xzHu_$J|OnRnXmg_s3nuuvM4mX3_+f6g!VBt&X&Z3{#ODXP2JC6vU z8%_PQW>gIl6PGmBk-(c3Xq6q4ElL`zQ}xL@V95ga0g1P#5h>5rTe!wvbsSlVMnCX7 zj8BS>SJUaQd4*#GStzx>pXJ|Yd*faCR;nf@GIplgvK&BaOMWkDojO>X1#C2CQ5AMb zmT?<Ig5 z_NwH7#iP_gpOaCUqaM*))e&FuwIB~j=bLtqSQ%jB7=*)ZCO-pE#qN@}-c82$R!!gs zbUf@TZ+0(7ERcyxMVL9viAuRk62Cy z(yL!zo-x z2Tz99Q$Kwo5}fFN--=Xp7`}CnHACnTsBShDTlr zB$L`(`2icv41hI`HF>=!{)A$Zjnh_+L)wWgyh}Yk8`M`}i&>?BYiKWi+>^NlxT2hX zz8q4oY&9!X#8-U=zfJ2rrZmu4BRXCW+ z4%8_u&-*oB>(*J70QLlF&tkCK6nUAVkVc-TrpG~?cK$KBy?Kh#^A`q<61UEGjxQ9$ zSES4rt_wC6s=dlHN0%Q(g!T|CzfS;?`JbmghfS2JOU~BXK9kZst}#B|z3a8AKe!&^ zCDbhOmaRX@1)5cLN#^9f+~fP%ezYzmEB8oQcHCe$X}Bf**tT*@oUmLYpHZRj0plz9}seBN%`Il`S`F8t4XEXl1$H zc7g-|=&IsKM<+p_TyYKPpQ8a9M)TxtZLAWhNqP#OBhAaa{&IBL0u0N6?LU5LPO|`Z zBofY}&ZwNhTAI*TROmkPS#vwT5a$`V(EXcD;Vj&v7~80qsB0j+B2g_kytK(34s?N? z+*pOB&Dqb@>GrF(@+hupiuEs3_+D-&97%a_ib`FG7%u9Gy|_oyct<*E5H(R16F2_5 zHnz~l0TlN@T_ns=p}wjhALwRvAAUsE{uuh{eqYQb#%^L8;XikM2}JMo3gcPdTDt~7 zDJu)}23Hg1UUz)3__G=#%8T|94+72xd%upsrlAzB5W)7FdXh6Et|I9gf~5BTrAZ*T z-*`+Eh(oD`YS>bHS`db<2+{nB%RV{R9KBuzUhm_gi97(y64?$@h9gIJk( z>~jjSmzAR-UH!(b3Pidbc$KmbDA;%`L3+Sk9YJ;82Zg`Zye|&M$lOSbU?n{y3}=wne!Wi+YV9pcY}H(SJMm;I#*>n8Nbkkb!WUvQppKT@ zaOadz3RrZEJa&Cv^x#iQd>ixS@gWoM3k8Q(fZ8Gik>?EMXQN;@H_>B|=)ZeCKRSqt zQ~YC99Y+@y?t86QR3Z)lWbKSBroU%#yqc}A7JAN~FZoFV{*ZSM2*%vE~ApGwHPoh+BoWuapo(c`H^km6Y>=?`RWG)^ug#WH zgWb%|b8=3bTx_)xAvN<4dtU_0?Q!St>uGwP(6FdaYO0CFKeEV_~dXhlswX)NXU%g@1HAckxE8rbWsw zLnayz7KFa?aEsR{7-mfh)zItPuyCKnfsGa-qtG^Er z{;lD!mV$BAGzKs~(U;`os`py2LJcYodDeQFjiHgQKaDecp7@HE!pGMY2FI7LwansJY>u?WnpVZ3F57U;K?Usk z=DR)H0?YC?mY>fxmP>PYliD=}7m#|qUou7vOpJcjsIFCDad)EB$Q&Q0o38d6UR*R2VH$+U1^%r*&Zre(*W%==frj8}V6F{A)0FF5>T>fHMDN zf-tJw>QAR2EE=Ux&gZ>SJat&$V3ADZ8Fj;sRHC}^XMpxtM2TKnWh&T-Vc$_$R;4GL z?aZG4j0X>YPNqnMB_Xwu?o~A+KiI+jTy}T!gTB@N9VuG(8}A(k;~rbGmbZS7%}Gk4^xw1oE6|0P zB`U9WNoi=_b=2izb=5%smXhc{CqZC9S)w(BndVaE=%q;~p&}I`Rl`egQNQaYqO;ns zcQ_B~BukdNV(#I)B20i#ff}v|DiTHX2oMA_wYL>~^bME6`PgR2kTyKjbcn2oUvyZ~8%i*J z_^x;Qu#P|GuV3SLhrJYVoPYdA`()-Ut+I?)Q-Gm(na!d|BmlV1H>!> zWh|CMKc7~v$!@%V0(*M=aQeTSgeu6)X14bIzVB&fjm**Zx#+KV-cN(^guOohv!?%} zC;Eq?txg^Q!B%tV>=_+|MnAYW?8oCFG5ha1=6?p_ow(=@=*73*&^HH_N9UW!z*k?_ z-SSvROQ~F2+YtSYEdDU?jW z>rLyu&C$Hjlf8L;Qh+R-B;zmm2_nbf0Ki)rt(>F$*F=fhnP`CV3g7+~yBRJIKrz}` zzG~fQcX1&gBg*$+`9G1>|9mST5So1wYmWJBKMr6#YyxPHonMub1yACN;J$Lr*GKX( z$#eCtOwH=?!d~t|h%5SAJR*#*FjzEI+{@K$VK0F6#elucoZbD+;9!Xg?PFdj6Al5> zzfbGmE45mOizP48hk#vw+t>C24S<#sE>9$ z(IDUA>t=5xin*wk|C$gGIt5sl0_O_G?dkH`gRug6eM`hJTy%7k+hQQLH-SkW_#Oq4 zq43oiC`T9U40L*%6=zX_J`$??y_u~EEr!r0)@Vq=OS05ZWq96{EdB5mW zi!E#b(7*Aj+_tr5ntd8j5>d5k3&oiR%kt}Mgea3!?u%m=%41Ky@9J5fQ(SrMr;f@Iw~GnneI#G470d_P58y|A+LSxd6(S zXVQI)wYa~gX;AM{kjSFh$HsZnL5C?ZQdhaE5OD%9*He=}V!$>!CWcD@`g~#2(T&nh zlms(ssIWj8E`q}7j(gJiPnPLVUjR^eITr1&&q?~UIe49OhL9gj|60)e^Mp$t*LjPZ z_;OZ$e=qUODv%jcSdA7AWMzUmYMhoOxH~9?+)LeX*mr?uD^NQLqdzJN!E9hk3^(UN}A#pe95OAs*cjEHY)vcptQ3sR2yR`rFHG^X0%0F2FoM-1>`Mvp|jn zMV_rN#>t5|G62bQ;QeQLF7ZhFBXSccz|4m-9Tzc9Nu=c2S=M5~lK*@)B9NJf_(!sR z;3-?-({glB@;iNcw>>qODe)=1{ZwEXq`u?#rqa9|(h_zYPeh*MvHt>TsFl;kR8 z2rAl4f3=@2sCPxATYNMEvM~i|XLQWVrEh;#m~`Kd@#p{MZvzO+dJdRq57YrW;V3cZ zOfZ?ACahli{MEtfch}*zb1RR_TZtoTdn0xsDnC7pl|bd(r%&mKW5*=Mz6ysycf{wv zo2J+;{OBOfeGCb~-AKs|IsTnJ&OOw6|8rIN(=v>0C!&A%pahbD=d7=h{ohrVCAfg; z;&C=k?1q((tOJn*t)m);FPP7yOq$ODOD*=o`6s~p&=(E39e9>M>rL9IRfvgO&(&3i zXcw!9XM1dr>%Xv{{G4`Qy4P*E30m z@kWp1HNcCSf=U1}{#c7p#z+_s-S%%CeX^9G%>%X49u4G*P8;x~lJQmXzV=9kgs)~c zdNY*)J9qMJZUkGEZFfV_;k(02&&NpaF)9yeI##2Ji}A_@L*CUBffhs;Yhl{7k#oJq zXPsxNLpie>_8&rzbD{&3o}<6<6oWfc*6ze+v4E(f&$e#IC6KQD02qI5kcPfsyS6|7 z-4J(vF^aC{%i!wbghRBuhjXKxUOJK^L9-eD zVdJcq30~86e;96Hi3n0bP%w?PrtpjA2DApBHJvYTi}!_a5AVCV--3)_Q)@zwqE|D+ zYawJtu@acLx;41622`Kzhq$Y`8cUs^?ik7CGfxvN*pu+|-P6UAPJStxQbmOrdY#FJ zOL*k#)xRApJAdrqx*@lz^V#1U{++$gR+YK-b$#HB8FE9zqj;MZiO3Rt{iXZcgslyY z{L0PdW(ViLFJ$1w%@jiGR-9rFWkY6$LzJG<4pqbB9JXGi7M+_yBaZ@SZ^xkFa@Jg2~V=Iu?Pt_kQ_KLuEjsB8IxR|x~K&_bY8$TRX_ z0b3y4U8_fAb6Y;MDx&fHL$^wf&ALYRdt5@KTU4}9%r*oZa?nBZNWy*`8du=hidVnY%7B<5aT#mfPL(qqTB4&#^X-MvU-TYN<|T`$bN{ zkArsHbpRZm4A>Lp09yU->Ue6O8d;5QVt6lWVHrry$TAuvz#p(o6-5z90ViD&Y4eU5 z#*W2m_NJmlu-ySHwNgb?_Bq5{{kVME$VYJss09oeer-C_yIPL8?D=kiC^~-oENseoA7JaM#I7aZ}T~(#Ep~6HqQw>l{w?qP-*X9Xw$lfy+HwV zXL%n6URsAykJ(QcSgZf=-&ueoW%@YV=bHAto@KMAD5$Bo#3dkReM|P)a1tX8n&iD$I0@WhqKo zf@ufA?pr7T_%b>qxElo?E*xxs4kmsb%pb;!Dd>sek4J|iLFu;CdX7!EO&v!-!v~#EZ^K9rONnIpRi0SE zmsty-x?T$Ar?w)53co^w&oI?R4G!|kP+9i^^A=U0;Pc`u0EpQbf)l8iUViwbS*VbP zQI}fM4iU#)#wa62$E9HB(X=Y$ShWQXYuFkn7ddd6$`I?2`Mlb>M&>Gn!MTOW9xPg8 z0Q+UejmfS)6ec2rxE2@0Pc~a#yGikW2~9H= z&x^Tq<(EeNyq{Z}gf+P_#V=lS;9CE4WZiz^B$sh!Zum=bQ0YB}H$%3tEQl6N@$8J4 zE*SiQR=rq-ju=W+zQXXa|Jvi&{v{+Q%trxymG2EFnm&-Z!pOOiaN->6Wkv5@@bO~M z9ud1R)Q*`-gcOPd9 z;}t)6q5U-z+lt>Gjax+h9>JovId%t}Uiuy<&LEM_zNSfEJ{|fKB#XL;Rn=qt)O&iy zTlF8+(h8NM#s17z8^0{Ko}Jzyk1Sh*E(`v<59^WyK!#(hY!oG%fY_QA-TUEXL5dNP z!u8y<4uE~+@U`FhMf5#RkE69${a$B(tRdmj{BI?;+aJpCkv-*Xghp=%x8@M*jx9G4 zRUPXXeKm}&#IUx$&ZM^nyA*SGW*6SxTxFbv2_o2I7Zr$+V!VujZd((T@2(GdpFGSd z1F8>NPrd?16qhMoOWmebdsF2{okm;=AV)ytBp(Wv7ThBK^9StI2{v;7>pb#7FAB^z;Xh$8j% z%G|Q?-DOIJW0e4Qx}zNkrt&@f!)^vt-Zm!C@RWf$Bz;Ge8e+;TzW4u@C50 zl7P)Z`C#aL#uBbeIU?8PLBEEgAX-?wrab%;s!InMDD=MgA*Kz$hJQy)t|zm7hv1HP z1N51hBJ4og^(L1@8DjsFybYFzNo-mwQ+Bg-^{Of~(%;3eyJa!)nfj8ReK!QO92 z#N+)$9&d(dJn4CZ8j$2ZTKyBOUbsA&pYOf0ahU zs?8Y#Ju4;TnPCVHNol}Z9u(tgIlDRi9~HKC%JdvSnDVqnae|TiiwV5GrSk)ab9#UL^avDK|vW)7ah7DzMX&|f#bKu3-TegLoA>#j6Z6}BKMFFC92(c3xIfqVuJu4U-7-*x z&5)V@5nCi4#!>gnzTOFe{`COm?%t4RQf~X>=T!uBk$Y0PazZPaPs)!B@*$V@YL&rI z=YFJG^E*}U-G{>qcXE88691e*Fld+d2kK~(3eI19gjfqL76Nrp<$OS?_MIF~CVY6E z>W%D-F}+6Ab#;KVX$R6T3ZwQ<{RysVqqCW49O8hK#}botYfp}{RsETusX-_xe=bJ-^PrYYhVaDa`wo}SEmw(gbuQH1 zL2*p;%_UX6ZVj*|U(RZkq`W3s+C?SH(9qnbegag0%h6)Y4`pM$GeQ#)t zGFSAYfmk-6whg-ArytIhim-EhwBeF^X0n3CdFH(2uMWsU9@j=HLdx@lQg9zfIzm=E z35VDP2%HaccTkg=K=z>&Ke&TnT(EiO5tFgTCp&ifysDdpoH>}!s@qd4n(Sm3Cr72< zoG;DVf?yZNc?x4d``LV>kr7igF{45S0@Lf84o~=W8Uao9VkG={7)0N`vb>-LGuQAd zAMSO}H#C<%zocrCK`;Fb??Wq;MJ29kU%&^OriB0D;m42(-g-K@cCLxzj^20Cr zY`i@M@Jvcuw>P7@0>zhXT}=u;YrAXb`hkUr!_^-7HgwE_Q-QL<4)TP$(L9;o*$>bB zIO_2pfq{OHKjTF)jX=N7Mq+@EvSZ`n2cLmtN9IGr0`4!_Y2f_$rbAUoi+1XqkjG<* zdlDhIk9(Ja{XZE2_gm5Ifg-%!Wb&R6%iul@+~3aJl$ z){@?Mq0inw?GUFy(&_Sr_j4kS&P$f0c)0>x+3d{R4R1_)6aOP`1)Ao}*eCzK>U4oL zn(ZvY_LCi(46O?t&SPX9bHd|4i0AC;# zJG#O`ngZ8M59K@-#Fuv3!1b@(!`bqD?SgmzM`nP7fPG=WF|%0Z7U6xhTbn$*eGdX! zzNd(L9-tUG9?YBxU6P>2BFvsT_62}`8@ZXbXHB%PmW{4~sU*(YonetHyY|Fnp67xn zc}nvx20PGVm8i%MT`|uSFSHx5B(w%zx01nKhSyhTDFUn+~sWzfTIy%2Y+ z|8#da`7DZ6K1uC!h+2$4PHKzSG><&796Z|8j=cb2E=1y z-)yzVUlD$YJ-Nmm?w2AnG;0U58B%_Jn>JzvvWi?L+d$(A zPXKPYg#y*E0D>x`^9fX3LGbXgR*SC>D!VzjO1^A@eh()==@Gh>@ZCX==xe0Qx*|9F zBC08X?a#Xak^s`q`55|l^IpSET<$wMC~xO;pw4ELO92!>qZ==`zI+F_>PT0-S&6xK z0H`zjg2{t` zgYhX+?t*a=@KQSB7DYQa$g~35si%H7+s2APk(3^@4^^=YzL=6;1Gc3Md3T<<5g;+} zcHK1^(Pn&ml)}g%d@>^WfzX`RKy?pLW0uPAHF>TB^yW@`8Du|-&s|Y@YP6# zUS;K=TbbE}x2EUfYA3O1$H#X?$OSYCTv;Fo0G!;FE0p~2=Y3LY1d5`pabFV~Vq336elMoK83iK7alymN-+($bgM1FK#>D;F?))Y5rtS0sa(5x)u~XSIAdCcZ zW{!b)dQ6NhATGD9nv8JigYxS%u#>b0I`Es#$_= z@qnew(4lczdeg<0O#h*Hm@~IfjUh-Dr2afpAwinNMoSYu!R)1k9pdfTJ)fBY3i%&2sdXt($UllxVp7FhixT!gOf2v~oJ*Ta)?)tx zf<;>h^|xTuNd<$h^(l9TXKawS_vJ69$jU)}^MPtVoG6xH+D>1_GnGTd0-)&9hf2#? zPk+r)yd^Z_h%hIhyNc6!^9!g~JfwmC0%*`V8^8kR^}ROPQAWCd8i zzB#n=0Nj^vyh@6h&ao_9t^7F4*PA6(R!tjs4A+FTQhR-FPNxe4fQG@V$9RvBgk}bh zKi2Yz95QBp7Z1T9<60j0=1N-ZSBDstZkVD#1Bs6+Uc)T-{ern>2~38tzFO52euQZO zHGsZ~w#1kp#{+Ghgt|ucF98AC@ID4MkD^48w;2h3=H_p=p zq72U440IS5jtF*!SH>>yDr$%+uMj&7&6k49xJ2iYd$7HWGl&tX$AXYWb}8t(XWE;- z7~2}Zot%7!HAyik;-TuUa2ICC+dD?@)kfj@P49OD%9al$e*aypT{@9iTGEvzwQXog zv}%=$IxR$wFN!Mxc>l_mt$q^&>;L%@b_>}73Ep~3h^0`bZXN}`!NltH_O@QU?XNB z1_p-1Cf>d_{ZA>|5)A8~)&XUvzf&LZwo36#mM2RG6&YDYwB2uCBP)AU*m&@k)9mW| zE+dc09^$I)wLImoFJ0Aba6%(x9s{f27w*)-q&UaDc$8D}&5cNmGTu|{f2`>LoF6A& zGyHg!BvpE^y1ci^j<9DfqL;)W{wAG1L54BG`7LIak5(#@V>#&OFbntBksAte;IwPu zh=r=~5l7ui2V>xLuZGTxCZd|w7!^#=LuH?((}#sO@BcPsCop;j_r0{v_<5{*4_YXm zV&qwZ&9f5`$hYADz6x|w2q1?v&g=)>ejWs+XE8rJOS9dB<+vVS&vXw%I>%(X{!Y1yl8Cd-N0h*^G#Pj4<+BjU+nlUbVF~k zCFoyKloOl_dgaww(#`(#`6!K-Agusy`v}8O4Qm9&JG%Mw5BSulj24T7vOp!^iwYT> zNbpZ8uQRoPb4TA}N_~}jWMRfPC59IS&Q`YzUU$OJ^b74)(o9fs)_+T@MVRO_Kju8Q z2}oG9;;#0ZP;oyz6^t_6Xn#1BKSjDgIKg%t3voZ>aW=_zlzBKe&A2e@KXtqWS`&uQ zPY66xbt+vVuUr)1Iwg#m;g8oEuQT(GPx(bX$@8(_dD6!IaIM|Z9yG_NmZ9XePnz83 zl~X#^O6J{ph|%pMSHKm|H@JztYCgOttd#Q4i_yVFIDLWuX_{7P7C0IJtxrhJk zFjNaW3R@x-!6ZDZUZb6Q61UJJV140E97t5?Z>7$GcA^a8Cm?%1qUP~bx(aZF!>{7*>^vF0oy2b zKNs7Tu7BM1PKYg=293CgdS^3`$}gMX(37av;YM)xcO#ZSX#n3%$Oe8w>;IOBGiN~; zb5{S;^bvphQq9_j2o6OC#}{9C9K9sw2%EIj8l)5BCo(#4Tkz#U)%ce%p0xft;_Rgn z4YLiayLdY9_$C4D_t4~IeT7G|>yA?eb;+iOJ>|gg7^K zsblt9iad@=NtqlPO?@JEB&6#0f#8B)`i);M48ra^(Xsu$vGJA+S<(=*ekX<0EgP`1 zGykTSm44bQckZkubI}q)vVL%7Jkopn{KnDbj9#22-NEA!%h=;jPBhReqB5ssklAve zOx4r+jMnKIbdlc+(Q%Hx{d7j}oPV4LciknJB)$dz8@i-4QBX(5rC2uYl<7{lYJ&oJ^{^A|c5t!H9%ATg?h@z}+0 zZ;T+yl2k_Ena~g16pgTzdqEfcanZ(H=8u%BBF7jJH^#<6LXc^pn+;+W{d?6vnI zUT3e^mf99NqCZTBD{Z^wu}!?Fk5PW-!ITc4UL@mG;<-zRGv@g|1~+9grBq55v`o6X zFl*gz2_PB1-?!X@^h>zb?W}%RD=dH4uztt)+q2R9=5_3m^(*gOC!QOuKfoIT;5g7P z5wQ5tUX8k5euD@LpX)#)PkaYQhh^cqG>GNR<+kP$0@3SOb^1*1r318&Mdw~r3$e$o zF9n=|WX)x$?U>nglR21zk;+I6P@~GF-ZEU|e+#e;8>U<;ZO6`O9oO^tHCqrjJsy+4 z3e1~g@*NDO^KvWu)xBogGt02@5{fwi;oD9-#5zhxr^Mwk7EiYgPRV4$o5Sy*nWj*x zvgFV<*WNLbqt5+XAo7p?e&AR%I3{fKJBlwg{`{)ukPwkDQ_m@TB}rkmQ}^sBYKpw? zbw=_)#Jh>8l-sNMmPCZHuS|>2_p~>IkjdU-olm!iwp&~4o~aOF`=ilSflL0C3#nnW z4+NXk5wKZ)IE>%A|v%RN%Y-_J^<$4uCvo8~KY#ZJCC?=w( zr(@LvI=8*!Tya)mCX#>XO@rtG8eq0-cP+L=5I^OusFV>YM$$YR@g5$HDXY_w*jBAe zaYwro`#aaKd(s$`E?3uG$}estM1k&zJ~blco7FXs>p#xE)awFAA~A?ns1l9LeEceO zK5~Df?-DNq|3{2$2Jl>DeU1OT)zIjSd$^KxK? z8$V`ib^XHmV|1GR@Ar?jdfh&zBv2vDpF(62kMXHRq#2dc9U95l^cW*Z+52m#*lj0L zd%0`|o|-DY$+i((UU94R`p3i?J2VPMbx=Tc0pPsJ9|$|@45$n zPeRlfpVZSysP+(5{0nVfH=0U)zH~$l-kGed@4MbU%eL#do-&Bk2Y*zA8*q;Rmqr8D z*&&Nw=nz5rg2>=zl`aM*@+e}&pVnU;qftvK8>(BV40k|R0tCf&#zY>YTNR=>ctqJu z$e{$GFfmXYJ@sDaauDUazDxinn-rAypmFi^�uuaJGFr-q#inw9BBZA4i0C7XZxt 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