From edbd1780527cdad56100bc1bf5b553f9e3f83035 Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Thu, 14 Mar 2013 15:19:10 +0900 Subject: [PATCH] sync --- CMakeUtils.txt | 71 - ace_client/CMakeLists.txt | 2 - ace_client/include/ace_client.h | 63 - ace_client/include/ace_client_helper.h | 139 - ace_client/include/ace_client_types.h | 116 - ace_client/src/CMakeLists.txt | 86 - ace_client/src/ace_client.cpp | 634 ---- ace_client/src/example/CMakeLists.txt | 26 - ace_client/src/example/ace-thin-client-example.cpp | 33 - data/wrt_widget_default_icon.png | Bin 16526 -> 0 bytes debian/wrt-dev.install.in | 2 - debian/wrt-test.install.in | 22 - debian/wrt-test.postinst | 24 - debian/wrt.postinst.in_all | 15 - mockups/AceDAOReadOnly_mock.cpp | 36 - mockups/AceDAOReadOnly_mock.h | 177 - mockups/PolicyInformationPoint_mock.h | 32 - mockups/PopupInvoker_mock.cpp | 24 - mockups/PopupInvoker_mock.h | 49 - mockups/WrtDatabase_mock.h | 36 - mockups/dbus_client_mock.cpp | 28 - mockups/dbus_client_mock.h | 127 - mockups/event_support_mock.h | 49 - mockups/rpc_client_mock.cpp | 25 - mockups/rpc_client_mock.h | 83 - mockups/widget_dao_read_only_mock.cpp | 25 - mockups/widget_dao_read_only_mock.h | 67 - packaging/wrt-engine.spec | 212 -- pkgconfigs/wrt-ace-client.pc.in | 11 - pkgconfigs/wrt-engine.pc.in | 11 - pkgconfigs/wrt-plugin-api.pc.in | 11 - pkgconfigs/wrt-plugin-loading.pc.in | 11 - roaming_error.msg | 1 - scripts/DESCRIPTION | 2 - scripts/wrt_install.expect | 32 - scripts/wrt_install.sh | 51 - scripts/wrt_kill.expect | 30 - scripts/wrt_mount_nfs.expect | 30 - scripts/wrt_test.expect | 29 - scripts/wrt_test.sh | 67 - src/API/DESCRIPTION | 2 - src/API/api_callbacks_translate.cpp | 163 - src/API/api_callbacks_translate.h | 79 - src/API/export.h | 21 - src/API/wrt_api.cpp | 733 ---- src/API/wrt_api.h | 721 ---- src/API/wrt_config.cpp | 86 - src/API/wrt_config.h | 63 - src/API/wrt_type.h | 235 -- src/access-control/CMakeLists.txt | 110 - .../DEPRECATED/AceUpdateEventMessages.cpp | 21 - .../DEPRECATED/AceUpdateEventMessages.h | 28 - src/access-control/DEPRECATED/session_manager.cpp | 160 - src/access-control/DEPRECATED/session_manager.h | 60 - src/access-control/DESCRIPTION | 2 - src/access-control/ace_settings_logic.cpp | 235 -- src/access-control/ace_settings_logic.h | 69 - src/access-control/attribute_facade.cpp | 871 ----- src/access-control/attribute_facade.h | 98 - src/access-control/i_ace_permissions.h | 80 - src/access-control/security_controller.cpp | 115 - src/access-control/security_controller.h | 135 - src/access-control/security_logic.cpp | 123 - src/access-control/security_logic.h | 84 - .../server/ace_settings_server_factory.h | 44 - src/access-control/server/i_ace_settings_client.h | 64 - src/access-control/server/i_ace_settings_server.h | 38 - .../server/ipc/ace_settings_server_factory_ipc.cpp | 29 - .../server/ipc/ace_settings_server_ipc.cpp | 337 -- .../server/ipc/ace_settings_server_ipc.h | 142 - src/access-control/server/ipc/oim_generator.cpp | 132 - src/access-control/server/ipc/oim_generator.h | 94 - src/access-control/server/ipc/oim_messages | 48 - .../null/ace_settings_server_factory_null.cpp | 28 - src/access-control/simple_roaming_agent.cpp | 92 - src/access-control/simple_roaming_agent.h | 55 - src/arch/CMakeLists.txt | 19 - src/arch/DESCRIPTION | 1 - src/common/DESCRIPTION | 1 - src/common/ace_settings_address.h | 29 - src/common/force_stop.cpp | 118 - src/common/force_stop.h | 31 - src/common/new_strdup.h | 34 - src/common/wrt_db_types.h | 38 - src/common/wrt_error.h | 191 - src/domain/application_launcher.cpp | 211 -- src/domain/application_launcher.h | 89 - src/domain/child_protection/DESCRIPTION | 1 - .../child_protection/child_protection_agent.cpp | 153 - .../child_protection/child_protection_agent.h | 107 - src/domain/common_error.h | 46 - src/domain/dnet/DESCRIPTION | 1 - src/domain/dnet/dnet.cpp | 398 --- src/domain/dnet/dnet.h | 136 - src/domain/efl/AutoSavePopup.cpp | 48 - src/domain/efl/AutoSavePopup.h | 36 - src/domain/efl/CommunicationBox.cpp | 76 - src/domain/efl/CommunicationBox.h | 71 - src/domain/efl/DESCRIPTION | 1 - src/domain/efl/base_browser_setting.h | 44 - src/domain/efl/combobox_picker.cpp | 264 -- src/domain/efl/combobox_picker.h | 97 - src/domain/efl/evas_object.cpp | 234 -- src/domain/efl/evas_object.h | 654 ---- src/domain/efl/regular_browser_setting.cpp | 59 - src/domain/efl/regular_browser_setting.h | 38 - src/domain/efl/roaming_agent.cpp | 296 -- src/domain/efl/roaming_agent.h | 148 - src/domain/efl/vconf_browser_setting.cpp | 98 - src/domain/efl/vconf_browser_setting.h | 44 - src/domain/efl/view_logic.cpp | 2053 ----------- src/domain/efl/view_logic.h | 298 -- src/domain/efl/view_logic_apps_support.cpp | 201 -- src/domain/efl/view_logic_apps_support.h | 57 - src/domain/efl/view_logic_keys_support.cpp | 28 - src/domain/efl/view_logic_keys_support.h | 56 - src/domain/efl/view_logic_password_support.cpp | 128 - src/domain/efl/view_logic_password_support.h | 37 - src/domain/efl/view_logic_scheme_support.cpp | 286 -- src/domain/efl/view_logic_scheme_support.h | 51 - src/domain/efl/view_logic_security_support.cpp | 97 - src/domain/efl/view_logic_security_support.h | 46 - src/domain/efl/view_logic_storage_support.cpp | 62 - src/domain/efl/view_logic_storage_support.h | 36 - src/domain/efl/view_logic_uri_support.cpp | 119 - src/domain/efl/view_logic_uri_support.h | 37 - src/domain/efl/widget_view.h | 162 - src/domain/efl/window_data.cpp | 592 ---- src/domain/efl/window_data.h | 188 - src/domain/global_context.cpp | 48 - src/domain/global_context.h | 37 - src/domain/popups_server.cpp | 166 - src/domain/popups_server.h | 64 - src/domain/powder/DESCRIPTION | 1 - src/domain/powder/powder_syntax.cpp | 25 - src/domain/powder/powder_syntax.h | 132 - src/domain/user_agent_profile.cpp | 34 - src/domain/user_agent_profile.h | 33 - src/domain/user_callback_controller.cpp | 39 - src/domain/user_callback_controller.h | 71 - src/domain/user_callback_logic.cpp | 49 - src/domain/user_callback_logic.h | 223 -- src/domain/widget_controller.cpp | 184 - src/domain/widget_controller.h | 146 - src/domain/widget_launch_struct.h | 156 - src/domain/widget_localize_model.cpp | 79 - src/domain/widget_localize_model.h | 45 - src/domain/widget_logic.cpp | 627 ---- src/domain/widget_logic.h | 142 - src/framework/DESCRIPTION | 1 - src/framework/framework_efl.h | 24 - src/framework/framework_ewebkit.h | 21 - src/global_logic/global_logic.cpp | 41 - src/global_logic/global_logic.h | 40 - src/global_logic/global_model.cpp | 188 - src/global_logic/global_model.h | 110 - src/plugin-service/plugin-loading/CMakeLists.txt | 90 - .../plugin-loading/efl/javascript_functions.cpp | 116 - .../plugin-loading/efl/javascript_functions.h | 46 - .../plugin-loading/efl/js_function_manager.cpp | 68 - .../plugin-loading/efl/webkit_interface.cpp | 473 --- src/plugin-service/plugin-loading/explorer.cpp | 266 -- src/plugin-service/plugin-loading/explorer.h | 152 - .../plugin-loading/js_function_declaration.cpp | 37 - .../plugin-loading/js_function_declaration.h | 67 - .../plugin-loading/js_function_manager.h | 58 - src/plugin-service/plugin-loading/js_object.cpp | 36 - src/plugin-service/plugin-loading/js_object.h | 53 - .../plugin-loading/js_object_declaration.cpp | 129 - .../plugin-loading/js_object_declaration.h | 135 - src/plugin-service/plugin-loading/plugin.cpp | 192 - src/plugin-service/plugin-loading/plugin.h | 80 - .../plugin-loading/plugin_iframe_support.cpp | 180 - .../plugin-loading/plugin_iframe_support.h | 57 - src/plugin-service/plugin-loading/plugin_logic.cpp | 689 ---- src/plugin-service/plugin-loading/plugin_logic.h | 146 - src/plugin-service/plugin-loading/plugin_model.cpp | 88 - src/plugin-service/plugin-loading/plugin_model.h | 122 - .../plugin-loading/webkit_interface.h | 100 - .../plugin-loading/wrt_plugin_export.h | 346 -- src/plugin-service/plugin_api.cpp | 453 --- src/plugin-service/plugin_api.h | 82 - src/plugin-service/plugin_api_controller.cpp | 74 - src/plugin-service/plugin_api_controller.h | 102 - .../plugin_api_controller_data_types.h | 97 - src/plugin-service/plugin_api_logic.cpp | 147 - src/plugin-service/plugin_api_logic.h | 64 - src/popup-process/CMakeLists.txt | 51 - src/popup-process/PopupEnum.h | 26 - src/popup-process/PopupInvoker.cpp | 170 - src/popup-process/PopupInvoker.h | 55 - src/popup-process/PopupSerializer.cpp | 56 - src/popup-process/PopupSerializer.h | 33 - src/popup-process/YesNoPopup.cpp | 82 - src/popup-process/YesNoPopup.h | 44 - src/popup-process/wrt-popup.cpp | 275 -- src/popup-process/wrt-popup.h | 86 - src/profiling/ace-dependencies/build.sh | 23 - src/profiling/ace-dependencies/runTests.sh | 46 - src/profiling/ace-dependencies/src/test_empty.cpp | 19 - .../ace-dependencies/src/test_openssl.cpp | 41 - src/profiling/ace-dependencies/src/test_pcre.cpp | 41 - src/profiling/ace-dependencies/src/test_timer.cpp | 38 - src/profiling/ace-dependencies/src/test_xml2.cpp | 42 - src/profiling/ace-dependencies/src/test_xmlsec.cpp | 42 - src/profiling/script/test-widgets/wac2_0Test.wgt | Bin 57770 -> 0 bytes src/rpc/security-daemon/api/ace_server_api.cpp | 32 - src/rpc/security-daemon/api/ace_server_api.h | 46 - src/rpc/security-daemon/api/ocsp_server_api.cpp | 32 - src/rpc/security-daemon/api/ocsp_server_api.h | 45 - src/rpc/security-daemon/api/popup_ace_data_types.h | 47 - .../api/popup_response_service_api.h | 46 - .../popup_response_dispatcher.cpp | 102 - .../popup_response_dispatcher.h | 44 - .../popup_response_service.cpp | 96 - .../popup_response_service.h | 53 - .../popup_response_service_config.h | 44 - .../security_daemon_dbus_config.cpp | 33 - .../security-daemon/security_daemon_dbus_config.h | 36 - src/rpc/ui-process/fake_rpc_connection.cpp | 211 -- src/rpc/ui-process/fake_rpc_connection.h | 104 - src/rpc/ui-process/rpc_client.cpp | 148 - src/rpc/ui-process/rpc_client.h | 112 - src/rpc/ui-process/rpc_server.cpp | 128 - src/rpc/ui-process/rpc_server.h | 83 - src/rpc/ui-process/ui_process_rpc.h | 36 - src/setting/CMakeLists.txt | 16 - src/setting/webapp-detail/CMakeLists.txt | 50 - src/setting/webapp-detail/detailview.cpp | 213 -- src/setting/webapp-detail/detailview.h | 55 - src/setting/webapp-detail/edc/CMakeLists.txt | 22 - src/setting/webapp-detail/edc/defs.h | 27 - src/setting/webapp-detail/edc/main.edc | 58 - src/setting/webapp-detail/feature.h | 49 - src/setting/webapp-detail/mainview.cpp | 198 -- src/setting/webapp-detail/mainview.h | 62 - src/setting/webapp-detail/permview.cpp | 550 --- src/setting/webapp-detail/permview.h | 114 - src/setting/webapp-detail/tizen_feature.cpp | 79 - src/setting/webapp-detail/tizen_feature.h | 52 - src/setting/webapp-detail/ug.cpp | 111 - src/setting/webapp-detail/util.h | 26 - src/setting/webapp-detail/view.cpp | 87 - src/setting/webapp-detail/view.h | 40 - src/setting/webapp-detail/wac_feature.cpp | 87 - src/setting/webapp-detail/wac_feature.h | 53 - src/shared-data/widget_state_property.cpp | 76 - src/shared-data/widget_state_property.h | 71 - src/shared-data/wrt_shared_object.cpp | 179 - src/shared-data/wrt_shared_object.h | 142 - src/utils/DESCRIPTION | 1 - src/utils/FreeLogic.h | 69 - tests/CMakeLists.txt | 55 - tests/DESCRIPTION | 2 - tests/ace_client_tests/CMakeLists.txt | 74 - tests/ace_client_tests/ace_client_tests.cpp | 29 - tests/ace_client_tests/test_cases.cpp | 733 ---- tests/dao_tests/CMakeLists.txt | 30 - tests/dao_tests/TestCases_FeatureDAO.cpp | 218 -- tests/dao_tests/TestCases_GlobalDAO.cpp | 470 --- tests/dao_tests/TestCases_PluginDAO.cpp | 403 --- tests/dao_tests/TestCases_PropertyDAO.cpp | 147 - tests/dao_tests/TestCases_WidgetDAO.cpp | 868 ----- tests/dao_tests/tests_dao.cpp | 56 - tests/dao_tests/wrt_dao_tests_prepare_db.sh | 140 - tests/detail/efl/loop_control.cpp | 74 - tests/detail/include/loop_control.h | 42 - tests/engine_tests/CMakeLists.txt | 62 - tests/engine_tests/TestCases.cpp | 278 -- tests/engine_tests/engine_tests.cpp | 33 - tests/smack_tests/CMakeLists.txt | 36 - tests/smack_tests/TestSuite01.cpp | 90 - tests/smack_tests/smack_tests.cpp | 61 - tests/smack_tests/test-cases/CMakeLists.txt | 28 - tests/smack_tests/test-cases/smack-test.xml | 40 - tests/smack_tests/test-cases/smack01.wgt | Bin 17760 -> 0 bytes tests/smack_tests/test-cases/smack02.wgt | Bin 17759 -> 0 bytes tests/smack_tests/test_tools.h | 272 -- tests/tests_common_lib/CMakeLists.txt | 24 - tests/tests_common_lib/efl/CMakeLists.txt | 86 - tests/vcore_tests/CMakeLists.txt | 92 - tests/vcore_tests/TestBase.cpp | 146 - tests/vcore_tests/TestBase.h | 76 - tests/vcore_tests/TestCases.cpp | 485 --- tests/vcore_tests/test-cases/keys/CAbundle.crt | 3677 -------------------- tests/vcore_tests/test-cases/keys/README | 2 - .../vcore_tests/test-cases/keys/filip_rsa_cert.pem | 62 - .../vcore_tests/test-cases/keys/filip_rsa_key.pem | 18 - .../vcore_tests/test-cases/keys/magda_dsa_cert.pem | 90 - .../vcore_tests/test-cases/keys/magda_dsa_key.pem | 12 - .../test-cases/keys/ocsp_level0deprecated.crt | 31 - tests/vcore_tests/test-cases/keys/ocsp_level1.crt | 29 - tests/vcore_tests/test-cases/keys/ocsp_level2.crt | 29 - tests/vcore_tests/test-cases/keys/ocsp_rootca.crt | 18 - .../test-cases/keys/operator.root.cert.pem | 66 - .../test-cases/keys/operator.second.cert.pem | 64 - .../test-cases/keys/operator.second.key.pem | 18 - .../test-cases/keys/operator.second.p12 | Bin 2043 -> 0 bytes tests/vcore_tests/test-cases/keys/root_cacert.pem | 64 - tests/vcore_tests/test-cases/keys/root_cakey.pem | 18 - .../vcore_tests/test-cases/widgets/access_info.wgt | Bin 529 -> 0 bytes .../vcore_tests/test-cases/widgets/blankWidget.wgt | Bin 18859 -> 0 bytes .../test-cases/widgets/fingerprint_test.wgt | Bin 3990 -> 0 bytes tests/vcore_tests/test-cases/widgets/multisig.wgt | Bin 11169 -> 0 bytes .../vcore_tests/test-cases/widgets/not_allowed.wgt | Bin 510 -> 0 bytes .../vcore_tests/test-cases/widgets/recognized.wgt | Bin 19302 -> 0 bytes .../vcore_tests/test-cases/widgets/recognized1.wgt | Bin 21140 -> 0 bytes tests/vcore_tests/test-cases/widgets/save_cert.wgt | Bin 19747 -> 0 bytes .../test-cases/widgets/unrecognized.wgt | Bin 19323 -> 0 bytes tests/vcore_tests/vcore_tests.cpp | 58 - tests/w3c_tests/CMakeLists.txt | 433 --- tests/w3c_tests/InstallerWrapper.cpp | 88 - tests/w3c_tests/InstallerWrapper.h | 34 - tests/w3c_tests/TestCases.cpp | 2902 --------------- tests/w3c_tests/W3CTestBase.cpp | 730 ---- tests/w3c_tests/W3CTestBase.h | 128 - tests/w3c_tests/download.sh | 22 - tests/w3c_tests/show-diff.sh | 30 - .../test-cases/i18n-lro/001/i18nlro01.wgt | Bin 1483 -> 0 bytes .../test-cases/i18n-lro/002/i18nlro02.wgt | Bin 1513 -> 0 bytes .../test-cases/i18n-lro/003/i18nlro03.wgt | Bin 1506 -> 0 bytes .../test-cases/i18n-lro/004/i18nlro04.wgt | Bin 1498 -> 0 bytes .../test-cases/i18n-lro/005/i18nlro05.wgt | Bin 1262 -> 0 bytes .../test-cases/i18n-lro/006/i18nlro06.wgt | Bin 1494 -> 0 bytes .../test-cases/i18n-lro/007/i18nlro07.wgt | Bin 1514 -> 0 bytes .../test-cases/i18n-lro/008/i18nlro08.wgt | Bin 1509 -> 0 bytes .../test-cases/i18n-lro/009/i18nlro09.wgt | Bin 1272 -> 0 bytes .../test-cases/i18n-lro/010/i18nlro10.wgt | Bin 1512 -> 0 bytes .../test-cases/i18n-lro/011/i18nlro11.wgt | Bin 1530 -> 0 bytes .../test-cases/i18n-lro/012/i18nlro12.wgt | Bin 1522 -> 0 bytes .../test-cases/i18n-lro/013/i18nlro13.wgt | Bin 1280 -> 0 bytes .../test-cases/i18n-lro/014/i18nlro14.wgt | Bin 1483 -> 0 bytes .../test-cases/i18n-lro/015/i18nlro15.wgt | Bin 1500 -> 0 bytes .../test-cases/i18n-lro/016/i18nlro16.wgt | Bin 1506 -> 0 bytes .../test-cases/i18n-lro/017/i18nlro17.wgt | Bin 1498 -> 0 bytes .../test-cases/i18n-lro/018/i18nlro18.wgt | Bin 1261 -> 0 bytes .../test-cases/i18n-lro/019/i18nlro19.wgt | Bin 1527 -> 0 bytes .../test-cases/i18n-lro/020/i18nlro20.wgt | Bin 1834 -> 0 bytes .../test-cases/i18n-lro/021/i18nlro21.wgt | Bin 1530 -> 0 bytes .../test-cases/i18n-lro/022/i18nlro22.wgt | Bin 1530 -> 0 bytes .../test-cases/i18n-lro/023/i18nlro23.wgt | Bin 9257 -> 0 bytes .../test-cases/i18n-lro/026/i18nlro26.wgt | Bin 1642 -> 0 bytes .../test-cases/i18n-lro/027/i18nlro27.wgt | Bin 1329 -> 0 bytes .../test-cases/i18n-lro/028/i18nlro28.wgt | Bin 1256 -> 0 bytes .../test-cases/i18n-lro/029/i18nlro29.wgt | Bin 1321 -> 0 bytes .../test-cases/i18n-lro/030/i18nlro30.wgt | Bin 1332 -> 0 bytes .../test-cases/i18n-lro/031/i18nlro31.wgt | Bin 1297 -> 0 bytes .../test-cases/i18n-lro/032/i18nlro32.wgt | Bin 1506 -> 0 bytes .../test-cases/i18n-lro/033/i18nlro33.wgt | Bin 1526 -> 0 bytes .../test-cases/i18n-lro/034/i18nlro34.wgt | Bin 1521 -> 0 bytes .../test-cases/i18n-lro/035/i18nlro35.wgt | Bin 1636 -> 0 bytes .../test-cases/i18n-lro/036/i18nlro36.wgt | Bin 1482 -> 0 bytes .../test-cases/i18n-lro/037/i18nlro37.wgt | Bin 1497 -> 0 bytes .../test-cases/i18n-lro/038/i18nlro38.wgt | Bin 1250 -> 0 bytes .../test-cases/i18n-lro/039/i18nlro39.wgt | Bin 1501 -> 0 bytes .../test-cases/i18n-lro/040/i18nlro40.wgt | Bin 1240 -> 0 bytes .../test-cases/i18n-lro/041/i18nlro41.wgt | Bin 1249 -> 0 bytes .../test-cases/i18n-lro/042/i18nlro42.wgt | Bin 1497 -> 0 bytes .../test-cases/i18n-lro/043/i18nlro43.wgt | Bin 1665 -> 0 bytes .../test-cases/i18n-lro/044/i18nlro44.wgt | Bin 1483 -> 0 bytes .../test-cases/i18n-ltr/001/i18nltr01.wgt | Bin 1814 -> 0 bytes .../test-cases/i18n-ltr/002/i18nltr02.wgt | Bin 1503 -> 0 bytes .../test-cases/i18n-ltr/003/i18nltr03.wgt | Bin 1515 -> 0 bytes .../test-cases/i18n-ltr/004/i18nltr04.wgt | Bin 1506 -> 0 bytes .../test-cases/i18n-ltr/005/i18nltr05.wgt | Bin 1269 -> 0 bytes .../test-cases/i18n-ltr/006/i18nltr06.wgt | Bin 1504 -> 0 bytes .../test-cases/i18n-ltr/007/i18nltr07.wgt | Bin 1522 -> 0 bytes .../test-cases/i18n-ltr/008/i18nltr08.wgt | Bin 1514 -> 0 bytes .../test-cases/i18n-ltr/009/i18nltr09.wgt | Bin 1275 -> 0 bytes .../test-cases/i18n-ltr/010/i18nltr10.wgt | Bin 1512 -> 0 bytes .../test-cases/i18n-ltr/011/i18nltr11.wgt | Bin 1529 -> 0 bytes .../test-cases/i18n-ltr/012/i18nltr12.wgt | Bin 1524 -> 0 bytes .../test-cases/i18n-ltr/013/i18nltr13.wgt | Bin 1279 -> 0 bytes .../test-cases/i18n-ltr/014/i18nltr14.wgt | Bin 1493 -> 0 bytes .../test-cases/i18n-ltr/015/i18nltr15.wgt | Bin 1505 -> 0 bytes .../test-cases/i18n-ltr/016/i18nltr16.wgt | Bin 1513 -> 0 bytes .../test-cases/i18n-ltr/017/i18nltr17.wgt | Bin 1505 -> 0 bytes .../test-cases/i18n-ltr/018/i18nltr18.wgt | Bin 1265 -> 0 bytes .../test-cases/i18n-ltr/019/i18nltr19.wgt | Bin 1289 -> 0 bytes .../test-cases/i18n-ltr/020/i18nltr20.wgt | Bin 1528 -> 0 bytes .../test-cases/i18n-ltr/021/i18nltr21.wgt | Bin 1529 -> 0 bytes .../test-cases/i18n-ltr/022/i18nltr22.wgt | Bin 1528 -> 0 bytes .../test-cases/i18n-ltr/023/i18nltr23.wgt | Bin 9258 -> 0 bytes .../test-cases/i18n-ltr/026/i18nltr26.wgt | Bin 1642 -> 0 bytes .../test-cases/i18n-ltr/027/i18nltr27.wgt | Bin 1329 -> 0 bytes .../test-cases/i18n-ltr/028/i18nltr28.wgt | Bin 1257 -> 0 bytes .../test-cases/i18n-ltr/029/i18nltr29.wgt | Bin 1249 -> 0 bytes .../test-cases/i18n-ltr/030/i18nltr30.wgt | Bin 1332 -> 0 bytes .../test-cases/i18n-ltr/031/i18nltr31.wgt | Bin 1299 -> 0 bytes .../test-cases/i18n-ltr/032/i18nltr32.wgt | Bin 1299 -> 0 bytes .../test-cases/i18n-ltr/033/i18nltr33.wgt | Bin 1527 -> 0 bytes .../test-cases/i18n-ltr/034/i18nltr34.wgt | Bin 1522 -> 0 bytes .../test-cases/i18n-ltr/035/i18nltr35.wgt | Bin 1636 -> 0 bytes .../test-cases/i18n-ltr/036/i18nltr36.wgt | Bin 1483 -> 0 bytes .../test-cases/i18n-ltr/037/i18nltr37.wgt | Bin 1501 -> 0 bytes .../test-cases/i18n-ltr/038/i18nltr38.wgt | Bin 1251 -> 0 bytes .../test-cases/i18n-ltr/039/i18nltr39.wgt | Bin 1501 -> 0 bytes .../test-cases/i18n-ltr/040/i18nltr40.wgt | Bin 1450 -> 0 bytes .../test-cases/i18n-ltr/041/i18nltr41.wgt | Bin 1248 -> 0 bytes .../test-cases/i18n-ltr/042/i18nltr42.wgt | Bin 1504 -> 0 bytes .../test-cases/i18n-ltr/043/i18nltr43.wgt | Bin 1665 -> 0 bytes .../test-cases/i18n-ltr/044/i18nltr44.wgt | Bin 1486 -> 0 bytes .../test-cases/i18n-rlo/001/i18nrlo01.wgt | Bin 1455 -> 0 bytes .../test-cases/i18n-rlo/002/i18nrlo02.wgt | Bin 1429 -> 0 bytes .../test-cases/i18n-rlo/003/i18nrlo03.wgt | Bin 1481 -> 0 bytes .../test-cases/i18n-rlo/004/i18nrlo04.wgt | Bin 1472 -> 0 bytes .../test-cases/i18n-rlo/005/i18nrlo05.wgt | Bin 1248 -> 0 bytes .../test-cases/i18n-rlo/006/i18nrlo06.wgt | Bin 1473 -> 0 bytes .../test-cases/i18n-rlo/007/i18nrlo07.wgt | Bin 1496 -> 0 bytes .../test-cases/i18n-rlo/008/i18nrlo08.wgt | Bin 1487 -> 0 bytes .../test-cases/i18n-rlo/009/i18nrlo09.wgt | Bin 1261 -> 0 bytes .../test-cases/i18n-rlo/010/i18nrlo10.wgt | Bin 1477 -> 0 bytes .../test-cases/i18n-rlo/011/i18nrlo11.wgt | Bin 1498 -> 0 bytes .../test-cases/i18n-rlo/012/i18nrlo12.wgt | Bin 1492 -> 0 bytes .../test-cases/i18n-rlo/013/i18nrlo13.wgt | Bin 1263 -> 0 bytes .../test-cases/i18n-rlo/014/i18nrlo14.wgt | Bin 1455 -> 0 bytes .../test-cases/i18n-rlo/015/i18nrlo15.wgt | Bin 1470 -> 0 bytes .../test-cases/i18n-rlo/016/i18nrlo16.wgt | Bin 1479 -> 0 bytes .../test-cases/i18n-rlo/017/i18nrlo17.wgt | Bin 1471 -> 0 bytes .../test-cases/i18n-rlo/018/i18nrlo18.wgt | Bin 1246 -> 0 bytes .../test-cases/i18n-rlo/019/i18nrlo19.wgt | Bin 1554 -> 0 bytes .../test-cases/i18n-rlo/020/i18nrlo20.wgt | Bin 1533 -> 0 bytes .../test-cases/i18n-rlo/021/i18nrlo21.wgt | Bin 1532 -> 0 bytes .../test-cases/i18n-rlo/022/i18nrlo22.wgt | Bin 1528 -> 0 bytes .../test-cases/i18n-rlo/023/i18nrlo23.wgt | Bin 9257 -> 0 bytes .../test-cases/i18n-rlo/026/i18nrlo26.wgt | Bin 1642 -> 0 bytes .../test-cases/i18n-rlo/027/i18nrlo27.wgt | Bin 1328 -> 0 bytes .../test-cases/i18n-rlo/028/i18nrlo28.wgt | Bin 1265 -> 0 bytes .../test-cases/i18n-rlo/029/i18nrlo29.wgt | Bin 1321 -> 0 bytes .../test-cases/i18n-rlo/030/i18nrlo30.wgt | Bin 1332 -> 0 bytes .../test-cases/i18n-rlo/031/i18nrlo31.wgt | Bin 1280 -> 0 bytes .../test-cases/i18n-rlo/032/i18nrlo32.wgt | Bin 1281 -> 0 bytes .../test-cases/i18n-rlo/033/i18nrlo33.wgt | Bin 1491 -> 0 bytes .../test-cases/i18n-rlo/034/i18nrlo34.wgt | Bin 1487 -> 0 bytes .../test-cases/i18n-rlo/035/i18nrlo35.wgt | Bin 1636 -> 0 bytes .../test-cases/i18n-rlo/036/i18nrlo36.wgt | Bin 1482 -> 0 bytes .../test-cases/i18n-rlo/037/i18nrlo37.wgt | Bin 1468 -> 0 bytes .../test-cases/i18n-rlo/038/i18nrlo38.wgt | Bin 1250 -> 0 bytes .../test-cases/i18n-rlo/039/i18nrlo39.wgt | Bin 1501 -> 0 bytes .../test-cases/i18n-rlo/040/i18nrlo40.wgt | Bin 1449 -> 0 bytes .../test-cases/i18n-rlo/041/i18nrlo41.wgt | Bin 1249 -> 0 bytes .../test-cases/i18n-rlo/042/i18nrlo42.wgt | Bin 1469 -> 0 bytes .../test-cases/i18n-rlo/043/i18nrlo43.wgt | Bin 1665 -> 0 bytes .../test-cases/i18n-rlo/044/i18nrlo44.wgt | Bin 1485 -> 0 bytes .../test-cases/i18n-rtl/001/i18nrtl01.wgt | Bin 1493 -> 0 bytes .../test-cases/i18n-rtl/002/i18nrtl02.wgt | Bin 1514 -> 0 bytes .../test-cases/i18n-rtl/003/i18nrtl03.wgt | Bin 1513 -> 0 bytes .../test-cases/i18n-rtl/004/i18nrtl04.wgt | Bin 1506 -> 0 bytes .../test-cases/i18n-rtl/005/i18nrtl05.wgt | Bin 1266 -> 0 bytes .../test-cases/i18n-rtl/006/i18nrtl06.wgt | Bin 1501 -> 0 bytes .../test-cases/i18n-rtl/007/i18nrtl07.wgt | Bin 1521 -> 0 bytes .../test-cases/i18n-rtl/008/i18nrtl08.wgt | Bin 1512 -> 0 bytes .../test-cases/i18n-rtl/009/i18nrtl09.wgt | Bin 1273 -> 0 bytes .../test-cases/i18n-rtl/010/i18nrtl10.wgt | Bin 1511 -> 0 bytes .../test-cases/i18n-rtl/011/i18nrtl11.wgt | Bin 1527 -> 0 bytes .../test-cases/i18n-rtl/012/i18nrtl12.wgt | Bin 1521 -> 0 bytes .../test-cases/i18n-rtl/013/i18nrtl13.wgt | Bin 1276 -> 0 bytes .../test-cases/i18n-rtl/014/i18nrtl14.wgt | Bin 1493 -> 0 bytes .../test-cases/i18n-rtl/015/i18nrtl15.wgt | Bin 1262 -> 0 bytes .../test-cases/i18n-rtl/016/i18nrtl16.wgt | Bin 1514 -> 0 bytes .../test-cases/i18n-rtl/017/i18nrtl17.wgt | Bin 1505 -> 0 bytes .../test-cases/i18n-rtl/018/i18nrtl18.wgt | Bin 1265 -> 0 bytes .../test-cases/i18n-rtl/019/i18nrtl19.wgt | Bin 1293 -> 0 bytes .../test-cases/i18n-rtl/020/i18nrtl20.wgt | Bin 1528 -> 0 bytes .../test-cases/i18n-rtl/021/i18nrtl21.wgt | Bin 1868 -> 0 bytes .../test-cases/i18n-rtl/022/i18nrtl22.wgt | Bin 1878 -> 0 bytes .../test-cases/i18n-rtl/023/i18nrtl23.wgt | Bin 6527 -> 0 bytes .../test-cases/i18n-rtl/026/i18nrtl26.wgt | Bin 1642 -> 0 bytes .../test-cases/i18n-rtl/027/i18nrtl27.wgt | Bin 1258 -> 0 bytes .../test-cases/i18n-rtl/028/i18nrtl28.wgt | Bin 1256 -> 0 bytes .../test-cases/i18n-rtl/029/i18nrtl29.wgt | Bin 1320 -> 0 bytes .../test-cases/i18n-rtl/030/i18nrtl30.wgt | Bin 1332 -> 0 bytes .../test-cases/i18n-rtl/031/i18nrtl31.wgt | Bin 1299 -> 0 bytes .../test-cases/i18n-rtl/032/i18nrtl32.wgt | Bin 1299 -> 0 bytes .../test-cases/i18n-rtl/033/i18nrtl33.wgt | Bin 1528 -> 0 bytes .../test-cases/i18n-rtl/034/i18nrtl34.wgt | Bin 1520 -> 0 bytes .../test-cases/i18n-rtl/035/i18nrtl35.wgt | Bin 1636 -> 0 bytes .../test-cases/i18n-rtl/036/i18nrtl36.wgt | Bin 1482 -> 0 bytes .../test-cases/i18n-rtl/037/i18nrtl37.wgt | Bin 1502 -> 0 bytes .../test-cases/i18n-rtl/038/i18nrtl38.wgt | Bin 1250 -> 0 bytes .../test-cases/i18n-rtl/039/i18nrtl39.wgt | Bin 1756 -> 0 bytes .../test-cases/i18n-rtl/040/i18nrtl40.wgt | Bin 1450 -> 0 bytes .../test-cases/i18n-rtl/041/i18nrtl41.wgt | Bin 1249 -> 0 bytes .../test-cases/i18n-rtl/042/i18nrtl42.wgt | Bin 1539 -> 0 bytes .../test-cases/i18n-rtl/043/i18nrtl43.wgt | Bin 1664 -> 0 bytes .../test-cases/i18n-rtl/044/i18nrtl44.wgt | Bin 1487 -> 0 bytes .../w3c_tests/test-cases/ta-ACCJfDGwDQ/000/aa.wgt | Bin 1269 -> 0 bytes .../w3c_tests/test-cases/ta-ACCJfDGwDQ/001/ab.wgt | Bin 1211 -> 0 bytes .../w3c_tests/test-cases/ta-ACCJfDGwDQ/002/ac.wgt | Bin 1194 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/000/ao.wgt | Bin 1214 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/001/ap.wgt | Bin 1357 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/002/aq.wgt | Bin 1352 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/003/ar.wgt | Bin 1323 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/004/as.wgt | Bin 1372 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/005/at.wgt | Bin 1216 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/006/au.wgt | Bin 1215 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/007/av.wgt | Bin 1407 -> 0 bytes .../w3c_tests/test-cases/ta-AYLMhryBnD/008/oa.wgt | Bin 1253 -> 0 bytes .../w3c_tests/test-cases/ta-BnWPqNvNVo/000/aw.wgt | Bin 4883 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/000/ax.wgt | Bin 1214 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/001/ay.wgt | Bin 1271 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/002/az.wgt | Bin 1216 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/003/a1.wgt | Bin 1217 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/004/a2.wgt | Bin 1284 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/005/a3.wgt | Bin 1294 -> 0 bytes .../w3c_tests/test-cases/ta-BxjoiWHaMr/006/a4.wgt | Bin 1273 -> 0 bytes .../w3c_tests/test-cases/ta-CEGwkNQcWo/000/e2.wgt | Bin 1255 -> 0 bytes .../w3c_tests/test-cases/ta-CEGwkNQcWo/001/e3.wgt | Bin 1269 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/000/a5.wgt | Bin 1277 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/001/a6.wgt | Bin 1418 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/002/a7.wgt | Bin 1418 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/003/a8.wgt | Bin 1418 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/004/a9.wgt | Bin 1403 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/005/ba.wgt | Bin 1427 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/006/bb.wgt | Bin 1387 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/007/bc.wgt | Bin 1468 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/008/bd.wgt | Bin 413 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/009/be.wgt | Bin 409 -> 0 bytes .../w3c_tests/test-cases/ta-DwhJBIJRQN/010/bf.wgt | Bin 411 -> 0 bytes .../w3c_tests/test-cases/ta-EGkPfzCBOz/000/dt.wgt | Bin 1195 -> 0 bytes .../w3c_tests/test-cases/ta-EGkPfzCBOz/001/dg.wgt | Bin 1218 -> 0 bytes .../w3c_tests/test-cases/ta-EGkPfzCBOz/002/v9.wgt | Bin 1212 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/000/bj.wgt | Bin 5017 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/001/bk.wgt | Bin 5097 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/002/bl.wgt | Bin 9614 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/003/bm.wgt | Bin 50417 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/004/bn.wgt | Bin 92682 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/005/bo.wgt | Bin 47868 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/006/bp.wgt | Bin 9086 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/007/ad.wgt | Bin 7650 -> 0 bytes .../w3c_tests/test-cases/ta-FAFYMEGELU/008/ae.wgt | Bin 7348 -> 0 bytes .../w3c_tests/test-cases/ta-FDGQBROtzW/000/dn.test | Bin 25846 -> 0 bytes tests/w3c_tests/test-cases/ta-FDGQBROtzW/001/dm | Bin 1090 -> 0 bytes tests/w3c_tests/test-cases/ta-GVVIvsdEUo/000/z3 | Bin 1558 -> 0 bytes .../w3c_tests/test-cases/ta-GVVIvsdEUo/001/z4.html | Bin 1563 -> 0 bytes .../w3c_tests/test-cases/ta-GVVIvsdEUo/002/z5.wgt | Bin 803 -> 0 bytes .../w3c_tests/test-cases/ta-KNiLPOKdgQ/000/e1.wgt | Bin 1250 -> 0 bytes .../w3c_tests/test-cases/ta-LQcjNKBLUZ/000/d9.wgt | Bin 933 -> 0 bytes .../w3c_tests/test-cases/ta-LQcjNKBLUZ/001/d0.wgt | Bin 823 -> 0 bytes .../w3c_tests/test-cases/ta-LTUJGJFCOU/000/d7.wgt | Bin 809 -> 0 bytes .../w3c_tests/test-cases/ta-LTUJGJFCOU/001/d8.wgt | Bin 1021 -> 0 bytes .../w3c_tests/test-cases/ta-LTUJGJFCOU/002/gb.wgt | Bin 812 -> 0 bytes .../w3c_tests/test-cases/ta-LYLMhryBBT/000/bx.wgt | Bin 1298 -> 0 bytes .../w3c_tests/test-cases/ta-LYLMhryBBT/001/by.wgt | Bin 1300 -> 0 bytes .../w3c_tests/test-cases/ta-LYLMhryBBT/002/bz.wgt | Bin 1516 -> 0 bytes .../w3c_tests/test-cases/ta-MFcsScFEaC/000/d3.wgt | Bin 778 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/000/b3.wgt | Bin 793 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/001/b4.wgt | Bin 795 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/002/b0.wgt | Bin 793 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/003/c1.wgt | Bin 831 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/004/c2.wgt | Bin 834 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/005/c3.wgt | Bin 791 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/006/c4.wgt | Bin 986 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/007/c5.wgt | Bin 1278 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/008/cc.wgt | Bin 986 -> 0 bytes .../w3c_tests/test-cases/ta-RGNHRBWNZV/009/cv.wgt | Bin 1646 -> 0 bytes .../w3c_tests/test-cases/ta-RRZxvvTFHx/000/b5.wgt | Bin 1021 -> 0 bytes .../w3c_tests/test-cases/ta-RRZxvvTFHx/001/b6.wgt | Bin 1269 -> 0 bytes .../w3c_tests/test-cases/ta-RawAIWHoMs/000/b1.wgt | Bin 1198 -> 0 bytes .../w3c_tests/test-cases/ta-RawAIWHoMs/001/rd.wgt | Bin 1401 -> 0 bytes .../w3c_tests/test-cases/ta-RawAIWHoMs/002/b2.wgt | Bin 1206 -> 0 bytes .../w3c_tests/test-cases/ta-UEMbyHERkI/000/c6.wgt | Bin 1236 -> 0 bytes .../w3c_tests/test-cases/ta-UEMbyHERkI/001/c7.wgt | Bin 1230 -> 0 bytes .../w3c_tests/test-cases/ta-UEMbyHERkI/002/rb.wgt | Bin 1244 -> 0 bytes .../w3c_tests/test-cases/ta-UEMbyHERkI/003/c8.wgt | Bin 1276 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/000/c9.wgt | Bin 1267 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/001/cq.wgt | Bin 1211 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/002/cw.wgt | Bin 1214 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/003/ce.wgt | Bin 1215 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/004/cr.wgt | Bin 1261 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/005/ct.wgt | Bin 1287 -> 0 bytes .../w3c_tests/test-cases/ta-UScJfQHPPy/006/cy.wgt | Bin 1265 -> 0 bytes tests/w3c_tests/test-cases/ta-VdCEyDVSA/000/cp.wgt | Bin 2023 -> 0 bytes tests/w3c_tests/test-cases/ta-VdCEyDVSA/001/ca.wgt | Bin 1229 -> 0 bytes tests/w3c_tests/test-cases/ta-VdCEyDVSA/002/cs.wgt | Bin 1217 -> 0 bytes tests/w3c_tests/test-cases/ta-VdCEyDVSA/003/cd.wgt | Bin 1467 -> 0 bytes tests/w3c_tests/test-cases/ta-VdCEyDVSA/004/x1.wgt | Bin 1258 -> 0 bytes tests/w3c_tests/test-cases/ta-VdCEyDVSA/005/x2.wgt | Bin 1261 -> 0 bytes .../w3c_tests/test-cases/ta-VerEfVGeTc/000/cf.wgt | Bin 1213 -> 0 bytes .../w3c_tests/test-cases/ta-VerEfVGeTc/001/cg.wgt | Bin 1223 -> 0 bytes .../w3c_tests/test-cases/ta-VerEfVGeTc/002/ch.wgt | Bin 1231 -> 0 bytes .../w3c_tests/test-cases/ta-YUMJAPVEgI/000/cj.wgt | Bin 1170 -> 0 bytes .../w3c_tests/test-cases/ta-YUMJAPVEgI/001/ck.wgt | Bin 1160 -> 0 bytes .../w3c_tests/test-cases/ta-YUMJAPVEgI/002/cl.wgt | Bin 1152 -> 0 bytes .../w3c_tests/test-cases/ta-YUMJAPVEgI/003/cz.wgt | Bin 1165 -> 0 bytes .../w3c_tests/test-cases/ta-YUMJAPVEgI/004/cx.wgt | Bin 1208 -> 0 bytes .../w3c_tests/test-cases/ta-ZjcdAxFMSx/000/dq.wgt | Bin 844 -> 0 bytes .../w3c_tests/test-cases/ta-ZjcdAxFMSx/001/dw.wgt | Bin 843 -> 0 bytes .../w3c_tests/test-cases/ta-ZjcdAxFMSx/002/hh.wgt | Bin 940 -> 0 bytes .../w3c_tests/test-cases/ta-aaaaaaaaaa/000/z1.wgt | Bin 1328 -> 0 bytes .../w3c_tests/test-cases/ta-aaaaaaaaaa/001/z2.wgt | Bin 1306 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/000/af.wgt | Bin 1230 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/001/ag.wgt | Bin 1284 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/002/ah.wgt | Bin 1361 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/003/ai.wgt | Bin 1545 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/004/aj.wgt | Bin 1361 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/005/ak.wgt | Bin 1220 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/006/al.wgt | Bin 1209 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/007/am.wgt | Bin 1235 -> 0 bytes tests/w3c_tests/test-cases/ta-argMozRiC/008/an.wgt | Bin 1329 -> 0 bytes .../w3c_tests/test-cases/ta-bbbbbbbbbb/000/xx.wgt | Bin 1047 -> 0 bytes .../w3c_tests/test-cases/ta-dPOgiLQKNK/000/e4.wgt | Bin 1276 -> 0 bytes .../w3c_tests/test-cases/ta-dPOgiLQKNK/001/e5.wgt | Bin 1289 -> 0 bytes .../w3c_tests/test-cases/ta-dPOgiLQKNK/002/e6.wgt | Bin 1332 -> 0 bytes .../w3c_tests/test-cases/ta-dPOgiLQKNK/003/e7.wgt | Bin 1289 -> 0 bytes .../ta-defaultlocale-ignore/000/ta-de-000.wgt | Bin 1074 -> 0 bytes .../ta-defaultlocale-ignore/001/ta-de-001.wgt | Bin 1467 -> 0 bytes .../ta-defaultlocale-ignore/002/ta-de-002.wgt | Bin 1478 -> 0 bytes .../ta-defaultlocale-ignore/003/ta-de-003.wgt | Bin 1472 -> 0 bytes .../ta-defaultlocale-ignore/004/ta-de-004.wgt | Bin 1451 -> 0 bytes .../ta-defaultlocale-usage/000/ta-de-000.wgt | Bin 968 -> 0 bytes .../ta-defaultlocale-usage/001/dlocuse01.wgt | Bin 1469 -> 0 bytes .../w3c_tests/test-cases/ta-dxzVDWpaWg/000/bg.wgt | Bin 3142 -> 0 bytes .../w3c_tests/test-cases/ta-dxzVDWpaWg/001/bh.wgt | Bin 4422 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/000/ix.wgt | Bin 5368 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/001/iy.wgt | Bin 5116 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/002/iz.wgt | Bin 5122 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/003/i1.wgt | Bin 5121 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/004/i2.wgt | Bin 5114 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/005/i3.wgt | Bin 5138 -> 0 bytes .../w3c_tests/test-cases/ta-eHUaPbgfKg/006/i4.wgt | Bin 5116 -> 0 bytes .../w3c_tests/test-cases/ta-hkWmGJgfve/000/bq.wgt | Bin 1014 -> 0 bytes .../w3c_tests/test-cases/ta-hkWmGJgfve/001/br.wgt | Bin 817 -> 0 bytes .../w3c_tests/test-cases/ta-hkWmGJgfve/002/bs.wgt | Bin 1590 -> 0 bytes .../000/gg.wgt | Bin 840 -> 0 bytes .../w3c_tests/test-cases/ta-iipTwNshRg/000/d1.wgt | Bin 3406 -> 0 bytes .../w3c_tests/test-cases/ta-iipTwNshRg/001/ga.wgt | Bin 3410 -> 0 bytes tests/w3c_tests/test-cases/ta-its/000/its0.wgt | 0 tests/w3c_tests/test-cases/ta-its/001/its1.wgt | 0 tests/w3c_tests/test-cases/ta-its/002/its2.wgt | 0 tests/w3c_tests/test-cases/ta-its/003/its3.wgt | 0 tests/w3c_tests/test-cases/ta-its/004/its4.wgt | 0 tests/w3c_tests/test-cases/ta-its/005/its5.wgt | 0 tests/w3c_tests/test-cases/ta-its/007/its7.wgt | 0 tests/w3c_tests/test-cases/ta-its/008/its8.wgt | 0 tests/w3c_tests/test-cases/ta-its/009/its9.wgt | 0 tests/w3c_tests/test-cases/ta-its/010/its10.wgt | 0 tests/w3c_tests/test-cases/ta-its/011/its11.wgt | 0 tests/w3c_tests/test-cases/ta-its/012/its12.wgt | 0 tests/w3c_tests/test-cases/ta-its/013/its13.wgt | 0 tests/w3c_tests/test-cases/ta-its/014/its14.wgt | 0 tests/w3c_tests/test-cases/ta-its/015/its15.wgt | 0 .../w3c_tests/test-cases/ta-iuJHnskSHq/000/zz.wgt | Bin 1165 -> 0 bytes .../w3c_tests/test-cases/ta-iuJHnskSHq/001/za.wgt | Bin 5230 -> 0 bytes .../w3c_tests/test-cases/ta-iuJHnskSHq/002/zb.wgt | Bin 8954 -> 0 bytes .../w3c_tests/test-cases/ta-iuJHnskSHq/003/zc.wgt | Bin 8964 -> 0 bytes .../w3c_tests/test-cases/ta-klLDaEgJeU/000/bt.wgt | Bin 857 -> 0 bytes .../w3c_tests/test-cases/ta-klLDaEgJeU/001/bu.wgt | Bin 1142 -> 0 bytes .../w3c_tests/test-cases/ta-klLDaEgJeU/002/bv.wgt | Bin 1232 -> 0 bytes .../w3c_tests/test-cases/ta-klLDaEgJeU/003/bw.wgt | Bin 1269 -> 0 bytes .../w3c_tests/test-cases/ta-klLDaEgJeU/004/lt.wgt | Bin 612 -> 0 bytes .../w3c_tests/test-cases/ta-klLDaEgJeU/005/amp.wgt | Bin 612 -> 0 bytes .../w3c_tests/test-cases/ta-luyKMFABLX/000/d5.wgt | Bin 860 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/000/iq.wgt | Bin 5595 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/001/i9.wgt | Bin 5289 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/002/iw.wgt | Bin 5291 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/003/ie.wgt | Bin 5294 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/004/ir.wgt | Bin 5285 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/005/it.wgt | Bin 5311 -> 0 bytes .../w3c_tests/test-cases/ta-nYAcofihvj/006/ib.wgt | Bin 5289 -> 0 bytes .../w3c_tests/test-cases/ta-pIffQywZin/000/db.wgt | Bin 879 -> 0 bytes .../w3c_tests/test-cases/ta-paIabGIIMC/000/dc.wgt | Bin 828 -> 0 bytes .../w3c_tests/test-cases/ta-paIabGIIMC/001/dv.wgt | Bin 846 -> 0 bytes .../w3c_tests/test-cases/ta-paWbGHyVrG/000/d4.wgt | Bin 936 -> 0 bytes .../w3c_tests/test-cases/ta-qxLSCRCHlN/000/dk.wgt | Bin 518 -> 0 bytes .../w3c_tests/test-cases/ta-rZdcMBExBX/000/df.wgt | Bin 819 -> 0 bytes .../w3c_tests/test-cases/ta-rZdcMBExBX/001/dr.wgt | Bin 587 -> 0 bytes .../w3c_tests/test-cases/ta-rZdcMBExBX/002/ha.wgt | Bin 853 -> 0 bytes .../w3c_tests/test-cases/ta-roCaKRxZhS/000/d2.wgt | Bin 8092 -> 0 bytes .../w3c_tests/test-cases/ta-sdwhMozwIc/000/b7.wgt | Bin 1507 -> 0 bytes .../w3c_tests/test-cases/ta-sdwhMozwIc/001/b8.wgt | Bin 1421 -> 0 bytes .../w3c_tests/test-cases/ta-sdwhMozwIc/002/b9.wgt | Bin 1506 -> 0 bytes .../w3c_tests/test-cases/ta-uLHyIMvLwz/000/dl.wgt | Bin 1098 -> 0 bytes .../test-cases/ta-uLHyIMvLwz/001/split.wgt.001 | Bin 200 -> 0 bytes .../w3c_tests/test-cases/ta-uLHyIMvLwz/002/dp.wgt | Bin 22 -> 0 bytes .../w3c_tests/test-cases/ta-vOBaOcWfll/000/e8.wgt | Bin 843 -> 0 bytes .../w3c_tests/test-cases/ta-vcYJAPVEym/000/cu.wgt | Bin 1313 -> 0 bytes .../w3c_tests/test-cases/ta-vcYJAPVEym/001/ci.wgt | Bin 1305 -> 0 bytes .../w3c_tests/test-cases/ta-vcYJAPVEym/002/ra.wgt | Bin 1278 -> 0 bytes .../w3c_tests/test-cases/ta-vcYJAPVEym/003/co.wgt | Bin 1296 -> 0 bytes .../test-cases/ta-viewmodes/001/viewb.wgt | Bin 1627 -> 0 bytes .../test-cases/ta-viewmodes/005/viewf.wgt | Bin 1663 -> 0 bytes .../test-cases/ta-viewmodes/006/viewg.wgt | Bin 1662 -> 0 bytes .../test-cases/ta-viewmodes/007/viewh.wgt | Bin 1655 -> 0 bytes .../test-cases/ta-viewmodes/008/viewi.wgt | Bin 1614 -> 0 bytes .../w3c_tests/test-cases/ta-xGYcVTMoAX/000/ds.wgt | Bin 476 -> 0 bytes .../w3c_tests/test-cases/ta-xlgUWUVzCY/000/d6.wgt | Bin 1560 -> 0 bytes tests/w3c_tests/test-suite.xml | 1604 --------- .../tmp/test-cases/i18n-lro/001/i18nlro01.wgt | Bin 1483 -> 0 bytes .../tmp/test-cases/i18n-lro/002/i18nlro02.wgt | Bin 1513 -> 0 bytes .../tmp/test-cases/i18n-lro/003/i18nlro03.wgt | Bin 1506 -> 0 bytes .../tmp/test-cases/i18n-lro/004/i18nlro04.wgt | Bin 1498 -> 0 bytes .../tmp/test-cases/i18n-lro/005/i18nlro05.wgt | Bin 1262 -> 0 bytes .../tmp/test-cases/i18n-lro/006/i18nlro06.wgt | Bin 1494 -> 0 bytes .../tmp/test-cases/i18n-lro/007/i18nlro07.wgt | Bin 1514 -> 0 bytes .../tmp/test-cases/i18n-lro/008/i18nlro08.wgt | Bin 1509 -> 0 bytes .../tmp/test-cases/i18n-lro/009/i18nlro09.wgt | Bin 1272 -> 0 bytes .../tmp/test-cases/i18n-lro/010/i18nlro10.wgt | Bin 1512 -> 0 bytes .../tmp/test-cases/i18n-lro/011/i18nlro11.wgt | Bin 1530 -> 0 bytes .../tmp/test-cases/i18n-lro/012/i18nlro12.wgt | Bin 1522 -> 0 bytes .../tmp/test-cases/i18n-lro/013/i18nlro13.wgt | Bin 1280 -> 0 bytes .../tmp/test-cases/i18n-lro/014/i18nlro14.wgt | Bin 1483 -> 0 bytes .../tmp/test-cases/i18n-lro/015/i18nlro15.wgt | Bin 1500 -> 0 bytes .../tmp/test-cases/i18n-lro/016/i18nlro16.wgt | Bin 1506 -> 0 bytes .../tmp/test-cases/i18n-lro/017/i18nlro17.wgt | Bin 1498 -> 0 bytes .../tmp/test-cases/i18n-lro/018/i18nlro18.wgt | Bin 1261 -> 0 bytes .../tmp/test-cases/i18n-lro/019/i18nlro19.wgt | Bin 1527 -> 0 bytes .../tmp/test-cases/i18n-lro/020/i18nlro20.wgt | Bin 1834 -> 0 bytes .../tmp/test-cases/i18n-lro/021/i18nlro21.wgt | Bin 1530 -> 0 bytes .../tmp/test-cases/i18n-lro/022/i18nlro22.wgt | Bin 1530 -> 0 bytes .../tmp/test-cases/i18n-lro/023/i18nlro23.wgt | Bin 9257 -> 0 bytes .../tmp/test-cases/i18n-lro/026/i18nlro26.wgt | Bin 1642 -> 0 bytes .../tmp/test-cases/i18n-lro/027/i18nlro27.wgt | Bin 1329 -> 0 bytes .../tmp/test-cases/i18n-lro/028/i18nlro28.wgt | Bin 1256 -> 0 bytes .../tmp/test-cases/i18n-lro/029/i18nlro29.wgt | Bin 1321 -> 0 bytes .../tmp/test-cases/i18n-lro/030/i18nlro30.wgt | Bin 1332 -> 0 bytes .../tmp/test-cases/i18n-lro/031/i18nlro31.wgt | Bin 1297 -> 0 bytes .../tmp/test-cases/i18n-lro/032/i18nlro32.wgt | Bin 1506 -> 0 bytes .../tmp/test-cases/i18n-lro/033/i18nlro33.wgt | Bin 1526 -> 0 bytes .../tmp/test-cases/i18n-lro/034/i18nlro34.wgt | Bin 1521 -> 0 bytes .../tmp/test-cases/i18n-lro/035/i18nlro35.wgt | Bin 1636 -> 0 bytes .../tmp/test-cases/i18n-lro/036/i18nlro36.wgt | Bin 1482 -> 0 bytes .../tmp/test-cases/i18n-lro/037/i18nlro37.wgt | Bin 1497 -> 0 bytes .../tmp/test-cases/i18n-lro/038/i18nlro38.wgt | Bin 1250 -> 0 bytes .../tmp/test-cases/i18n-lro/039/i18nlro39.wgt | Bin 1501 -> 0 bytes .../tmp/test-cases/i18n-lro/040/i18nlro40.wgt | Bin 1240 -> 0 bytes .../tmp/test-cases/i18n-lro/041/i18nlro41.wgt | Bin 1249 -> 0 bytes .../tmp/test-cases/i18n-lro/042/i18nlro42.wgt | Bin 1497 -> 0 bytes .../tmp/test-cases/i18n-lro/043/i18nlro43.wgt | Bin 1665 -> 0 bytes .../tmp/test-cases/i18n-lro/044/i18nlro44.wgt | Bin 1483 -> 0 bytes .../tmp/test-cases/i18n-ltr/001/i18nltr01.wgt | Bin 1814 -> 0 bytes .../tmp/test-cases/i18n-ltr/002/i18nltr02.wgt | Bin 1503 -> 0 bytes .../tmp/test-cases/i18n-ltr/003/i18nltr03.wgt | Bin 1515 -> 0 bytes .../tmp/test-cases/i18n-ltr/004/i18nltr04.wgt | Bin 1506 -> 0 bytes .../tmp/test-cases/i18n-ltr/005/i18nltr05.wgt | Bin 1269 -> 0 bytes .../tmp/test-cases/i18n-ltr/006/i18nltr06.wgt | Bin 1504 -> 0 bytes .../tmp/test-cases/i18n-ltr/007/i18nltr07.wgt | Bin 1522 -> 0 bytes .../tmp/test-cases/i18n-ltr/008/i18nltr08.wgt | Bin 1514 -> 0 bytes .../tmp/test-cases/i18n-ltr/009/i18nltr09.wgt | Bin 1275 -> 0 bytes .../tmp/test-cases/i18n-ltr/010/i18nltr10.wgt | Bin 1512 -> 0 bytes .../tmp/test-cases/i18n-ltr/011/i18nltr11.wgt | Bin 1529 -> 0 bytes .../tmp/test-cases/i18n-ltr/012/i18nltr12.wgt | Bin 1524 -> 0 bytes .../tmp/test-cases/i18n-ltr/013/i18nltr13.wgt | Bin 1279 -> 0 bytes .../tmp/test-cases/i18n-ltr/014/i18nltr14.wgt | Bin 1493 -> 0 bytes .../tmp/test-cases/i18n-ltr/015/i18nltr15.wgt | Bin 1505 -> 0 bytes .../tmp/test-cases/i18n-ltr/016/i18nltr16.wgt | Bin 1513 -> 0 bytes .../tmp/test-cases/i18n-ltr/017/i18nltr17.wgt | Bin 1505 -> 0 bytes .../tmp/test-cases/i18n-ltr/018/i18nltr18.wgt | Bin 1265 -> 0 bytes .../tmp/test-cases/i18n-ltr/019/i18nltr19.wgt | Bin 1289 -> 0 bytes .../tmp/test-cases/i18n-ltr/020/i18nltr20.wgt | Bin 1528 -> 0 bytes .../tmp/test-cases/i18n-ltr/021/i18nltr21.wgt | Bin 1529 -> 0 bytes .../tmp/test-cases/i18n-ltr/022/i18nltr22.wgt | Bin 1528 -> 0 bytes .../tmp/test-cases/i18n-ltr/023/i18nltr23.wgt | Bin 9258 -> 0 bytes .../tmp/test-cases/i18n-ltr/026/i18nltr26.wgt | Bin 1642 -> 0 bytes .../tmp/test-cases/i18n-ltr/027/i18nltr27.wgt | Bin 1329 -> 0 bytes .../tmp/test-cases/i18n-ltr/028/i18nltr28.wgt | Bin 1257 -> 0 bytes .../tmp/test-cases/i18n-ltr/029/i18nltr29.wgt | Bin 1249 -> 0 bytes .../tmp/test-cases/i18n-ltr/030/i18nltr30.wgt | Bin 1332 -> 0 bytes .../tmp/test-cases/i18n-ltr/031/i18nltr31.wgt | Bin 1299 -> 0 bytes .../tmp/test-cases/i18n-ltr/032/i18nltr32.wgt | Bin 1299 -> 0 bytes .../tmp/test-cases/i18n-ltr/033/i18nltr33.wgt | Bin 1527 -> 0 bytes .../tmp/test-cases/i18n-ltr/034/i18nltr34.wgt | Bin 1522 -> 0 bytes .../tmp/test-cases/i18n-ltr/035/i18nltr35.wgt | Bin 1636 -> 0 bytes .../tmp/test-cases/i18n-ltr/036/i18nltr36.wgt | Bin 1483 -> 0 bytes .../tmp/test-cases/i18n-ltr/037/i18nltr37.wgt | Bin 1501 -> 0 bytes .../tmp/test-cases/i18n-ltr/038/i18nltr38.wgt | Bin 1251 -> 0 bytes .../tmp/test-cases/i18n-ltr/039/i18nltr39.wgt | Bin 1501 -> 0 bytes .../tmp/test-cases/i18n-ltr/040/i18nltr40.wgt | Bin 1450 -> 0 bytes .../tmp/test-cases/i18n-ltr/041/i18nltr41.wgt | Bin 1248 -> 0 bytes .../tmp/test-cases/i18n-ltr/042/i18nltr42.wgt | Bin 1504 -> 0 bytes .../tmp/test-cases/i18n-ltr/043/i18nltr43.wgt | Bin 1665 -> 0 bytes .../tmp/test-cases/i18n-ltr/044/i18nltr44.wgt | Bin 1486 -> 0 bytes .../tmp/test-cases/i18n-rlo/001/i18nrlo01.wgt | Bin 1455 -> 0 bytes .../tmp/test-cases/i18n-rlo/002/i18nrlo02.wgt | Bin 1429 -> 0 bytes .../tmp/test-cases/i18n-rlo/003/i18nrlo03.wgt | Bin 1481 -> 0 bytes .../tmp/test-cases/i18n-rlo/004/i18nrlo04.wgt | Bin 1472 -> 0 bytes .../tmp/test-cases/i18n-rlo/005/i18nrlo05.wgt | Bin 1248 -> 0 bytes .../tmp/test-cases/i18n-rlo/006/i18nrlo06.wgt | Bin 1473 -> 0 bytes .../tmp/test-cases/i18n-rlo/007/i18nrlo07.wgt | Bin 1496 -> 0 bytes .../tmp/test-cases/i18n-rlo/008/i18nrlo08.wgt | Bin 1487 -> 0 bytes .../tmp/test-cases/i18n-rlo/009/i18nrlo09.wgt | Bin 1261 -> 0 bytes .../tmp/test-cases/i18n-rlo/010/i18nrlo10.wgt | Bin 1477 -> 0 bytes .../tmp/test-cases/i18n-rlo/011/i18nrlo11.wgt | Bin 1498 -> 0 bytes .../tmp/test-cases/i18n-rlo/012/i18nrlo12.wgt | Bin 1492 -> 0 bytes .../tmp/test-cases/i18n-rlo/013/i18nrlo13.wgt | Bin 1263 -> 0 bytes .../tmp/test-cases/i18n-rlo/014/i18nrlo14.wgt | Bin 1455 -> 0 bytes .../tmp/test-cases/i18n-rlo/015/i18nrlo15.wgt | Bin 1470 -> 0 bytes .../tmp/test-cases/i18n-rlo/016/i18nrlo16.wgt | Bin 1479 -> 0 bytes .../tmp/test-cases/i18n-rlo/017/i18nrlo17.wgt | Bin 1471 -> 0 bytes .../tmp/test-cases/i18n-rlo/018/i18nrlo18.wgt | Bin 1246 -> 0 bytes .../tmp/test-cases/i18n-rlo/019/i18nrlo19.wgt | Bin 1554 -> 0 bytes .../tmp/test-cases/i18n-rlo/020/i18nrlo20.wgt | Bin 1533 -> 0 bytes .../tmp/test-cases/i18n-rlo/021/i18nrlo21.wgt | Bin 1532 -> 0 bytes .../tmp/test-cases/i18n-rlo/022/i18nrlo22.wgt | Bin 1528 -> 0 bytes .../tmp/test-cases/i18n-rlo/023/i18nrlo23.wgt | Bin 9257 -> 0 bytes .../tmp/test-cases/i18n-rlo/026/i18nrlo26.wgt | Bin 1642 -> 0 bytes .../tmp/test-cases/i18n-rlo/027/i18nrlo27.wgt | Bin 1328 -> 0 bytes .../tmp/test-cases/i18n-rlo/028/i18nrlo28.wgt | Bin 1265 -> 0 bytes .../tmp/test-cases/i18n-rlo/029/i18nrlo29.wgt | Bin 1321 -> 0 bytes .../tmp/test-cases/i18n-rlo/030/i18nrlo30.wgt | Bin 1332 -> 0 bytes .../tmp/test-cases/i18n-rlo/031/i18nrlo31.wgt | Bin 1280 -> 0 bytes .../tmp/test-cases/i18n-rlo/032/i18nrlo32.wgt | Bin 1281 -> 0 bytes .../tmp/test-cases/i18n-rlo/033/i18nrlo33.wgt | Bin 1491 -> 0 bytes .../tmp/test-cases/i18n-rlo/034/i18nrlo34.wgt | Bin 1487 -> 0 bytes .../tmp/test-cases/i18n-rlo/035/i18nrlo35.wgt | Bin 1636 -> 0 bytes .../tmp/test-cases/i18n-rlo/036/i18nrlo36.wgt | Bin 1482 -> 0 bytes .../tmp/test-cases/i18n-rlo/037/i18nrlo37.wgt | Bin 1468 -> 0 bytes .../tmp/test-cases/i18n-rlo/038/i18nrlo38.wgt | Bin 1250 -> 0 bytes .../tmp/test-cases/i18n-rlo/039/i18nrlo39.wgt | Bin 1501 -> 0 bytes .../tmp/test-cases/i18n-rlo/040/i18nrlo40.wgt | Bin 1449 -> 0 bytes .../tmp/test-cases/i18n-rlo/041/i18nrlo41.wgt | Bin 1249 -> 0 bytes .../tmp/test-cases/i18n-rlo/042/i18nrlo42.wgt | Bin 1469 -> 0 bytes .../tmp/test-cases/i18n-rlo/043/i18nrlo43.wgt | Bin 1665 -> 0 bytes .../tmp/test-cases/i18n-rlo/044/i18nrlo44.wgt | Bin 1485 -> 0 bytes .../tmp/test-cases/i18n-rtl/001/i18nrtl01.wgt | Bin 1493 -> 0 bytes .../tmp/test-cases/i18n-rtl/002/i18nrtl02.wgt | Bin 1514 -> 0 bytes .../tmp/test-cases/i18n-rtl/003/i18nrtl03.wgt | Bin 1513 -> 0 bytes .../tmp/test-cases/i18n-rtl/004/i18nrtl04.wgt | Bin 1506 -> 0 bytes .../tmp/test-cases/i18n-rtl/005/i18nrtl05.wgt | Bin 1266 -> 0 bytes .../tmp/test-cases/i18n-rtl/006/i18nrtl06.wgt | Bin 1501 -> 0 bytes .../tmp/test-cases/i18n-rtl/007/i18nrtl07.wgt | Bin 1521 -> 0 bytes .../tmp/test-cases/i18n-rtl/008/i18nrtl08.wgt | Bin 1512 -> 0 bytes .../tmp/test-cases/i18n-rtl/009/i18nrtl09.wgt | Bin 1273 -> 0 bytes .../tmp/test-cases/i18n-rtl/010/i18nrtl10.wgt | Bin 1511 -> 0 bytes .../tmp/test-cases/i18n-rtl/011/i18nrtl11.wgt | Bin 1527 -> 0 bytes .../tmp/test-cases/i18n-rtl/012/i18nrtl12.wgt | Bin 1521 -> 0 bytes .../tmp/test-cases/i18n-rtl/013/i18nrtl13.wgt | Bin 1276 -> 0 bytes .../tmp/test-cases/i18n-rtl/014/i18nrtl14.wgt | Bin 1493 -> 0 bytes .../tmp/test-cases/i18n-rtl/015/i18nrtl15.wgt | Bin 1262 -> 0 bytes .../tmp/test-cases/i18n-rtl/016/i18nrtl16.wgt | Bin 1514 -> 0 bytes .../tmp/test-cases/i18n-rtl/017/i18nrtl17.wgt | Bin 1505 -> 0 bytes .../tmp/test-cases/i18n-rtl/018/i18nrtl18.wgt | Bin 1265 -> 0 bytes .../tmp/test-cases/i18n-rtl/019/i18nrtl19.wgt | Bin 1293 -> 0 bytes .../tmp/test-cases/i18n-rtl/020/i18nrtl20.wgt | Bin 1528 -> 0 bytes .../tmp/test-cases/i18n-rtl/021/i18nrtl21.wgt | Bin 1868 -> 0 bytes .../tmp/test-cases/i18n-rtl/022/i18nrtl22.wgt | Bin 1878 -> 0 bytes .../tmp/test-cases/i18n-rtl/023/i18nrtl23.wgt | Bin 6527 -> 0 bytes .../tmp/test-cases/i18n-rtl/026/i18nrtl26.wgt | Bin 1642 -> 0 bytes .../tmp/test-cases/i18n-rtl/027/i18nrtl27.wgt | Bin 1258 -> 0 bytes .../tmp/test-cases/i18n-rtl/028/i18nrtl28.wgt | Bin 1256 -> 0 bytes .../tmp/test-cases/i18n-rtl/029/i18nrtl29.wgt | Bin 1320 -> 0 bytes .../tmp/test-cases/i18n-rtl/030/i18nrtl30.wgt | Bin 1332 -> 0 bytes .../tmp/test-cases/i18n-rtl/031/i18nrtl31.wgt | Bin 1299 -> 0 bytes .../tmp/test-cases/i18n-rtl/032/i18nrtl32.wgt | Bin 1299 -> 0 bytes .../tmp/test-cases/i18n-rtl/033/i18nrtl33.wgt | Bin 1528 -> 0 bytes .../tmp/test-cases/i18n-rtl/034/i18nrtl34.wgt | Bin 1520 -> 0 bytes .../tmp/test-cases/i18n-rtl/035/i18nrtl35.wgt | Bin 1636 -> 0 bytes .../tmp/test-cases/i18n-rtl/036/i18nrtl36.wgt | Bin 1482 -> 0 bytes .../tmp/test-cases/i18n-rtl/037/i18nrtl37.wgt | Bin 1502 -> 0 bytes .../tmp/test-cases/i18n-rtl/038/i18nrtl38.wgt | Bin 1250 -> 0 bytes .../tmp/test-cases/i18n-rtl/039/i18nrtl39.wgt | Bin 1756 -> 0 bytes .../tmp/test-cases/i18n-rtl/040/i18nrtl40.wgt | Bin 1450 -> 0 bytes .../tmp/test-cases/i18n-rtl/041/i18nrtl41.wgt | Bin 1249 -> 0 bytes .../tmp/test-cases/i18n-rtl/042/i18nrtl42.wgt | Bin 1539 -> 0 bytes .../tmp/test-cases/i18n-rtl/043/i18nrtl43.wgt | Bin 1664 -> 0 bytes .../tmp/test-cases/i18n-rtl/044/i18nrtl44.wgt | Bin 1487 -> 0 bytes .../tmp/test-cases/ta-ACCJfDGwDQ/000/aa.wgt | Bin 1269 -> 0 bytes .../tmp/test-cases/ta-ACCJfDGwDQ/001/ab.wgt | Bin 1211 -> 0 bytes .../tmp/test-cases/ta-ACCJfDGwDQ/002/ac.wgt | Bin 1194 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/000/ao.wgt | Bin 1214 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/001/ap.wgt | Bin 1357 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/002/aq.wgt | Bin 1352 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/003/ar.wgt | Bin 1323 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/004/as.wgt | Bin 1372 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/005/at.wgt | Bin 1216 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/006/au.wgt | Bin 1215 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/007/av.wgt | Bin 1407 -> 0 bytes .../tmp/test-cases/ta-AYLMhryBnD/008/oa.wgt | Bin 1253 -> 0 bytes .../tmp/test-cases/ta-BnWPqNvNVo/000/aw.wgt | Bin 4883 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/000/ax.wgt | Bin 1214 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/001/ay.wgt | Bin 1271 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/002/az.wgt | Bin 1216 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/003/a1.wgt | Bin 1217 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/004/a2.wgt | Bin 1284 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/005/a3.wgt | Bin 1294 -> 0 bytes .../tmp/test-cases/ta-BxjoiWHaMr/006/a4.wgt | Bin 1273 -> 0 bytes .../tmp/test-cases/ta-CEGwkNQcWo/000/e2.wgt | Bin 1255 -> 0 bytes .../tmp/test-cases/ta-CEGwkNQcWo/001/e3.wgt | Bin 1269 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/000/a5.wgt | Bin 1277 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/001/a6.wgt | Bin 1418 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/002/a7.wgt | Bin 1418 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/003/a8.wgt | Bin 1418 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/004/a9.wgt | Bin 1403 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/005/ba.wgt | Bin 1427 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/006/bb.wgt | Bin 1387 -> 0 bytes .../tmp/test-cases/ta-DwhJBIJRQN/007/bc.wgt | Bin 1468 -> 0 bytes .../tmp/test-cases/ta-EGkPfzCBOz/000/dt.wgt | Bin 1195 -> 0 bytes .../tmp/test-cases/ta-EGkPfzCBOz/001/dg.wgt | Bin 1218 -> 0 bytes .../tmp/test-cases/ta-EGkPfzCBOz/002/v9.wgt | Bin 1212 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/000/bj.wgt | Bin 5017 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/001/bk.wgt | Bin 5097 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/002/bl.wgt | Bin 9614 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/003/bm.wgt | Bin 50417 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/004/bn.wgt | Bin 92682 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/005/bo.wgt | Bin 47868 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/006/bp.wgt | Bin 9086 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/007/ad.wgt | Bin 7650 -> 0 bytes .../tmp/test-cases/ta-FAFYMEGELU/008/ae.wgt | Bin 7348 -> 0 bytes .../tmp/test-cases/ta-FDGQBROtzW/000/dn.test | Bin 25846 -> 0 bytes .../w3c_tests/tmp/test-cases/ta-FDGQBROtzW/001/dm | Bin 1090 -> 0 bytes .../w3c_tests/tmp/test-cases/ta-GVVIvsdEUo/000/z3 | Bin 1558 -> 0 bytes .../tmp/test-cases/ta-GVVIvsdEUo/001/z4.html | Bin 1563 -> 0 bytes .../tmp/test-cases/ta-GVVIvsdEUo/002/z5.wgt | Bin 803 -> 0 bytes .../tmp/test-cases/ta-KNiLPOKdgQ/000/e1.wgt | Bin 1250 -> 0 bytes .../tmp/test-cases/ta-LQcjNKBLUZ/000/d9.wgt | Bin 933 -> 0 bytes .../tmp/test-cases/ta-LQcjNKBLUZ/001/d0.wgt | Bin 823 -> 0 bytes .../tmp/test-cases/ta-LTUJGJFCOU/000/d7.wgt | Bin 809 -> 0 bytes .../tmp/test-cases/ta-LTUJGJFCOU/001/d8.wgt | Bin 1021 -> 0 bytes .../tmp/test-cases/ta-LTUJGJFCOU/002/gb.wgt | Bin 812 -> 0 bytes .../tmp/test-cases/ta-LYLMhryBBT/000/bx.wgt | Bin 1298 -> 0 bytes .../tmp/test-cases/ta-LYLMhryBBT/001/by.wgt | Bin 1300 -> 0 bytes .../tmp/test-cases/ta-LYLMhryBBT/002/bz.wgt | Bin 1516 -> 0 bytes .../tmp/test-cases/ta-MFcsScFEaC/000/d3.wgt | Bin 778 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/000/b3.wgt | Bin 793 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/001/b4.wgt | Bin 795 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/002/b0.wgt | Bin 793 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/003/c1.wgt | Bin 831 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/004/c2.wgt | Bin 834 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/005/c3.wgt | Bin 791 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/006/c4.wgt | Bin 986 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/007/c5.wgt | Bin 1278 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/008/cc.wgt | Bin 986 -> 0 bytes .../tmp/test-cases/ta-RGNHRBWNZV/009/cv.wgt | Bin 1646 -> 0 bytes .../tmp/test-cases/ta-RRZxvvTFHx/000/b5.wgt | Bin 1021 -> 0 bytes .../tmp/test-cases/ta-RRZxvvTFHx/001/b6.wgt | Bin 1269 -> 0 bytes .../tmp/test-cases/ta-RawAIWHoMs/000/b1.wgt | Bin 1198 -> 0 bytes .../tmp/test-cases/ta-RawAIWHoMs/001/rd.wgt | Bin 1401 -> 0 bytes .../tmp/test-cases/ta-RawAIWHoMs/002/b2.wgt | Bin 1206 -> 0 bytes .../tmp/test-cases/ta-UEMbyHERkI/000/c6.wgt | Bin 1236 -> 0 bytes .../tmp/test-cases/ta-UEMbyHERkI/001/c7.wgt | Bin 1230 -> 0 bytes .../tmp/test-cases/ta-UEMbyHERkI/002/rb.wgt | Bin 1244 -> 0 bytes .../tmp/test-cases/ta-UEMbyHERkI/003/c8.wgt | Bin 1276 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/000/c9.wgt | Bin 1267 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/001/cq.wgt | Bin 1211 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/002/cw.wgt | Bin 1214 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/003/ce.wgt | Bin 1215 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/004/cr.wgt | Bin 1261 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/005/ct.wgt | Bin 1287 -> 0 bytes .../tmp/test-cases/ta-UScJfQHPPy/006/cy.wgt | Bin 1265 -> 0 bytes .../tmp/test-cases/ta-VdCEyDVSA/000/cp.wgt | Bin 2023 -> 0 bytes .../tmp/test-cases/ta-VdCEyDVSA/001/ca.wgt | Bin 1229 -> 0 bytes .../tmp/test-cases/ta-VdCEyDVSA/002/cs.wgt | Bin 1217 -> 0 bytes .../tmp/test-cases/ta-VdCEyDVSA/003/cd.wgt | Bin 1467 -> 0 bytes .../tmp/test-cases/ta-VdCEyDVSA/004/x1.wgt | Bin 1258 -> 0 bytes .../tmp/test-cases/ta-VdCEyDVSA/005/x2.wgt | Bin 1261 -> 0 bytes .../tmp/test-cases/ta-VerEfVGeTc/000/cf.wgt | Bin 1213 -> 0 bytes .../tmp/test-cases/ta-VerEfVGeTc/001/cg.wgt | Bin 1223 -> 0 bytes .../tmp/test-cases/ta-VerEfVGeTc/002/ch.wgt | Bin 1231 -> 0 bytes .../tmp/test-cases/ta-YUMJAPVEgI/000/cj.wgt | Bin 1170 -> 0 bytes .../tmp/test-cases/ta-YUMJAPVEgI/001/ck.wgt | Bin 1160 -> 0 bytes .../tmp/test-cases/ta-YUMJAPVEgI/002/cl.wgt | Bin 1152 -> 0 bytes .../tmp/test-cases/ta-YUMJAPVEgI/003/cz.wgt | Bin 1165 -> 0 bytes .../tmp/test-cases/ta-YUMJAPVEgI/004/cx.wgt | Bin 1208 -> 0 bytes .../tmp/test-cases/ta-ZjcdAxFMSx/000/dq.wgt | Bin 844 -> 0 bytes .../tmp/test-cases/ta-ZjcdAxFMSx/001/dw.wgt | Bin 843 -> 0 bytes .../tmp/test-cases/ta-aaaaaaaaaa/000/z1.wgt | Bin 1328 -> 0 bytes .../tmp/test-cases/ta-aaaaaaaaaa/001/z2.wgt | Bin 1306 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/000/af.wgt | Bin 1230 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/001/ag.wgt | Bin 1284 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/002/ah.wgt | Bin 1361 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/003/ai.wgt | Bin 1545 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/004/aj.wgt | Bin 1361 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/005/ak.wgt | Bin 1220 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/006/al.wgt | Bin 1209 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/007/am.wgt | Bin 1235 -> 0 bytes .../tmp/test-cases/ta-argMozRiC/008/an.wgt | Bin 1329 -> 0 bytes .../tmp/test-cases/ta-bbbbbbbbbb/000/xx.wgt | Bin 1047 -> 0 bytes .../tmp/test-cases/ta-dPOgiLQKNK/000/e4.wgt | Bin 1276 -> 0 bytes .../tmp/test-cases/ta-dPOgiLQKNK/001/e5.wgt | Bin 1289 -> 0 bytes .../tmp/test-cases/ta-dPOgiLQKNK/002/e6.wgt | Bin 1332 -> 0 bytes .../tmp/test-cases/ta-dPOgiLQKNK/003/e7.wgt | Bin 1289 -> 0 bytes .../ta-defaultlocale-ignore/000/ta-de-000.wgt | Bin 1074 -> 0 bytes .../ta-defaultlocale-ignore/001/ta-de-001.wgt | Bin 1467 -> 0 bytes .../ta-defaultlocale-ignore/002/ta-de-002.wgt | Bin 1478 -> 0 bytes .../ta-defaultlocale-ignore/003/ta-de-003.wgt | Bin 1472 -> 0 bytes .../ta-defaultlocale-ignore/004/ta-de-004.wgt | Bin 1451 -> 0 bytes .../ta-defaultlocale-usage/000/ta-de-000.wgt | Bin 968 -> 0 bytes .../ta-defaultlocale-usage/001/dlocuse01.wgt | Bin 1469 -> 0 bytes .../tmp/test-cases/ta-dxzVDWpaWg/000/bg.wgt | Bin 3142 -> 0 bytes .../tmp/test-cases/ta-dxzVDWpaWg/001/bh.wgt | Bin 4422 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/000/ix.wgt | Bin 5368 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/001/iy.wgt | Bin 5116 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/002/iz.wgt | Bin 5122 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/003/i1.wgt | Bin 5121 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/004/i2.wgt | Bin 5114 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/005/i3.wgt | Bin 5138 -> 0 bytes .../tmp/test-cases/ta-eHUaPbgfKg/006/i4.wgt | Bin 5116 -> 0 bytes .../tmp/test-cases/ta-hkWmGJgfve/000/bq.wgt | Bin 1014 -> 0 bytes .../tmp/test-cases/ta-hkWmGJgfve/001/br.wgt | Bin 817 -> 0 bytes .../tmp/test-cases/ta-hkWmGJgfve/002/bs.wgt | Bin 1590 -> 0 bytes .../000/gg.wgt | Bin 840 -> 0 bytes .../tmp/test-cases/ta-iipTwNshRg/000/d1.wgt | Bin 3406 -> 0 bytes .../tmp/test-cases/ta-iipTwNshRg/001/ga.wgt | Bin 3410 -> 0 bytes .../tmp/test-cases/ta-iuJHnskSHq/000/zz.wgt | Bin 1165 -> 0 bytes .../tmp/test-cases/ta-iuJHnskSHq/001/za.wgt | Bin 5230 -> 0 bytes .../tmp/test-cases/ta-iuJHnskSHq/002/zb.wgt | Bin 8954 -> 0 bytes .../tmp/test-cases/ta-iuJHnskSHq/003/zc.wgt | Bin 8964 -> 0 bytes .../tmp/test-cases/ta-klLDaEgJeU/000/bt.wgt | Bin 857 -> 0 bytes .../tmp/test-cases/ta-klLDaEgJeU/001/bu.wgt | Bin 1142 -> 0 bytes .../tmp/test-cases/ta-klLDaEgJeU/002/bv.wgt | Bin 1232 -> 0 bytes .../tmp/test-cases/ta-klLDaEgJeU/003/bw.wgt | Bin 1269 -> 0 bytes .../tmp/test-cases/ta-klLDaEgJeU/004/lt.wgt | Bin 612 -> 0 bytes .../tmp/test-cases/ta-klLDaEgJeU/005/amp.wgt | Bin 612 -> 0 bytes .../tmp/test-cases/ta-luyKMFABLX/000/d5.wgt | Bin 860 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/000/iq.wgt | Bin 5595 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/001/i9.wgt | Bin 5289 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/002/iw.wgt | Bin 5291 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/003/ie.wgt | Bin 5294 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/004/ir.wgt | Bin 5285 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/005/it.wgt | Bin 5311 -> 0 bytes .../tmp/test-cases/ta-nYAcofihvj/006/ib.wgt | Bin 5289 -> 0 bytes .../tmp/test-cases/ta-pIffQywZin/000/db.wgt | Bin 879 -> 0 bytes .../tmp/test-cases/ta-paIabGIIMC/000/dc.wgt | Bin 828 -> 0 bytes .../tmp/test-cases/ta-paIabGIIMC/001/dv.wgt | Bin 846 -> 0 bytes .../tmp/test-cases/ta-paWbGHyVrG/000/d4.wgt | Bin 936 -> 0 bytes .../tmp/test-cases/ta-qxLSCRCHlN/000/dk.wgt | Bin 518 -> 0 bytes .../tmp/test-cases/ta-rZdcMBExBX/000/df.wgt | Bin 819 -> 0 bytes .../tmp/test-cases/ta-rZdcMBExBX/002/ha.wgt | Bin 853 -> 0 bytes .../tmp/test-cases/ta-roCaKRxZhS/000/d2.wgt | Bin 8092 -> 0 bytes .../tmp/test-cases/ta-sdwhMozwIc/000/b7.wgt | Bin 1507 -> 0 bytes .../tmp/test-cases/ta-sdwhMozwIc/001/b8.wgt | Bin 1421 -> 0 bytes .../tmp/test-cases/ta-sdwhMozwIc/002/b9.wgt | Bin 1506 -> 0 bytes .../tmp/test-cases/ta-uLHyIMvLwz/000/dl.wgt | Bin 1098 -> 0 bytes .../tmp/test-cases/ta-uLHyIMvLwz/001/split.wgt.001 | Bin 200 -> 0 bytes .../tmp/test-cases/ta-uLHyIMvLwz/002/dp.wgt | Bin 22 -> 0 bytes .../tmp/test-cases/ta-vOBaOcWfll/000/e8.wgt | Bin 843 -> 0 bytes .../tmp/test-cases/ta-vcYJAPVEym/000/cu.wgt | Bin 1313 -> 0 bytes .../tmp/test-cases/ta-vcYJAPVEym/001/ci.wgt | Bin 1305 -> 0 bytes .../tmp/test-cases/ta-vcYJAPVEym/002/ra.wgt | Bin 1278 -> 0 bytes .../tmp/test-cases/ta-vcYJAPVEym/003/co.wgt | Bin 1296 -> 0 bytes .../tmp/test-cases/ta-viewmodes/001/viewb.wgt | Bin 1627 -> 0 bytes .../tmp/test-cases/ta-viewmodes/005/viewf.wgt | Bin 1663 -> 0 bytes .../tmp/test-cases/ta-viewmodes/006/viewg.wgt | Bin 1662 -> 0 bytes .../tmp/test-cases/ta-viewmodes/007/viewh.wgt | Bin 1655 -> 0 bytes .../tmp/test-cases/ta-viewmodes/008/viewi.wgt | Bin 1614 -> 0 bytes .../tmp/test-cases/ta-xlgUWUVzCY/000/d6.wgt | Bin 1560 -> 0 bytes tests/w3c_tests/w3c_tests.cpp | 38 - tests/warp_tests/CMakeLists.txt | 36 - tests/warp_tests/TestCases.cpp | 276 -- tests/warp_tests/WarpIriTestBase.cpp | 192 - tests/warp_tests/WarpIriTestBase.h | 89 - tests/warp_tests/test-cases/access_info.wgt | Bin 529 -> 0 bytes tests/warp_tests/test-cases/bondiAA.wgt | Bin 582 -> 0 bytes tests/warp_tests/warp_iri_tests.cpp | 72 - tests/widget_module_tests/CMakeLists.txt | 31 - tests/widget_module_tests/TestCases.cpp | 224 -- tests/widget_module_tests/empty.wgt | Bin 454 -> 0 bytes tests/widget_module_tests/widget_tests.cpp | 59 - tests/wrt_global_settings.cpp | 46 - tools/stylecheck/errorDictionary.py | 91 - wrt_policy_setter.sh | 40 - 1051 files changed, 45409 deletions(-) delete mode 100644 CMakeUtils.txt delete mode 100644 ace_client/CMakeLists.txt delete mode 100644 ace_client/include/ace_client.h delete mode 100644 ace_client/include/ace_client_helper.h delete mode 100644 ace_client/include/ace_client_types.h delete mode 100644 ace_client/src/CMakeLists.txt delete mode 100644 ace_client/src/ace_client.cpp delete mode 100644 ace_client/src/example/CMakeLists.txt delete mode 100644 ace_client/src/example/ace-thin-client-example.cpp delete mode 100644 data/wrt_widget_default_icon.png delete mode 100644 debian/wrt-dev.install.in delete mode 100644 debian/wrt-test.install.in delete mode 100644 debian/wrt-test.postinst delete mode 100755 debian/wrt.postinst.in_all delete mode 100644 mockups/AceDAOReadOnly_mock.cpp delete mode 100644 mockups/AceDAOReadOnly_mock.h delete mode 100644 mockups/PolicyInformationPoint_mock.h delete mode 100644 mockups/PopupInvoker_mock.cpp delete mode 100644 mockups/PopupInvoker_mock.h delete mode 100644 mockups/WrtDatabase_mock.h delete mode 100644 mockups/dbus_client_mock.cpp delete mode 100644 mockups/dbus_client_mock.h delete mode 100644 mockups/event_support_mock.h delete mode 100644 mockups/rpc_client_mock.cpp delete mode 100644 mockups/rpc_client_mock.h delete mode 100644 mockups/widget_dao_read_only_mock.cpp delete mode 100644 mockups/widget_dao_read_only_mock.h delete mode 100644 packaging/wrt-engine.spec delete mode 100644 pkgconfigs/wrt-ace-client.pc.in delete mode 100644 pkgconfigs/wrt-engine.pc.in delete mode 100644 pkgconfigs/wrt-plugin-api.pc.in delete mode 100644 pkgconfigs/wrt-plugin-loading.pc.in delete mode 100644 roaming_error.msg delete mode 100644 scripts/DESCRIPTION delete mode 100755 scripts/wrt_install.expect delete mode 100644 scripts/wrt_install.sh delete mode 100755 scripts/wrt_kill.expect delete mode 100755 scripts/wrt_mount_nfs.expect delete mode 100755 scripts/wrt_test.expect delete mode 100644 scripts/wrt_test.sh delete mode 100644 src/API/DESCRIPTION delete mode 100644 src/API/api_callbacks_translate.cpp delete mode 100644 src/API/api_callbacks_translate.h delete mode 100644 src/API/export.h delete mode 100644 src/API/wrt_api.cpp delete mode 100644 src/API/wrt_api.h delete mode 100644 src/API/wrt_config.cpp delete mode 100644 src/API/wrt_config.h delete mode 100755 src/API/wrt_type.h delete mode 100644 src/access-control/CMakeLists.txt delete mode 100644 src/access-control/DEPRECATED/AceUpdateEventMessages.cpp delete mode 100644 src/access-control/DEPRECATED/AceUpdateEventMessages.h delete mode 100644 src/access-control/DEPRECATED/session_manager.cpp delete mode 100644 src/access-control/DEPRECATED/session_manager.h delete mode 100644 src/access-control/DESCRIPTION delete mode 100644 src/access-control/ace_settings_logic.cpp delete mode 100644 src/access-control/ace_settings_logic.h delete mode 100644 src/access-control/attribute_facade.cpp delete mode 100644 src/access-control/attribute_facade.h delete mode 100644 src/access-control/i_ace_permissions.h delete mode 100644 src/access-control/security_controller.cpp delete mode 100644 src/access-control/security_controller.h delete mode 100644 src/access-control/security_logic.cpp delete mode 100644 src/access-control/security_logic.h delete mode 100644 src/access-control/server/ace_settings_server_factory.h delete mode 100644 src/access-control/server/i_ace_settings_client.h delete mode 100644 src/access-control/server/i_ace_settings_server.h delete mode 100644 src/access-control/server/ipc/ace_settings_server_factory_ipc.cpp delete mode 100644 src/access-control/server/ipc/ace_settings_server_ipc.cpp delete mode 100644 src/access-control/server/ipc/ace_settings_server_ipc.h delete mode 100644 src/access-control/server/ipc/oim_generator.cpp delete mode 100644 src/access-control/server/ipc/oim_generator.h delete mode 100644 src/access-control/server/ipc/oim_messages delete mode 100644 src/access-control/server/null/ace_settings_server_factory_null.cpp delete mode 100644 src/access-control/simple_roaming_agent.cpp delete mode 100755 src/access-control/simple_roaming_agent.h delete mode 100644 src/arch/CMakeLists.txt delete mode 100644 src/arch/DESCRIPTION delete mode 100644 src/common/DESCRIPTION delete mode 100644 src/common/ace_settings_address.h delete mode 100644 src/common/force_stop.cpp delete mode 100644 src/common/force_stop.h delete mode 100644 src/common/new_strdup.h delete mode 100644 src/common/wrt_db_types.h delete mode 100644 src/common/wrt_error.h delete mode 100644 src/domain/application_launcher.cpp delete mode 100644 src/domain/application_launcher.h delete mode 100644 src/domain/child_protection/DESCRIPTION delete mode 100644 src/domain/child_protection/child_protection_agent.cpp delete mode 100644 src/domain/child_protection/child_protection_agent.h delete mode 100644 src/domain/common_error.h delete mode 100644 src/domain/dnet/DESCRIPTION delete mode 100644 src/domain/dnet/dnet.cpp delete mode 100644 src/domain/dnet/dnet.h delete mode 100644 src/domain/efl/AutoSavePopup.cpp delete mode 100644 src/domain/efl/AutoSavePopup.h delete mode 100644 src/domain/efl/CommunicationBox.cpp delete mode 100644 src/domain/efl/CommunicationBox.h delete mode 100644 src/domain/efl/DESCRIPTION delete mode 100644 src/domain/efl/base_browser_setting.h delete mode 100644 src/domain/efl/combobox_picker.cpp delete mode 100644 src/domain/efl/combobox_picker.h delete mode 100644 src/domain/efl/evas_object.cpp delete mode 100644 src/domain/efl/evas_object.h delete mode 100644 src/domain/efl/regular_browser_setting.cpp delete mode 100644 src/domain/efl/regular_browser_setting.h delete mode 100755 src/domain/efl/roaming_agent.cpp delete mode 100755 src/domain/efl/roaming_agent.h delete mode 100644 src/domain/efl/vconf_browser_setting.cpp delete mode 100644 src/domain/efl/vconf_browser_setting.h delete mode 100644 src/domain/efl/view_logic.cpp delete mode 100644 src/domain/efl/view_logic.h delete mode 100644 src/domain/efl/view_logic_apps_support.cpp delete mode 100644 src/domain/efl/view_logic_apps_support.h delete mode 100644 src/domain/efl/view_logic_keys_support.cpp delete mode 100644 src/domain/efl/view_logic_keys_support.h delete mode 100644 src/domain/efl/view_logic_password_support.cpp delete mode 100644 src/domain/efl/view_logic_password_support.h delete mode 100644 src/domain/efl/view_logic_scheme_support.cpp delete mode 100644 src/domain/efl/view_logic_scheme_support.h delete mode 100644 src/domain/efl/view_logic_security_support.cpp delete mode 100644 src/domain/efl/view_logic_security_support.h delete mode 100644 src/domain/efl/view_logic_storage_support.cpp delete mode 100644 src/domain/efl/view_logic_storage_support.h delete mode 100644 src/domain/efl/view_logic_uri_support.cpp delete mode 100644 src/domain/efl/view_logic_uri_support.h delete mode 100644 src/domain/efl/widget_view.h delete mode 100644 src/domain/efl/window_data.cpp delete mode 100644 src/domain/efl/window_data.h delete mode 100644 src/domain/global_context.cpp delete mode 100644 src/domain/global_context.h delete mode 100644 src/domain/popups_server.cpp delete mode 100644 src/domain/popups_server.h delete mode 100644 src/domain/powder/DESCRIPTION delete mode 100644 src/domain/powder/powder_syntax.cpp delete mode 100644 src/domain/powder/powder_syntax.h delete mode 100644 src/domain/user_agent_profile.cpp delete mode 100644 src/domain/user_agent_profile.h delete mode 100644 src/domain/user_callback_controller.cpp delete mode 100644 src/domain/user_callback_controller.h delete mode 100644 src/domain/user_callback_logic.cpp delete mode 100644 src/domain/user_callback_logic.h delete mode 100644 src/domain/widget_controller.cpp delete mode 100644 src/domain/widget_controller.h delete mode 100644 src/domain/widget_launch_struct.h delete mode 100644 src/domain/widget_localize_model.cpp delete mode 100644 src/domain/widget_localize_model.h delete mode 100644 src/domain/widget_logic.cpp delete mode 100644 src/domain/widget_logic.h delete mode 100644 src/framework/DESCRIPTION delete mode 100644 src/framework/framework_efl.h delete mode 100644 src/framework/framework_ewebkit.h delete mode 100644 src/global_logic/global_logic.cpp delete mode 100644 src/global_logic/global_logic.h delete mode 100644 src/global_logic/global_model.cpp delete mode 100644 src/global_logic/global_model.h delete mode 100644 src/plugin-service/plugin-loading/CMakeLists.txt delete mode 100644 src/plugin-service/plugin-loading/efl/javascript_functions.cpp delete mode 100644 src/plugin-service/plugin-loading/efl/javascript_functions.h delete mode 100644 src/plugin-service/plugin-loading/efl/js_function_manager.cpp delete mode 100644 src/plugin-service/plugin-loading/efl/webkit_interface.cpp delete mode 100644 src/plugin-service/plugin-loading/explorer.cpp delete mode 100644 src/plugin-service/plugin-loading/explorer.h delete mode 100644 src/plugin-service/plugin-loading/js_function_declaration.cpp delete mode 100644 src/plugin-service/plugin-loading/js_function_declaration.h delete mode 100644 src/plugin-service/plugin-loading/js_function_manager.h delete mode 100644 src/plugin-service/plugin-loading/js_object.cpp delete mode 100644 src/plugin-service/plugin-loading/js_object.h delete mode 100644 src/plugin-service/plugin-loading/js_object_declaration.cpp delete mode 100644 src/plugin-service/plugin-loading/js_object_declaration.h delete mode 100755 src/plugin-service/plugin-loading/plugin.cpp delete mode 100644 src/plugin-service/plugin-loading/plugin.h delete mode 100644 src/plugin-service/plugin-loading/plugin_iframe_support.cpp delete mode 100644 src/plugin-service/plugin-loading/plugin_iframe_support.h delete mode 100644 src/plugin-service/plugin-loading/plugin_logic.cpp delete mode 100644 src/plugin-service/plugin-loading/plugin_logic.h delete mode 100644 src/plugin-service/plugin-loading/plugin_model.cpp delete mode 100644 src/plugin-service/plugin-loading/plugin_model.h delete mode 100644 src/plugin-service/plugin-loading/webkit_interface.h delete mode 100755 src/plugin-service/plugin-loading/wrt_plugin_export.h delete mode 100644 src/plugin-service/plugin_api.cpp delete mode 100644 src/plugin-service/plugin_api.h delete mode 100644 src/plugin-service/plugin_api_controller.cpp delete mode 100644 src/plugin-service/plugin_api_controller.h delete mode 100644 src/plugin-service/plugin_api_controller_data_types.h delete mode 100644 src/plugin-service/plugin_api_logic.cpp delete mode 100644 src/plugin-service/plugin_api_logic.h delete mode 100644 src/popup-process/CMakeLists.txt delete mode 100644 src/popup-process/PopupEnum.h delete mode 100644 src/popup-process/PopupInvoker.cpp delete mode 100644 src/popup-process/PopupInvoker.h delete mode 100644 src/popup-process/PopupSerializer.cpp delete mode 100644 src/popup-process/PopupSerializer.h delete mode 100644 src/popup-process/YesNoPopup.cpp delete mode 100644 src/popup-process/YesNoPopup.h delete mode 100644 src/popup-process/wrt-popup.cpp delete mode 100644 src/popup-process/wrt-popup.h delete mode 100755 src/profiling/ace-dependencies/build.sh delete mode 100755 src/profiling/ace-dependencies/runTests.sh delete mode 100644 src/profiling/ace-dependencies/src/test_empty.cpp delete mode 100644 src/profiling/ace-dependencies/src/test_openssl.cpp delete mode 100644 src/profiling/ace-dependencies/src/test_pcre.cpp delete mode 100644 src/profiling/ace-dependencies/src/test_timer.cpp delete mode 100644 src/profiling/ace-dependencies/src/test_xml2.cpp delete mode 100644 src/profiling/ace-dependencies/src/test_xmlsec.cpp delete mode 100644 src/profiling/script/test-widgets/wac2_0Test.wgt delete mode 100644 src/rpc/security-daemon/api/ace_server_api.cpp delete mode 100644 src/rpc/security-daemon/api/ace_server_api.h delete mode 100644 src/rpc/security-daemon/api/ocsp_server_api.cpp delete mode 100644 src/rpc/security-daemon/api/ocsp_server_api.h delete mode 100644 src/rpc/security-daemon/api/popup_ace_data_types.h delete mode 100644 src/rpc/security-daemon/api/popup_response_service_api.h delete mode 100644 src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.cpp delete mode 100644 src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.h delete mode 100644 src/rpc/security-daemon/popup_response_service/popup_response_service.cpp delete mode 100644 src/rpc/security-daemon/popup_response_service/popup_response_service.h delete mode 100644 src/rpc/security-daemon/popup_response_service/popup_response_service_config.h delete mode 100644 src/rpc/security-daemon/security_daemon_dbus_config.cpp delete mode 100644 src/rpc/security-daemon/security_daemon_dbus_config.h delete mode 100644 src/rpc/ui-process/fake_rpc_connection.cpp delete mode 100644 src/rpc/ui-process/fake_rpc_connection.h delete mode 100644 src/rpc/ui-process/rpc_client.cpp delete mode 100644 src/rpc/ui-process/rpc_client.h delete mode 100644 src/rpc/ui-process/rpc_server.cpp delete mode 100644 src/rpc/ui-process/rpc_server.h delete mode 100644 src/rpc/ui-process/ui_process_rpc.h delete mode 100755 src/setting/CMakeLists.txt delete mode 100644 src/setting/webapp-detail/CMakeLists.txt delete mode 100644 src/setting/webapp-detail/detailview.cpp delete mode 100644 src/setting/webapp-detail/detailview.h delete mode 100644 src/setting/webapp-detail/edc/CMakeLists.txt delete mode 100644 src/setting/webapp-detail/edc/defs.h delete mode 100644 src/setting/webapp-detail/edc/main.edc delete mode 100644 src/setting/webapp-detail/feature.h delete mode 100644 src/setting/webapp-detail/mainview.cpp delete mode 100644 src/setting/webapp-detail/mainview.h delete mode 100644 src/setting/webapp-detail/permview.cpp delete mode 100644 src/setting/webapp-detail/permview.h delete mode 100644 src/setting/webapp-detail/tizen_feature.cpp delete mode 100644 src/setting/webapp-detail/tizen_feature.h delete mode 100644 src/setting/webapp-detail/ug.cpp delete mode 100644 src/setting/webapp-detail/util.h delete mode 100644 src/setting/webapp-detail/view.cpp delete mode 100644 src/setting/webapp-detail/view.h delete mode 100644 src/setting/webapp-detail/wac_feature.cpp delete mode 100644 src/setting/webapp-detail/wac_feature.h delete mode 100644 src/shared-data/widget_state_property.cpp delete mode 100644 src/shared-data/widget_state_property.h delete mode 100644 src/shared-data/wrt_shared_object.cpp delete mode 100644 src/shared-data/wrt_shared_object.h delete mode 100644 src/utils/DESCRIPTION delete mode 100644 src/utils/FreeLogic.h delete mode 100644 tests/CMakeLists.txt delete mode 100644 tests/DESCRIPTION delete mode 100644 tests/ace_client_tests/CMakeLists.txt delete mode 100644 tests/ace_client_tests/ace_client_tests.cpp delete mode 100644 tests/ace_client_tests/test_cases.cpp delete mode 100644 tests/dao_tests/CMakeLists.txt delete mode 100644 tests/dao_tests/TestCases_FeatureDAO.cpp delete mode 100644 tests/dao_tests/TestCases_GlobalDAO.cpp delete mode 100644 tests/dao_tests/TestCases_PluginDAO.cpp delete mode 100644 tests/dao_tests/TestCases_PropertyDAO.cpp delete mode 100644 tests/dao_tests/TestCases_WidgetDAO.cpp delete mode 100644 tests/dao_tests/tests_dao.cpp delete mode 100755 tests/dao_tests/wrt_dao_tests_prepare_db.sh delete mode 100644 tests/detail/efl/loop_control.cpp delete mode 100644 tests/detail/include/loop_control.h delete mode 100644 tests/engine_tests/CMakeLists.txt delete mode 100644 tests/engine_tests/TestCases.cpp delete mode 100644 tests/engine_tests/engine_tests.cpp delete mode 100644 tests/smack_tests/CMakeLists.txt delete mode 100644 tests/smack_tests/TestSuite01.cpp delete mode 100644 tests/smack_tests/smack_tests.cpp delete mode 100644 tests/smack_tests/test-cases/CMakeLists.txt delete mode 100644 tests/smack_tests/test-cases/smack-test.xml delete mode 100644 tests/smack_tests/test-cases/smack01.wgt delete mode 100644 tests/smack_tests/test-cases/smack02.wgt delete mode 100644 tests/smack_tests/test_tools.h delete mode 100644 tests/tests_common_lib/CMakeLists.txt delete mode 100644 tests/tests_common_lib/efl/CMakeLists.txt delete mode 100644 tests/vcore_tests/CMakeLists.txt delete mode 100644 tests/vcore_tests/TestBase.cpp delete mode 100644 tests/vcore_tests/TestBase.h delete mode 100644 tests/vcore_tests/TestCases.cpp delete mode 100644 tests/vcore_tests/test-cases/keys/CAbundle.crt delete mode 100644 tests/vcore_tests/test-cases/keys/README delete mode 100644 tests/vcore_tests/test-cases/keys/filip_rsa_cert.pem delete mode 100644 tests/vcore_tests/test-cases/keys/filip_rsa_key.pem delete mode 100644 tests/vcore_tests/test-cases/keys/magda_dsa_cert.pem delete mode 100644 tests/vcore_tests/test-cases/keys/magda_dsa_key.pem delete mode 100644 tests/vcore_tests/test-cases/keys/ocsp_level0deprecated.crt delete mode 100644 tests/vcore_tests/test-cases/keys/ocsp_level1.crt delete mode 100644 tests/vcore_tests/test-cases/keys/ocsp_level2.crt delete mode 100644 tests/vcore_tests/test-cases/keys/ocsp_rootca.crt delete mode 100644 tests/vcore_tests/test-cases/keys/operator.root.cert.pem delete mode 100644 tests/vcore_tests/test-cases/keys/operator.second.cert.pem delete mode 100644 tests/vcore_tests/test-cases/keys/operator.second.key.pem delete mode 100644 tests/vcore_tests/test-cases/keys/operator.second.p12 delete mode 100644 tests/vcore_tests/test-cases/keys/root_cacert.pem delete mode 100644 tests/vcore_tests/test-cases/keys/root_cakey.pem delete mode 100644 tests/vcore_tests/test-cases/widgets/access_info.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/blankWidget.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/fingerprint_test.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/multisig.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/not_allowed.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/recognized.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/recognized1.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/save_cert.wgt delete mode 100644 tests/vcore_tests/test-cases/widgets/unrecognized.wgt delete mode 100644 tests/vcore_tests/vcore_tests.cpp delete mode 100644 tests/w3c_tests/CMakeLists.txt delete mode 100644 tests/w3c_tests/InstallerWrapper.cpp delete mode 100644 tests/w3c_tests/InstallerWrapper.h delete mode 100644 tests/w3c_tests/TestCases.cpp delete mode 100644 tests/w3c_tests/W3CTestBase.cpp delete mode 100644 tests/w3c_tests/W3CTestBase.h delete mode 100644 tests/w3c_tests/download.sh delete mode 100755 tests/w3c_tests/show-diff.sh delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/001/i18nlro01.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/002/i18nlro02.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/003/i18nlro03.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/004/i18nlro04.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/005/i18nlro05.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/006/i18nlro06.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/007/i18nlro07.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/008/i18nlro08.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/009/i18nlro09.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/010/i18nlro10.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/011/i18nlro11.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/012/i18nlro12.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/013/i18nlro13.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/014/i18nlro14.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/015/i18nlro15.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/016/i18nlro16.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/017/i18nlro17.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/018/i18nlro18.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/019/i18nlro19.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/020/i18nlro20.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/021/i18nlro21.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/022/i18nlro22.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/023/i18nlro23.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/026/i18nlro26.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/027/i18nlro27.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/028/i18nlro28.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/029/i18nlro29.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/030/i18nlro30.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/031/i18nlro31.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/032/i18nlro32.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/033/i18nlro33.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/034/i18nlro34.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/035/i18nlro35.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/036/i18nlro36.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/037/i18nlro37.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/038/i18nlro38.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/039/i18nlro39.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/040/i18nlro40.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/041/i18nlro41.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/042/i18nlro42.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/043/i18nlro43.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-lro/044/i18nlro44.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/001/i18nltr01.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/002/i18nltr02.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/003/i18nltr03.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/004/i18nltr04.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/005/i18nltr05.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/006/i18nltr06.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/007/i18nltr07.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/008/i18nltr08.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/009/i18nltr09.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/010/i18nltr10.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/011/i18nltr11.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/012/i18nltr12.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/013/i18nltr13.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/014/i18nltr14.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/015/i18nltr15.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/016/i18nltr16.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/017/i18nltr17.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/018/i18nltr18.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/019/i18nltr19.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/020/i18nltr20.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/021/i18nltr21.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/022/i18nltr22.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/023/i18nltr23.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/026/i18nltr26.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/027/i18nltr27.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/028/i18nltr28.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/029/i18nltr29.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/030/i18nltr30.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/031/i18nltr31.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/032/i18nltr32.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/033/i18nltr33.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/034/i18nltr34.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/035/i18nltr35.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/036/i18nltr36.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/037/i18nltr37.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/038/i18nltr38.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/039/i18nltr39.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/040/i18nltr40.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/041/i18nltr41.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/042/i18nltr42.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/043/i18nltr43.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-ltr/044/i18nltr44.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/001/i18nrlo01.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/002/i18nrlo02.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/003/i18nrlo03.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/004/i18nrlo04.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/005/i18nrlo05.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/006/i18nrlo06.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/007/i18nrlo07.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/008/i18nrlo08.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/009/i18nrlo09.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/010/i18nrlo10.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/011/i18nrlo11.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/012/i18nrlo12.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/013/i18nrlo13.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/014/i18nrlo14.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/015/i18nrlo15.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/016/i18nrlo16.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/017/i18nrlo17.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/018/i18nrlo18.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/019/i18nrlo19.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/020/i18nrlo20.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/021/i18nrlo21.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/022/i18nrlo22.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/023/i18nrlo23.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/026/i18nrlo26.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/027/i18nrlo27.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/028/i18nrlo28.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/029/i18nrlo29.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/030/i18nrlo30.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/031/i18nrlo31.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/032/i18nrlo32.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/033/i18nrlo33.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/034/i18nrlo34.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/035/i18nrlo35.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/036/i18nrlo36.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/037/i18nrlo37.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/038/i18nrlo38.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/039/i18nrlo39.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/040/i18nrlo40.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/041/i18nrlo41.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/042/i18nrlo42.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/043/i18nrlo43.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rlo/044/i18nrlo44.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/001/i18nrtl01.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/002/i18nrtl02.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/003/i18nrtl03.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/004/i18nrtl04.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/005/i18nrtl05.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/006/i18nrtl06.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/007/i18nrtl07.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/008/i18nrtl08.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/009/i18nrtl09.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/010/i18nrtl10.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/011/i18nrtl11.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/012/i18nrtl12.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/013/i18nrtl13.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/014/i18nrtl14.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/015/i18nrtl15.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/016/i18nrtl16.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/017/i18nrtl17.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/018/i18nrtl18.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/019/i18nrtl19.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/020/i18nrtl20.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/021/i18nrtl21.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/022/i18nrtl22.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/023/i18nrtl23.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/026/i18nrtl26.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/027/i18nrtl27.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/028/i18nrtl28.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/029/i18nrtl29.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/030/i18nrtl30.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/031/i18nrtl31.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/032/i18nrtl32.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/033/i18nrtl33.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/034/i18nrtl34.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/035/i18nrtl35.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/036/i18nrtl36.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/037/i18nrtl37.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/038/i18nrtl38.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/039/i18nrtl39.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/040/i18nrtl40.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/041/i18nrtl41.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/042/i18nrtl42.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/043/i18nrtl43.wgt delete mode 100644 tests/w3c_tests/test-cases/i18n-rtl/044/i18nrtl44.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/000/aa.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/001/ab.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/002/ac.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/000/ao.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/001/ap.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/002/aq.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/003/ar.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/004/as.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/005/at.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/006/au.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/007/av.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-AYLMhryBnD/008/oa.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BnWPqNvNVo/000/aw.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/000/ax.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/001/ay.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/002/az.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/003/a1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/004/a2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/005/a3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-BxjoiWHaMr/006/a4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-CEGwkNQcWo/000/e2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-CEGwkNQcWo/001/e3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/000/a5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/001/a6.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/002/a7.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/003/a8.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/004/a9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/005/ba.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/006/bb.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/007/bc.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/008/bd.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/009/be.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-DwhJBIJRQN/010/bf.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-EGkPfzCBOz/000/dt.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-EGkPfzCBOz/001/dg.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-EGkPfzCBOz/002/v9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/000/bj.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/001/bk.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/002/bl.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/003/bm.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/004/bn.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/005/bo.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/006/bp.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/007/ad.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FAFYMEGELU/008/ae.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-FDGQBROtzW/000/dn.test delete mode 100644 tests/w3c_tests/test-cases/ta-FDGQBROtzW/001/dm delete mode 100644 tests/w3c_tests/test-cases/ta-GVVIvsdEUo/000/z3 delete mode 100644 tests/w3c_tests/test-cases/ta-GVVIvsdEUo/001/z4.html delete mode 100644 tests/w3c_tests/test-cases/ta-GVVIvsdEUo/002/z5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-KNiLPOKdgQ/000/e1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LQcjNKBLUZ/000/d9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LQcjNKBLUZ/001/d0.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LTUJGJFCOU/000/d7.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LTUJGJFCOU/001/d8.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LTUJGJFCOU/002/gb.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LYLMhryBBT/000/bx.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LYLMhryBBT/001/by.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-LYLMhryBBT/002/bz.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-MFcsScFEaC/000/d3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/000/b3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/001/b4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/002/b0.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/003/c1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/004/c2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/005/c3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/006/c4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/007/c5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/008/cc.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RGNHRBWNZV/009/cv.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RRZxvvTFHx/000/b5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RRZxvvTFHx/001/b6.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RawAIWHoMs/000/b1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RawAIWHoMs/001/rd.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-RawAIWHoMs/002/b2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UEMbyHERkI/000/c6.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UEMbyHERkI/001/c7.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UEMbyHERkI/002/rb.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UEMbyHERkI/003/c8.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/000/c9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/001/cq.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/002/cw.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/003/ce.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/004/cr.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/005/ct.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-UScJfQHPPy/006/cy.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VdCEyDVSA/000/cp.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VdCEyDVSA/001/ca.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VdCEyDVSA/002/cs.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VdCEyDVSA/003/cd.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VdCEyDVSA/004/x1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VdCEyDVSA/005/x2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VerEfVGeTc/000/cf.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VerEfVGeTc/001/cg.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-VerEfVGeTc/002/ch.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-YUMJAPVEgI/000/cj.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-YUMJAPVEgI/001/ck.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-YUMJAPVEgI/002/cl.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-YUMJAPVEgI/003/cz.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-YUMJAPVEgI/004/cx.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ZjcdAxFMSx/000/dq.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ZjcdAxFMSx/001/dw.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ZjcdAxFMSx/002/hh.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-aaaaaaaaaa/000/z1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-aaaaaaaaaa/001/z2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/000/af.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/001/ag.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/002/ah.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/003/ai.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/004/aj.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/005/ak.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/006/al.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/007/am.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-argMozRiC/008/an.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-bbbbbbbbbb/000/xx.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-dPOgiLQKNK/000/e4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-dPOgiLQKNK/001/e5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-dPOgiLQKNK/002/e6.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-dPOgiLQKNK/003/e7.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-ignore/000/ta-de-000.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-ignore/001/ta-de-001.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-ignore/002/ta-de-002.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-ignore/003/ta-de-003.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-ignore/004/ta-de-004.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-usage/000/ta-de-000.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-defaultlocale-usage/001/dlocuse01.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-dxzVDWpaWg/000/bg.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-dxzVDWpaWg/001/bh.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/000/ix.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/001/iy.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/002/iz.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/003/i1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/004/i2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/005/i3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-eHUaPbgfKg/006/i4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-hkWmGJgfve/000/bq.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-hkWmGJgfve/001/br.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-hkWmGJgfve/002/bs.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-ignore-unrequired-feature-with-invalid-name/000/gg.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-iipTwNshRg/000/d1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-iipTwNshRg/001/ga.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/000/its0.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/001/its1.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/002/its2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/003/its3.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/004/its4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/005/its5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/007/its7.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/008/its8.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/009/its9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/010/its10.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/011/its11.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/012/its12.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/013/its13.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/014/its14.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-its/015/its15.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-iuJHnskSHq/000/zz.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-iuJHnskSHq/001/za.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-iuJHnskSHq/002/zb.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-iuJHnskSHq/003/zc.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-klLDaEgJeU/000/bt.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-klLDaEgJeU/001/bu.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-klLDaEgJeU/002/bv.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-klLDaEgJeU/003/bw.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-klLDaEgJeU/004/lt.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-klLDaEgJeU/005/amp.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-luyKMFABLX/000/d5.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/000/iq.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/001/i9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/002/iw.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/003/ie.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/004/ir.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/005/it.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-nYAcofihvj/006/ib.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-pIffQywZin/000/db.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-paIabGIIMC/000/dc.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-paIabGIIMC/001/dv.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-paWbGHyVrG/000/d4.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-qxLSCRCHlN/000/dk.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-rZdcMBExBX/000/df.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-rZdcMBExBX/001/dr.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-rZdcMBExBX/002/ha.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-roCaKRxZhS/000/d2.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-sdwhMozwIc/000/b7.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-sdwhMozwIc/001/b8.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-sdwhMozwIc/002/b9.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-uLHyIMvLwz/000/dl.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-uLHyIMvLwz/001/split.wgt.001 delete mode 100644 tests/w3c_tests/test-cases/ta-uLHyIMvLwz/002/dp.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-vOBaOcWfll/000/e8.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-vcYJAPVEym/000/cu.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-vcYJAPVEym/001/ci.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-vcYJAPVEym/002/ra.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-vcYJAPVEym/003/co.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-viewmodes/001/viewb.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-viewmodes/005/viewf.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-viewmodes/006/viewg.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-viewmodes/007/viewh.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-viewmodes/008/viewi.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-xGYcVTMoAX/000/ds.wgt delete mode 100644 tests/w3c_tests/test-cases/ta-xlgUWUVzCY/000/d6.wgt delete mode 100644 tests/w3c_tests/test-suite.xml delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/001/i18nlro01.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/002/i18nlro02.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/003/i18nlro03.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/004/i18nlro04.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/005/i18nlro05.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/006/i18nlro06.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/007/i18nlro07.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/008/i18nlro08.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/009/i18nlro09.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/010/i18nlro10.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/011/i18nlro11.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/012/i18nlro12.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/013/i18nlro13.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/014/i18nlro14.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/015/i18nlro15.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/016/i18nlro16.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/017/i18nlro17.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/018/i18nlro18.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/019/i18nlro19.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/020/i18nlro20.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/021/i18nlro21.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/022/i18nlro22.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/023/i18nlro23.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/026/i18nlro26.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/027/i18nlro27.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/028/i18nlro28.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/029/i18nlro29.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/030/i18nlro30.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/031/i18nlro31.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/032/i18nlro32.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/033/i18nlro33.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/034/i18nlro34.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/035/i18nlro35.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/036/i18nlro36.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/037/i18nlro37.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/038/i18nlro38.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/039/i18nlro39.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/040/i18nlro40.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/041/i18nlro41.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/042/i18nlro42.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/043/i18nlro43.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-lro/044/i18nlro44.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/001/i18nltr01.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/002/i18nltr02.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/003/i18nltr03.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/004/i18nltr04.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/005/i18nltr05.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/006/i18nltr06.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/007/i18nltr07.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/008/i18nltr08.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/009/i18nltr09.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/010/i18nltr10.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/011/i18nltr11.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/012/i18nltr12.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/013/i18nltr13.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/014/i18nltr14.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/015/i18nltr15.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/016/i18nltr16.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/017/i18nltr17.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/018/i18nltr18.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/019/i18nltr19.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/020/i18nltr20.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/021/i18nltr21.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/022/i18nltr22.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/023/i18nltr23.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/026/i18nltr26.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/027/i18nltr27.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/028/i18nltr28.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/029/i18nltr29.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/030/i18nltr30.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/031/i18nltr31.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/032/i18nltr32.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/033/i18nltr33.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/034/i18nltr34.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/035/i18nltr35.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/036/i18nltr36.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/037/i18nltr37.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/038/i18nltr38.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/039/i18nltr39.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/040/i18nltr40.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/041/i18nltr41.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/042/i18nltr42.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/043/i18nltr43.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-ltr/044/i18nltr44.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/001/i18nrlo01.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/002/i18nrlo02.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/003/i18nrlo03.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/004/i18nrlo04.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/005/i18nrlo05.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/006/i18nrlo06.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/007/i18nrlo07.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/008/i18nrlo08.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/009/i18nrlo09.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/010/i18nrlo10.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/011/i18nrlo11.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/012/i18nrlo12.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/013/i18nrlo13.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/014/i18nrlo14.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/015/i18nrlo15.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/016/i18nrlo16.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/017/i18nrlo17.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/018/i18nrlo18.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/019/i18nrlo19.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/020/i18nrlo20.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/021/i18nrlo21.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/022/i18nrlo22.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/023/i18nrlo23.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/026/i18nrlo26.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/027/i18nrlo27.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/028/i18nrlo28.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/029/i18nrlo29.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/030/i18nrlo30.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/031/i18nrlo31.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/032/i18nrlo32.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/033/i18nrlo33.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/034/i18nrlo34.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/035/i18nrlo35.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/036/i18nrlo36.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/037/i18nrlo37.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/038/i18nrlo38.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/039/i18nrlo39.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/040/i18nrlo40.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/041/i18nrlo41.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/042/i18nrlo42.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/043/i18nrlo43.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rlo/044/i18nrlo44.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/001/i18nrtl01.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/002/i18nrtl02.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/003/i18nrtl03.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/004/i18nrtl04.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/005/i18nrtl05.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/006/i18nrtl06.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/007/i18nrtl07.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/008/i18nrtl08.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/009/i18nrtl09.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/010/i18nrtl10.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/011/i18nrtl11.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/012/i18nrtl12.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/013/i18nrtl13.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/014/i18nrtl14.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/015/i18nrtl15.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/016/i18nrtl16.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/017/i18nrtl17.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/018/i18nrtl18.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/019/i18nrtl19.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/020/i18nrtl20.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/021/i18nrtl21.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/022/i18nrtl22.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/023/i18nrtl23.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/026/i18nrtl26.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/027/i18nrtl27.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/028/i18nrtl28.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/029/i18nrtl29.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/030/i18nrtl30.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/031/i18nrtl31.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/032/i18nrtl32.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/033/i18nrtl33.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/034/i18nrtl34.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/035/i18nrtl35.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/036/i18nrtl36.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/037/i18nrtl37.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/038/i18nrtl38.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/039/i18nrtl39.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/040/i18nrtl40.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/041/i18nrtl41.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/042/i18nrtl42.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/043/i18nrtl43.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/i18n-rtl/044/i18nrtl44.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-ACCJfDGwDQ/000/aa.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-ACCJfDGwDQ/001/ab.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-ACCJfDGwDQ/002/ac.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/000/ao.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/001/ap.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/002/aq.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/003/ar.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/004/as.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/005/at.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/006/au.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/007/av.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-AYLMhryBnD/008/oa.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BnWPqNvNVo/000/aw.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/000/ax.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/001/ay.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/002/az.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/003/a1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/004/a2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/005/a3.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-BxjoiWHaMr/006/a4.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-CEGwkNQcWo/000/e2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-CEGwkNQcWo/001/e3.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/000/a5.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/001/a6.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/002/a7.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/003/a8.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/004/a9.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/005/ba.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/006/bb.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-DwhJBIJRQN/007/bc.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-EGkPfzCBOz/000/dt.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-EGkPfzCBOz/001/dg.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-EGkPfzCBOz/002/v9.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/000/bj.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/001/bk.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/002/bl.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/003/bm.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/004/bn.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/005/bo.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/006/bp.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/007/ad.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FAFYMEGELU/008/ae.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FDGQBROtzW/000/dn.test delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-FDGQBROtzW/001/dm delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-GVVIvsdEUo/000/z3 delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-GVVIvsdEUo/001/z4.html delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-GVVIvsdEUo/002/z5.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-KNiLPOKdgQ/000/e1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LQcjNKBLUZ/000/d9.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LQcjNKBLUZ/001/d0.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LTUJGJFCOU/000/d7.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LTUJGJFCOU/001/d8.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LTUJGJFCOU/002/gb.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LYLMhryBBT/000/bx.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LYLMhryBBT/001/by.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-LYLMhryBBT/002/bz.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-MFcsScFEaC/000/d3.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/000/b3.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/001/b4.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/002/b0.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/003/c1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/004/c2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/005/c3.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/006/c4.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/007/c5.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/008/cc.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RGNHRBWNZV/009/cv.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RRZxvvTFHx/000/b5.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RRZxvvTFHx/001/b6.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RawAIWHoMs/000/b1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RawAIWHoMs/001/rd.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-RawAIWHoMs/002/b2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UEMbyHERkI/000/c6.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UEMbyHERkI/001/c7.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UEMbyHERkI/002/rb.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UEMbyHERkI/003/c8.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/000/c9.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/001/cq.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/002/cw.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/003/ce.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/004/cr.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/005/ct.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-UScJfQHPPy/006/cy.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VdCEyDVSA/000/cp.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VdCEyDVSA/001/ca.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VdCEyDVSA/002/cs.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VdCEyDVSA/003/cd.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VdCEyDVSA/004/x1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VdCEyDVSA/005/x2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VerEfVGeTc/000/cf.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VerEfVGeTc/001/cg.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-VerEfVGeTc/002/ch.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-YUMJAPVEgI/000/cj.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-YUMJAPVEgI/001/ck.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-YUMJAPVEgI/002/cl.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-YUMJAPVEgI/003/cz.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-YUMJAPVEgI/004/cx.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-ZjcdAxFMSx/000/dq.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-ZjcdAxFMSx/001/dw.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-aaaaaaaaaa/000/z1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-aaaaaaaaaa/001/z2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/000/af.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/001/ag.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/002/ah.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/003/ai.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/004/aj.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/005/ak.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/006/al.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/007/am.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-argMozRiC/008/an.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-bbbbbbbbbb/000/xx.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-dPOgiLQKNK/000/e4.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-dPOgiLQKNK/001/e5.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-dPOgiLQKNK/002/e6.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-dPOgiLQKNK/003/e7.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-ignore/000/ta-de-000.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-ignore/001/ta-de-001.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-ignore/002/ta-de-002.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-ignore/003/ta-de-003.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-ignore/004/ta-de-004.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-usage/000/ta-de-000.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-defaultlocale-usage/001/dlocuse01.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-dxzVDWpaWg/000/bg.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-dxzVDWpaWg/001/bh.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/000/ix.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/001/iy.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/002/iz.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/003/i1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/004/i2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/005/i3.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-eHUaPbgfKg/006/i4.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-hkWmGJgfve/000/bq.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-hkWmGJgfve/001/br.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-hkWmGJgfve/002/bs.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-ignore-unrequired-feature-with-invalid-name/000/gg.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-iipTwNshRg/000/d1.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-iipTwNshRg/001/ga.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-iuJHnskSHq/000/zz.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-iuJHnskSHq/001/za.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-iuJHnskSHq/002/zb.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-iuJHnskSHq/003/zc.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-klLDaEgJeU/000/bt.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-klLDaEgJeU/001/bu.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-klLDaEgJeU/002/bv.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-klLDaEgJeU/003/bw.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-klLDaEgJeU/004/lt.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-klLDaEgJeU/005/amp.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-luyKMFABLX/000/d5.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/000/iq.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/001/i9.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/002/iw.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/003/ie.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/004/ir.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/005/it.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-nYAcofihvj/006/ib.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-pIffQywZin/000/db.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-paIabGIIMC/000/dc.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-paIabGIIMC/001/dv.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-paWbGHyVrG/000/d4.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-qxLSCRCHlN/000/dk.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-rZdcMBExBX/000/df.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-rZdcMBExBX/002/ha.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-roCaKRxZhS/000/d2.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-sdwhMozwIc/000/b7.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-sdwhMozwIc/001/b8.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-sdwhMozwIc/002/b9.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-uLHyIMvLwz/000/dl.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-uLHyIMvLwz/001/split.wgt.001 delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-uLHyIMvLwz/002/dp.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-vOBaOcWfll/000/e8.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-vcYJAPVEym/000/cu.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-vcYJAPVEym/001/ci.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-vcYJAPVEym/002/ra.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-vcYJAPVEym/003/co.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-viewmodes/001/viewb.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-viewmodes/005/viewf.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-viewmodes/006/viewg.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-viewmodes/007/viewh.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-viewmodes/008/viewi.wgt delete mode 100644 tests/w3c_tests/tmp/test-cases/ta-xlgUWUVzCY/000/d6.wgt delete mode 100644 tests/w3c_tests/w3c_tests.cpp delete mode 100644 tests/warp_tests/CMakeLists.txt delete mode 100644 tests/warp_tests/TestCases.cpp delete mode 100644 tests/warp_tests/WarpIriTestBase.cpp delete mode 100644 tests/warp_tests/WarpIriTestBase.h delete mode 100644 tests/warp_tests/test-cases/access_info.wgt delete mode 100644 tests/warp_tests/test-cases/bondiAA.wgt delete mode 100644 tests/warp_tests/warp_iri_tests.cpp delete mode 100644 tests/widget_module_tests/CMakeLists.txt delete mode 100644 tests/widget_module_tests/TestCases.cpp delete mode 100644 tests/widget_module_tests/empty.wgt delete mode 100644 tests/widget_module_tests/widget_tests.cpp delete mode 100644 tests/wrt_global_settings.cpp delete mode 100755 tools/stylecheck/errorDictionary.py delete mode 100755 wrt_policy_setter.sh diff --git a/CMakeUtils.txt b/CMakeUtils.txt deleted file mode 100644 index b29b872..0000000 --- a/CMakeUtils.txt +++ /dev/null @@ -1,71 +0,0 @@ -# @file CMakeUtils.txt -# @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) -# @author Pawel Sikorski (p.sikorski@samsung.com) -# @version 1.0 -# @brief -# - -# -# Replacement functions for standard (w/o "WRT_" prefix) CMake functions. -# They store supplied arguments in global properties to assign them to tests. -FUNCTION(WRT_INCLUDE_DIRECTORIES) - SET_PROPERTY(GLOBAL APPEND PROPERTY TESTS_INCLUDE_DIRS ${ARGV}) -ENDFUNCTION(WRT_INCLUDE_DIRECTORIES) - -FUNCTION(WRT_LINK_DIRECTORIES) - SET_PROPERTY(GLOBAL APPEND PROPERTY TESTS_LIBRARY_DIRS ${ARGV}) -ENDFUNCTION(WRT_LINK_DIRECTORIES) - -FUNCTION(WRT_TARGET_LINK_LIBRARIES) - SET(LIBS "${ARGN}") - SET_PROPERTY(GLOBAL APPEND PROPERTY TESTS_LIBRARIES ${LIBS}) -ENDFUNCTION(WRT_TARGET_LINK_LIBRARIES) - - -# Functions used to build test targets (proper sources, includes, libs are -# added automatically) -FUNCTION(WRT_TEST_BUILD TARGET_NAME) - SET(SOURCES "${ARGN}") - - pkg_search_module(dpl-test REQUIRED dpl-test-efl) - - ADD_EXECUTABLE("${TARGET_NAME}" - ${WRT_DETAIL_SOURCES} - ${SOURCES} - ) - INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} - ${WRT_TESTS_INCLUDE_DIR} - ${dpl-test_INCLUDE_DIRS} - ) - LINK_DIRECTORIES(${COMMON_LIBRARY_DIRS}) - TARGET_LINK_LIBRARIES("${TARGET_NAME}" - ${TARGET_ACE_DAO_RW_LIB} - ${TARGET_WRT_DAO_RW_LIB} - ${COMMON_LIBRARIES} - ${TARGET_TESTS_COMMON_LIB} - ${TARGET_PROFILING_LIB} - ${TARGET_ACE_LIB} - ${TARGET_ACE_CLIENT_LIB} - ${TARGET_INSTALL_CORE_STATIC} - ${TARGET_PLUGIN_LOADING_LIB} - ${dpl-test_LIBRARIES} - ) -ENDFUNCTION(WRT_TEST_BUILD) - -FUNCTION(WRT_TEST_INSTALL) - SET_TARGET_PROPERTIES(${ARGV} PROPERTIES - BUILD_WITH_INSTALL_RPATH ON - INSTALL_RPATH_USE_LINK_PATH ON - ) - INSTALL(TARGETS ${ARGV} - DESTINATION bin - PERMISSIONS OWNER_READ - OWNER_WRITE - OWNER_EXECUTE - GROUP_READ - GROUP_EXECUTE - WORLD_READ - WORLD_EXECUTE - ) -ENDFUNCTION(WRT_TEST_INSTALL) diff --git a/ace_client/CMakeLists.txt b/ace_client/CMakeLists.txt deleted file mode 100644 index 6cfe58f..0000000 --- a/ace_client/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -#CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/ace_client/ace_client.pc.in ${PKGCONFIG_DIR}/wrt-ace-client.pc.in @ONLY) -ADD_SUBDIRECTORY(src) diff --git a/ace_client/include/ace_client.h b/ace_client/include/ace_client.h deleted file mode 100644 index d0b3eb5..0000000 --- a/ace_client/include/ace_client.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ace_client.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains definitions of AceThinClient API - */ -#ifndef WRT_ACE_CLIENT_H -#define WRT_ACE_CLIENT_H - -#include -#include -#include -#include - -namespace AceClient { - -class AceThinClientImpl; - -class AceThinClient : private DPL::Noncopyable { - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, AceThinClientException) - }; - - bool checkFunctionCall(const AceRequest& ace_request) const; - AcePreference getWidgetResourcePreference( - const AceResource& resource, - const AceWidgetHandle& handle) const; - AceResourcesPreferences* getGlobalResourcesPreferences() const; - bool isInitialized() const; - - private: - AceThinClient(); - virtual ~AceThinClient(); - - AceThinClientImpl* m_impl; - friend class DPL::Singleton; -}; - -typedef DPL::Singleton AceThinClientSingleton; - -} // namespace AceClient - - -#endif // WRT_ACE_CLIENT_H diff --git a/ace_client/include/ace_client_helper.h b/ace_client/include/ace_client_helper.h deleted file mode 100644 index db1c369..0000000 --- a/ace_client/include/ace_client_helper.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ace_client_helper.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains definitions of AceClient helper types and - * functions. - */ -#ifndef WRT_ACE_CLIENT_HELPER_H -#define WRT_ACE_CLIENT_HELPER_H - -#include -#include -#include - -#include -#include - -#include "ace_client_types.h" - -namespace AceClient { - -AcePreference toAcePreference(AceDB::PreferenceTypes preference) -{ - switch (preference) { - case AceDB::PreferenceTypes::PREFERENCE_PERMIT: { - return PREFERENCE_PERMIT; } - case AceDB::PreferenceTypes::PREFERENCE_DENY: { - return PREFERENCE_DENY; } - case AceDB::PreferenceTypes::PREFERENCE_DEFAULT: { - return PREFERENCE_DEFAULT; } - case AceDB::PreferenceTypes::PREFERENCE_BLANKET_PROMPT: { - return PREFERENCE_BLANKET_PROMPT; } - case AceDB::PreferenceTypes::PREFERENCE_SESSION_PROMPT: { - return PREFERENCE_SESSION_PROMPT; } - case AceDB::PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT: { - return PREFERENCE_ONE_SHOT_PROMPT; } - } - return PREFERENCE_DEFAULT; -} - -typedef std::vector AceParamKeys; -typedef std::vector AceParamValues; - -class AceFunctionParam -{ - public: - virtual ~AceFunctionParam() - { - } - - void addAttribute(const std::string& key, - const std::string& value) - { - m_paramMap.insert(std::make_pair(key, value)); - } - - AceParamKeys getKeys() const - { - AceParamKeys out; - FOREACH (it, m_paramMap) { - out.push_back(it->first); - } - return out; - } - - AceParamValues getValues() const - { - AceParamValues out; - FOREACH (it, m_paramMap) { - out.push_back(it->second); - } - return out; - } - - static std::string aceFunctionParamToken; - - private: - typedef std::multimap ParamMap; - ParamMap m_paramMap; -}; - -typedef std::vector AceFunctionParams; - -class AceBasicRequest : public AceDB::IRequest { - public: - AceBasicRequest(const AceSubject& subject, - const AceResource& resource) : - m_subject(subject), - m_resource(resource) - { - } - - AceBasicRequest(const AceSubject& subject, - const AceResource& resource, - const AceFunctionParam& param) : - m_subject(subject), - m_resource(resource), - m_param(param) - { - } - virtual const std::string& getSubjectId() const - { - return m_subject; - } - virtual const std::string& getResourceId() const - { - return m_resource; - } - virtual const AceFunctionParam& getFunctionParam() const - { - return m_param; - } - - private: - AceSubject m_subject; - AceResource m_resource; - AceFunctionParam m_param; -}; - -typedef std::vector AceBasicRequests; - -} // namespace AceClient - -#endif // WRT_ACE_CLIENT_HELPER_H diff --git a/ace_client/include/ace_client_types.h b/ace_client/include/ace_client_types.h deleted file mode 100644 index f27a4ba..0000000 --- a/ace_client/include/ace_client_types.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ace_client_types.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains definitions of AceClient types - */ -#ifndef WRT_ACE_CLIENT_TYPES_H -#define WRT_ACE_CLIENT_TYPES_H - -#include -#include -#include - -namespace AceClient { - -typedef int AceWidgetHandle; -typedef void* AceJobWidgetInstallId; - -typedef std::string AceResource; -typedef std::string AceSubject; -typedef std::string AceSessionId; - -enum AcePreference -{ - PREFERENCE_PERMIT, - PREFERENCE_DENY, - PREFERENCE_DEFAULT, - PREFERENCE_BLANKET_PROMPT, - PREFERENCE_SESSION_PROMPT, - PREFERENCE_ONE_SHOT_PROMPT -}; - -typedef std::map AceResourcesPreferences; -typedef std::pair AceResurcePreference; - -struct AceParam -{ - const char *name; - const char *value; - - AceParam(): - name(NULL), value(NULL) - {} - - AceParam(const char *name, const char *value): - name(name), value(value) - {} -}; - -struct AceParamList -{ - size_t count; - AceParam* param; - AceParamList(): - count(0), - param(NULL) - {} -}; - -struct AceDeviceCap -{ - size_t devcapsCount; - const char** devCapNames; - size_t paramsCount; - AceParamList* params; - AceDeviceCap(): - devcapsCount(0), - devCapNames(NULL), - paramsCount(0), - params(NULL) - {} -}; - -struct AceApiFeatures -{ - size_t count; - const char** apiFeature; - AceApiFeatures(): - count(0), - apiFeature(NULL) - {} -}; - -struct AceRequest -{ - AceSessionId sessionId; - AceWidgetHandle widgetHandle; - AceApiFeatures apiFeatures; - const char* functionName; - AceDeviceCap deviceCapabilities; - AceRequest(): - widgetHandle(0), - apiFeatures(), - functionName(NULL), - deviceCapabilities() - {} -}; - -} // namespace AceClient - -#endif // WRT_ACE_CLIENT_TYPES_H diff --git a/ace_client/src/CMakeLists.txt b/ace_client/src/CMakeLists.txt deleted file mode 100644 index 930b3a9..0000000 --- a/ace_client/src/CMakeLists.txt +++ /dev/null @@ -1,86 +0,0 @@ -include(FindPkgConfig) - -PKG_CHECK_MODULES(ACE_CLIENT_DEPS - dpl-ace-dao-ro - dpl-wrt-dao-ro - dpl-ace - dpl-efl - dpl-event-efl - REQUIRED - ) - -SET(ACE_CLIENT_DIR - ${PROJECT_SOURCE_DIR}/ace_client - ) - -SET(ACE_CLIENT_SRC_DIR - ${ACE_CLIENT_DIR}/src - ) - -SET(ACE_CLIENT_INCLUDE_DIR - ${ACE_CLIENT_DIR}/include - ) - -SET(ACE_CLIENT_SOURCES - ${ACE_CLIENT_SRC_DIR}/ace_client.cpp - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/api/ace_server_api.cpp - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/security_daemon_dbus_config.cpp - ${PROJECT_SOURCE_DIR}/src/rpc/ui-process/rpc_client.cpp - ${PROJECT_SOURCE_DIR}/src/rpc/ui-process/fake_rpc_connection.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/simple_roaming_agent.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/attribute_facade.cpp - ${PROJECT_SOURCE_DIR}/src/popup-process/PopupInvoker.cpp - ${PROJECT_SOURCE_DIR}/src/popup-process/PopupSerializer.cpp - ) - -SET(ACE_CLIENT_INCLUDES - ${ACE_CLIENT_DEPS_INCLUDE_DIRS} - ${ACE_CLIENT_INCLUDE_DIR} - ${PROJECT_SOURCE_DIR}/src/orm/ # WRT ORM - ${PROJECT_SOURCE_DIR}/src/configuration/ # WidgetDAO - ${PROJECT_SOURCE_DIR}/src/dbus/ # DBus client - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/ # Security daemon config - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/api/ # AceServerApi - ${PROJECT_SOURCE_DIR}/src/rpc/ui-process/ # RPC connection - ${PROJECT_SOURCE_DIR}/src/common/ # Nested Loop - ${PROJECT_SOURCE_DIR}/src/dbus/ # DBus client - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/ # Security daemon config - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/api/ # AceServerApi - ${PROJECT_SOURCE_DIR}/src/domain/ # widget_data_types - ${PROJECT_SOURCE_DIR}/src/common/ # wrt_db_types - ${PROJECT_SOURCE_DIR}/src/profiling/ # profiling - ${PROJECT_SOURCE_DIR}/src/localization # localization - ${PROJECT_SOURCE_DIR}/src/access-control/ # simple_roaming_agent.h - ${PROJECT_SOURCE_DIR}/src/popup-process/ # Popup Invoker - ) - -ADD_DEFINITIONS(${ACE_CLIENT_DEPS_CFLAGS}) -ADD_DEFINITIONS(${ACE_CLIENT_CFLAGS_OTHER}) - -INCLUDE_DIRECTORIES(${ACE_CLIENT_INCLUDES}) - -ADD_LIBRARY(${TARGET_ACE_CLIENT_LIB} SHARED ${ACE_CLIENT_SOURCES}) - -SET_TARGET_PROPERTIES(${TARGET_ACE_CLIENT_LIB} PROPERTIES - SOVERSION ${PROJECT_VERSION}) - -SET_TARGET_PROPERTIES(${TARGET_ACE_CLIENT_LIB} PROPERTIES - COMPILE_FLAGS -fPIC) - -TARGET_LINK_LIBRARIES(${TARGET_ACE_CLIENT_LIB} - ${ACE_CLIENT_DEPS_LIBRARIES} - ${TARGET_ACE_DAO_RO_LIB} - ${TARGET_WRT_DAO_RO_LIB} - ${PROF_LIB} - ) - -INSTALL(TARGETS ${TARGET_ACE_CLIENT_LIB} - DESTINATION lib - PERMISSIONS OWNER_READ GROUP_READ WORLD_READ - ) - -INSTALL(FILES - ${ACE_CLIENT_INCLUDE_DIR}/ace_client.h - ${ACE_CLIENT_INCLUDE_DIR}/ace_client_types.h - DESTINATION include/wrt-engine/ace-client - ) diff --git a/ace_client/src/ace_client.cpp b/ace_client/src/ace_client.cpp deleted file mode 100644 index 0dc2336..0000000 --- a/ace_client/src/ace_client.cpp +++ /dev/null @@ -1,634 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ace_client.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains implementation of AceThinClient class - */ - -#include - -#include -#include -#include -#include -#include - -#include "ace_server_api.h" -#include "security_daemon_dbus_config.h" -#include "popup_ace_data_types.h" - -#include "ace_client.h" -#include "ace_client_helper.h" -#include - -#include - -#include "profiling_util.h" - -#define DIRECT_POPUP_CALL - -// ACE tests need to use mock implementations -#ifdef ACE_CLIENT_TESTS - -#ifdef DIRECT_POPUP_CALL -#include "popup_response_service_api.h" -#include -#include "PopupInvoker_mock.h" -#endif - -#include "widget_dao_read_only_mock.h" -#include "WrtDatabase_mock.h" -#include "AceDAOReadOnly_mock.h" -#include "dbus_client_mock.h" -#include "PolicyInformationPoint_mock.h" -#include "rpc_client_mock.h" - -#else - -#ifdef DIRECT_POPUP_CALL -#include "popup_response_service_api.h" -#include -#include "PopupInvoker.h" -#endif - -#include -#include -#include -#include -#include -#include "rpc_client.h" - -#endif // ACE_CLIENT_TESTS - -IMPLEMENT_SINGLETON(AceClient::AceThinClient) - -namespace AceClient { - -std::string AceFunctionParam::aceFunctionParamToken = "param:function"; - -// popup cache result - -enum class AceCachedPromptResult { - PERMIT, - DENY, - ASK_POPUP -}; - -// AceThinClient implementation singleton -class AceThinClientImpl { - public: - bool checkFunctionCall(const AceRequest& ace_request); - AcePreference getWidgetResourcePreference( - const AceResource& resource, - const AceWidgetHandle& handle) const; - AceResourcesPreferences* getGlobalResourcesPreferences() const; - bool isInitialized() const; - - void popupClientInitialized(const UIProcess::AcceptingCallsEvent& event); - - AceThinClientImpl(); - ~AceThinClientImpl(); - - private: - DPL::DBus::Client* m_dbusClient; - std::unique_ptr m_popupClient; - bool m_popupClientInitialized; - - AceSubject getSubjectForHandle(AceWidgetHandle handle) const; - AceCachedPromptResult getCachedPromptResult( - const AceDB::BaseAttributeSet &attributes, - const std::string& userParam, - const AceSessionId& sessionId) const; - bool askUser(PolicyEffect popupType, - const AceRequest& ace_request, - const AceBasicRequest& request); -#ifdef DIRECT_POPUP_CALL - DPL::ScopedPtr m_dbusPopupClient; - bool securityDaemonCall(bool allowed, - Prompt::Validity valid, - const AceUserdata &data); -#endif //DIRECT_POPUP_CALL - mutable PolicyInformationPoint m_pip; - DPL::Optional> grantedDevCaps; -}; - -AceThinClientImpl::AceThinClientImpl() - : m_dbusClient(NULL), - m_popupClientInitialized(false), - m_pip(new WebRuntimeImpl(), - new ResourceInformationImpl(), - new OperationSystemImpl()) -{ - AceDB::AceDAOReadOnly::attachToThread(); - WrtDB::WrtDatabase::attachToThread(); - Try { - m_dbusClient = new DPL::DBus::Client( - RPC::SecurityDaemonConfig::OBJECT_PATH, - RPC::SecurityDaemonConfig::SERVICE_NAME, - RPC::AceServerApi::INTERFACE_NAME); - std::string hello = "RPC test."; - std::string response; - m_dbusClient->call(RPC::AceServerApi::ECHO_METHOD, - hello, - &response); - LogInfo("Security daemon response from echo: " << response); - } Catch (DPL::DBus::Client::Exception::DBusClientException) { - ReThrowMsg(AceThinClient::Exception::AceThinClientException, - "Failed to call security daemon"); - } - - using namespace UIProcess; - //popupClientInitialized will be initialized when callback will be invoked - m_popupClient.reset(new RpcClient()); - m_popupClient->DPL::Event::EventSupport::AddListener( - DPL::MakeDelegate(this, &AceThinClientImpl::popupClientInitialized)); -} - -AceThinClientImpl::~AceThinClientImpl() -{ - Assert(NULL != m_dbusClient); - delete m_dbusClient; - m_dbusClient = NULL; - m_popupClient.reset(); - m_popupClientInitialized = false; - WrtDB::WrtDatabase::detachFromThread(); - AceDB::AceDAOReadOnly::detachFromThread(); -} - -bool AceThinClientImpl::isInitialized() const -{ - return NULL != m_dbusClient; -} - -void AceThinClientImpl::popupClientInitialized( - const UIProcess::AcceptingCallsEvent& /*event*/) -{ - LogInfo("Popup client was initialized"); - m_popupClientInitialized = true; -//FIXME what if uninitialized client is being called? -} - -bool AceThinClientImpl::checkFunctionCall(const AceRequest& ace_request) -{ - ADD_PROFILING_POINT("Check_function_call", "start"); - - LogInfo("Enter"); - - // fill the grantedDevCaps, if not yet initialized - // TODO: This is not so pretty. AceThinClient is not explicitly - // tied to a widget handle, yet we assume it is always used - // with the same handle. This will be amended in a future - // refactoring (already planned). - if (grantedDevCaps.IsNull()) { - grantedDevCaps = std::set(); - AceDB::AceDAOReadOnly::getStaticDevCapPermissions( - ace_request.widgetHandle, &*grantedDevCaps); - } - - AceSubject subject = getSubjectForHandle(ace_request.widgetHandle); - - // Create function params - const AceDeviceCap& devcaps = ace_request.deviceCapabilities; - AceFunctionParams functionParams(devcaps.devcapsCount); - for (size_t i = 0; i < devcaps.devcapsCount; ++i) { - AceFunctionParam functionParam; - functionParam.addAttribute(AceFunctionParam::aceFunctionParamToken, - NULL == ace_request.functionName ? - "" : ace_request.functionName); - if (devcaps.paramsCount) { - Assert(devcaps.params); - for (size_t j = 0; j < devcaps.params[i].count; ++j) { - Assert(devcaps.params[i].param && - devcaps.params[i].param[j].name && - devcaps.params[i].param[j].value); - functionParam.addAttribute( - std::string(devcaps.params[i].param[j].name), - std::string(devcaps.params[i].param[j].value)); - } - } - functionParams.push_back(functionParam); - } - - // Convert AceRequest to array of AceBasicRequests - AceBasicRequests requests; - - for (size_t i = 0; i < devcaps.devcapsCount; ++i) { - // Adding dev cap name here as resource id - Assert(devcaps.devCapNames[i]); - LogInfo("Device cap: " << devcaps.devCapNames[i]); - AceBasicRequest request(subject, - devcaps.devCapNames[i], - functionParams[i]); - requests.push_back(request); - } - // true means access granted, false - denied - bool result = true; - - FOREACH(it, requests){ - // Getting attributes from ACE DAO - AceBasicRequest& request = *it; - AceDB::BaseAttributeSet attributeSet; - AceDB::AceDAOReadOnly::getAttributes(&attributeSet); - - // If true, we need to make popup IPC and ask user for decision - bool askPopup = false; - // If true, we need to make IPC to security daemon for policy - // decision on granting access - bool askServer = false; - // If askPopup == true, this is the kind of popup to be opened - PolicyEffect popupType = PolicyEffect::PROMPT_ONESHOT; - - if (attributeSet.empty()) { - // Treat this case as missed cache - ask security daemon - LogInfo("Empty attribute set"); - askServer = true; - } else { - // Filling attributes with proper values - Request req(ace_request.widgetHandle, - WidgetExecutionPhase_Unknown); - req.addDeviceCapability(request.getResourceId()); - - m_pip.getAttributesValues(&req, &attributeSet); - - // Getting cached policy result - OptionalPolicyResult policyResult = - AceDB::AceDAOReadOnly::getPolicyResult(attributeSet); - - if (policyResult.IsNull()) { - // Missed cache - ask security daemon - LogInfo("Missed policy result cache"); - askServer = true; - } else { - // Cached value found - now interpret it - LogInfo("Result in cache"); - OptionalPolicyEffect effect = (*policyResult).getEffect(); - if (effect.IsNull()) { - // PolicyDecision is UNDETERMINED or NOT_APPLICABLE - result = false; - break; - } else if (*effect == PolicyEffect::DENY) { - // Access denied - result = false; - break; - } else if (*effect == PolicyEffect::PERMIT) { - // Access granted - if (grantedDevCaps->find( - DPL::FromASCIIString(request.getResourceId())) - != grantedDevCaps->end()) - { - continue; - } else - askServer = true; - } else { - // Check for cached popup response - LogInfo("Checking cached popup response"); - AceCachedPromptResult promptCached = - getCachedPromptResult(attributeSet, - ace_request.sessionId, - ace_request.sessionId); - if (promptCached == AceCachedPromptResult::PERMIT) { - // Granted by previous popup - if (grantedDevCaps->find( - DPL::FromASCIIString(request.getResourceId())) - != grantedDevCaps->end()) - { - continue; - } else - askServer = true; - } - if (promptCached == AceCachedPromptResult::DENY) { - // Access denied by earlier popup - result = false; - break; - } - if (promptCached == AceCachedPromptResult::ASK_POPUP) { - askPopup = true; - popupType = *effect; - } - } - } - } - - if (askServer) { - // IPC to security daemon - // here we must check if we have a SMACK permission for - // the device cap requested - LogInfo("Asking security daemon"); - int serializedPolicyResult = 0; - Try { - m_dbusClient->call(RPC::AceServerApi::CHECK_ACCESS_METHOD, - ace_request.widgetHandle, - request.getSubjectId(), - request.getResourceId(), - request.getFunctionParam().getKeys(), - request.getFunctionParam().getValues(), - &serializedPolicyResult); - } Catch (DPL::DBus::Client::Exception::DBusClientException) { - ReThrowMsg(AceThinClient::Exception::AceThinClientException, - "Failed to call security daemon"); - } - PolicyResult policyResult = PolicyResult:: - deserialize(serializedPolicyResult); - OptionalPolicyEffect effect = policyResult.getEffect(); - if (effect.IsNull()) { - // PolicyDecision is UNDETERMINED or NOT_APPLICABLE - result = false; - break; - } - if (*effect == PolicyEffect::DENY) { - // Access denied - result = false; - break; - } - if (*effect == PolicyEffect::PERMIT) { - // Access granted, move on to next request - grantedDevCaps->insert( - DPL::FromASCIIString(request.getResourceId())); - - continue; - } - // Policy says: ask user - setup popup kind - popupType = *effect; - askPopup = true; - } - - if (askPopup) { - result = askUser(popupType, ace_request, request); - } - } - LogInfo("Result: " << (result ? "GRANTED" : "DENIED")); - - ADD_PROFILING_POINT("Check_function_call", "stop"); - - return result; -} -bool AceThinClientImpl::askUser(PolicyEffect popupType, - const AceRequest& ace_request, - const AceBasicRequest& request) -{ - bool result = true; - LogInfo("Asking popup"); -// We do not use rpc client popup in current implementation. -// Assert(m_popupClientInitialized && "Client was not initialized"); - - switch(popupType) { - //these case statements without break are made on purpose - case PolicyEffect::PROMPT_ONESHOT: - case PolicyEffect::PROMPT_SESSION: - case PolicyEffect::PROMPT_BLANKET: { - AceUserdata aceData; - aceData.handle = ace_request.widgetHandle; - aceData.subject = request.getSubjectId(); - aceData.resource = request.getResourceId(); - aceData.paramKeys = request.getFunctionParam().getKeys(); - aceData.paramValues = request.getFunctionParam().getValues(); - // TODO what about session ?? - -#ifdef DIRECT_POPUP_CALL - //Calling Popup process directly! - Prompt::PromptAnswer response = PopupInvoker().showSyncPopup( - static_cast(popupType), - aceData.resource); - - LogDebug("Answer: " << response.isAccessAllowed()); - - //ASK SECURITY DAEMON - if (!response.isAccessAllowed() && - Prompt::Validity::ONCE == response.getValidity()) - { - LogInfo("User answer is DENY ONCE. Don't call security daemon"); - } - else - { - LogInfo("calling security daemon"); - bool securityResponse = - securityDaemonCall(response.isAccessAllowed(), - response.getValidity(), - aceData); - - if(!securityResponse) - { - LogError("Security Daemon has responded with false!"); - return false; - } - LogInfo("Security Daemon has responded with true"); - } -#endif //DIRECT_POPUP_CALL - - //Calling popup process via RPC -// UIProcess::UniquePopupResponsePtr response = -// m_popupClient->showSyncPopup( -// popupType, -// aceData); - - if (response.isAccessAllowed()) - grantedDevCaps->insert( - DPL::FromASCIIString(request.getResourceId())); - - //TODO add answer - result = response.isAccessAllowed(); - break; } - default: - LogError("Unknown popup type passed!"); - LogError("Maybe effect isn't a popup?"); - LogError("Effect number is: " << static_cast(popupType)); - Assert(0); - } - - return result; -} - -#ifdef DIRECT_POPUP_CALL -bool AceThinClientImpl::securityDaemonCall(bool allowed, - Prompt::Validity valid, - const AceUserdata &data) -{ - if(!m_dbusPopupClient) - m_dbusPopupClient.Reset(new DPL::DBus::Client( - RPC::SecurityDaemonConfig::OBJECT_PATH, - RPC::SecurityDaemonConfig::SERVICE_NAME, - RPC::PopupResponseServiceApi::getInterfaceName())); - - bool response = false; - Try { - m_dbusPopupClient->call( - RPC::PopupResponseServiceApi::getValidationMethodName(), - allowed, - static_cast(valid), - data.handle, - data.subject, - data.resource, - data.paramKeys, - data.paramValues, - data.session, - &response); - } Catch (DPL::DBus::Client::Exception::DBusClientException) { - ReThrowMsg(AceThinClient::Exception::AceThinClientException, - "Failed to call security daemon"); - } - - return response; -} -#endif //DIRECT_POPUP_CALL - -AcePreference AceThinClientImpl::getWidgetResourcePreference ( - const AceResource& resource, - const AceWidgetHandle& handle) const -{ - return toAcePreference( - AceDB::AceDAOReadOnly::getWidgetDevCapSetting(resource, handle)); -} - -AceResourcesPreferences* AceThinClientImpl::getGlobalResourcesPreferences() -const -{ - AceDB::PreferenceTypesMap globalSettingsMap; - AceResourcesPreferences* acePreferences = new AceResourcesPreferences(); - AceDB::AceDAOReadOnly::getDevCapSettings(&globalSettingsMap); - FOREACH(it, globalSettingsMap) { - acePreferences->insert( - AceResurcePreference((*it).first, - toAcePreference((*it).second))); - } - return acePreferences; -} - -AceSubject AceThinClientImpl::getSubjectForHandle(AceWidgetHandle handle) const -{ - // TODO remove subject use in AceRequest - // remove dependency AceThinClient and WrtDaoRo from CMakeLists.txt - WrtDB::WidgetDAOReadOnly w_dao(handle); - try { - DPL::OptionalString widgetGUID = w_dao.getGUID(); - return !widgetGUID ? "" : DPL::ToUTF8String(*widgetGUID); - } - catch (WrtDB::WidgetDAOReadOnly::Exception::WidgetNotExist& /*ex*/) - { - LogError("Couldn't find GIUD for handle " << handle); - return ""; - } -} - -AceCachedPromptResult AceThinClientImpl::getCachedPromptResult( - const AceDB::BaseAttributeSet &attributes, - const std::string& userParam, - const AceSessionId& sessionId) const -{ - OptionalCachedPromptDecision promptDecision = - AceDB::AceDAOReadOnly::getPromptDecision( - attributes, - userParam); - if (promptDecision.IsNull()) { - return AceCachedPromptResult::ASK_POPUP; - } else { - // These should not be stored in DB! - Assert(PromptDecision::ALLOW_THIS_TIME - != (*promptDecision).decision); - Assert(PromptDecision::DENY_THIS_TIME - != (*promptDecision).decision); - if ((*promptDecision).decision == - PromptDecision::ALLOW_ALWAYS) { - // Access granted via earlier popup - return AceCachedPromptResult::PERMIT; - } - if ((*promptDecision).decision == - PromptDecision::DENY_ALWAYS) { - // Access denied via earlier popup - return AceCachedPromptResult::DENY; - } - // Only thing left is per session prompts - if ((*promptDecision).session.IsNull()) { - return AceCachedPromptResult::ASK_POPUP; - } - AceSessionId cachedSessionId = DPL::ToUTF8String(*((*promptDecision).session)); - if ((*promptDecision).decision == - PromptDecision::ALLOW_FOR_SESSION) { - if (cachedSessionId == sessionId) { - // Access granted for this session. - return AceCachedPromptResult::PERMIT; - } else { - return AceCachedPromptResult::ASK_POPUP; - } - } - if ((*promptDecision).decision == - PromptDecision::DENY_FOR_SESSION) { - if (cachedSessionId == sessionId) { - // Access denied for this session. - return AceCachedPromptResult::DENY; - } else { - return AceCachedPromptResult::ASK_POPUP; - } - } - } - return AceCachedPromptResult::ASK_POPUP; -} - -// AceThinClient - -bool AceThinClient::checkFunctionCall( - const AceRequest& ace_request) const -{ -#ifdef WRT_SKIP_ACE_SUPPORT - // simulation of compromised process - struct Internal { - static bool checkEnv() { - char *str = getenv("WRT_SKIP_ACE"); - if (str) - return !strncmp("1", str, 1); - return false; - } - }; - static bool skip = Internal::checkEnv(); - if (skip) - return true; -#endif - return m_impl->checkFunctionCall(ace_request); -} - -AcePreference AceThinClient::getWidgetResourcePreference( - const AceResource& resource, - const AceWidgetHandle& handle) const -{ - return m_impl->getWidgetResourcePreference( - resource, handle); -} - -AceResourcesPreferences* AceThinClient::getGlobalResourcesPreferences() -const -{ - return m_impl->getGlobalResourcesPreferences(); -} - -AceThinClient::AceThinClient() -{ - m_impl = new AceThinClientImpl(); -} - -AceThinClient::~AceThinClient() -{ - Assert(NULL != m_impl); - delete m_impl; -} - -bool AceThinClient::isInitialized() const -{ - return NULL != m_impl && m_impl->isInitialized(); -} - - -} // namespace AceClient diff --git a/ace_client/src/example/CMakeLists.txt b/ace_client/src/example/CMakeLists.txt deleted file mode 100644 index b3e9259..0000000 --- a/ace_client/src/example/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(ace-thin-client-example) - -include(FindPkgConfig) - -pkg_check_modules(DEPS - dpl-efl - REQUIRED) - -pkg_search_module(wrt-ace-client REQUIRED wrt-ace-client) - -set(TARGET_NAME "ace-thin-client-example") - -set(SRCS - ace-thin-client-example.cpp) - -include_directories(${DEPS_INCLUDE_DIRS}) -include_directories(${wrt-ace-client_INCLUDE_DIRS}) - -add_definitions("-DDPL_LOGS_ENABLED") - -add_executable(${TARGET_NAME} ${SRCS}) - -target_link_libraries(${TARGET_NAME} - ${DEPS_LDFLAGS} - ${wrt-ace-client_LDFLAGS}) diff --git a/ace_client/src/example/ace-thin-client-example.cpp b/ace_client/src/example/ace-thin-client-example.cpp deleted file mode 100644 index aa4c4a8..0000000 --- a/ace_client/src/example/ace-thin-client-example.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace-thin-client-example.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Example usage of ACE thin client. - */ - -#include - -int main(int argc, char **argv) -{ - AceClient::AceThinClient& client = - AceClient::AceThinClientSingleton::Instance(); - client.initialize(); // this fires echo method - see logs - client.deinitialize(); - return 0; -} - diff --git a/data/wrt_widget_default_icon.png b/data/wrt_widget_default_icon.png deleted file mode 100644 index 5c3d7640503b27e5b8273089a38f57bcab3bc84e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16526 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 Dd>y4@ diff --git a/debian/wrt-dev.install.in b/debian/wrt-dev.install.in deleted file mode 100644 index e2e41aa..0000000 --- a/debian/wrt-dev.install.in +++ /dev/null @@ -1,2 +0,0 @@ -@PREFIX@/include/* -@PREFIX@/lib/pkgconfig/* diff --git a/debian/wrt-test.install.in b/debian/wrt-test.install.in deleted file mode 100644 index e0bbf89..0000000 --- a/debian/wrt-test.install.in +++ /dev/null @@ -1,22 +0,0 @@ -/usr/bin/wrt-tests-* -#/usr/bin/wrt_dao_tests_prepare_db.sh -##/usr/apps/org.tizen.policy/bin/* -##/usr/apps/org.tizen.policy/bin/unittests -##/usr/apps/org.tizen.policy/bin/policyut -##/usr/apps/org.tizen.policy/bin/signer -##/usr/apps/org.tizen.policy/signer/* -#/usr/etc/ace/at* -#/usr/etc/ace/p* -#/usr/etc/ace/g* -#/usr/etc/ace/u* -#/usr/etc/ace/i* -#/usr/etc/ace/smack-test.xml -#/usr/etc/ace/CMTest/* -##/usr/etc/ace/SignerTests/* -##/usr/etc/ace/PolicyUpdateTests/* -/opt/apps/widget/tests/w3c_widgets/* -#/opt/apps/widget/tests/vcore* -#/opt/apps/widget/tests/widget_module/* -#/opt/apps/widget/user/tests/* -#/opt/apps/widget/user/smack/* -#/usr/lib/libwrt-engine-tests-lib.so.* diff --git a/debian/wrt-test.postinst b/debian/wrt-test.postinst deleted file mode 100644 index d8780f3..0000000 --- a/debian/wrt-test.postinst +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -sqlite3 /opt/dbspace/.wrt.db "delete from featureslist where FeatureUUID=666;" -sqlite3 /opt/dbspace/.wrt.db "delete from pluginproperties where PluginPropertiesId=666;" -sqlite3 /opt/dbspace/.wrt.db "insert into featureslist(FeatureUUID, FeatureName, PluginPropertiesId) VALUES(666, 'feature:a9bb79c1', 666);" -sqlite3 /opt/dbspace/.wrt.db "insert into pluginproperties(PluginPropertiesId, PluginLibraryName) VALUES(666, 'plugin:forfeaturea9bb79c1')" - -sqlite3 /opt/dbspace/.wrt.db "delete from featureslist where FeatureUUID=777;" -sqlite3 /opt/dbspace/.wrt.db "delete from pluginproperties where PluginPropertiesId=777;" -sqlite3 /opt/dbspace/.wrt.db "insert into pluginproperties(PluginPropertiesId, PluginLibraryName) VALUES(777, 'plugin:forfeaturexbugusfeature')" -sqlite3 /opt/dbspace/.wrt.db "insert into featureslist(FeatureUUID, FeatureName, PluginPropertiesId) VALUES(777, 'feature:x-bugus-feature', 777);" - -#echo "Copying ROOT CA certificate for wrt-engine-tests test-suite." -#cp /opt/apps/widget/tests/vcore_keys/root_cacert.pem /opt/share/cert-svc/certs/code-signing/wac/ -#echo "Copying ROOT CA certificate for developer mode tests." -#cp /opt/apps/widget/tests/vcore_keys/operator.root.cert.pem /opt/share/cert-svc/certs/code-signing/wac/ - -# The following .pem files are not used in wrt-test. test code regarding these .pem files have been moved to wrt-extra repository (private git) - -#echo "Copying ROOT CA certificate for W3C DIGITAL SIGNATURE test-suite." -#cp /opt/apps/widget/tests/w3c_certificates/root.cert.pem /opt/share/cert-svc/certs/code-signing/wac/ - -#echo "Copying ROOT CA certificate for wac tests." -#cp /opt/apps/widget/user/wactests/demoCA/cacert.pem /opt/share/cert-svc/certs/code-signing/wac/test.root.cacert.pem diff --git a/debian/wrt.postinst.in_all b/debian/wrt.postinst.in_all deleted file mode 100755 index 01312bd..0000000 --- a/debian/wrt.postinst.in_all +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -mkdir -p /opt/apps/widget/system -mkdir -p /opt/apps/widget/user -mkdir -p /opt/apps/widget/exec -mkdir -p /opt/apps/widget/data/Public -mkdir -p /usr/lib/wrt-plugins - -#vconf --- register WRT -/usr/bin/vconftool set -t string db/webruntime/vendor "Samsung" -f -/usr/bin/vconftool set -t string db/webruntime/name "WebRuntime" -f -/usr/bin/vconftool set -t string db/webruntime/version "1.0.0.0" -f -/usr/bin/vconftool set -t string db/webruntime/api "W3C WAC1.0 WAC2.0" -f - -echo "[WRT] wrt postinst done ..." diff --git a/mockups/AceDAOReadOnly_mock.cpp b/mockups/AceDAOReadOnly_mock.cpp deleted file mode 100644 index dc2084f..0000000 --- a/mockups/AceDAOReadOnly_mock.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 0.1 - * @brief ACE DAO read only mockup class - */ -#include "AceDAOReadOnly_mock.h" - -namespace AceDB { -OptionalPolicyResult AceDAOReadOnly::m_policyResult = OptionalPolicyResult(); -OptionalCachedPromptDecision AceDAOReadOnly::m_promptDecision = - OptionalCachedPromptDecision(); -PreferenceTypes AceDAOReadOnly::m_devCapSetting = - PreferenceTypes::PREFERENCE_DEFAULT; -PreferenceTypes AceDAOReadOnly::m_widgetDevCapSetting = - PreferenceTypes::PREFERENCE_DEFAULT; -PreferenceTypesMap AceDAOReadOnly::m_devCapSettings = PreferenceTypesMap(); -BaseAttributeSet AceDAOReadOnly::m_attributeSet = BaseAttributeSet(); -BasePermissionList AceDAOReadOnly::m_widgetDevCapSettings = BasePermissionList(); -std::set AceDAOReadOnly::m_devCapPermissions = - std::set(); -}; diff --git a/mockups/AceDAOReadOnly_mock.h b/mockups/AceDAOReadOnly_mock.h deleted file mode 100644 index 1b2b301..0000000 --- a/mockups/AceDAOReadOnly_mock.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 0.1 - * @brief ACE DAO read only mockup class - */ - -#ifndef WRT_MOCKUPS_ACE_DAO_READ_ONLY_MOCK_H_ -#define WRT_MOCKUPS_ACE_DAO_READ_ONLY_MOCK_H_ - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace AceDB { - -class AceDAOReadOnly -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - }; - - AceDAOReadOnly() {} - - static void attachToThread(){}; - static void detachFromThread(){}; - - // policy effect/decision - static OptionalPolicyResult getPolicyResult( - const BaseAttributeSet &/*attributes*/) - { - return m_policyResult; - } - - // prompt decision - static OptionalCachedPromptDecision getPromptDecision( - const std::string &/*hash*/, - const std::string &/*userParam*/) - { - return m_promptDecision; - } - static OptionalCachedPromptDecision getPromptDecision( - const BaseAttributeSet &/*attributes*/, - const std::string &/*userParam*/) - { - return m_promptDecision; - } - - // resource settings - static PreferenceTypes getDevCapSetting(const std::string &/*resource*/) - { - return m_devCapSetting; - } - static void getDevCapSettings(PreferenceTypesMap *preferences) - { - *preferences = m_devCapSettings; - } - - // user settings - static void getWidgetDevCapSettings(BasePermissionList *permissions) - { - *permissions = m_widgetDevCapSettings; - } - - static PreferenceTypes getWidgetDevCapSetting( - const std::string &/*resource*/, - WidgetHandle /*handler*/) - { - return m_widgetDevCapSetting; - } - - static void getAttributes(BaseAttributeSet *attributes) - { - *attributes = m_attributeSet; - } - - // static dev cap permissions - // - // (For a given widget handle, a set of device caps is - // granted "statically", i.e. it is determined at installation - // time that the widget will always get (at launch) the SMACK - // permissions needed to use those device caps). - // - // 'permissions' is an output parameter - it must point to - // an existing set and the function will clear it and fill - // with the device cap names as described. - static void getStaticDevCapPermissions( - int /*widgetHandle*/, - std::set *permissions) - { - *permissions = m_devCapPermissions; - } - - // Setting return values for mockups - static void setPolicyResult(OptionalPolicyResult value) - { - m_policyResult = value; - } - - static void setPromptDecision(OptionalCachedPromptDecision value) - { - m_promptDecision = value; - } - - static void setDevCapSetting(PreferenceTypes value) - { - m_devCapSetting = value; - } - - static void setWidgetDevCapSetting(PreferenceTypes value) - { - m_widgetDevCapSetting = value; - } - - static void setWidgetDevCapSettings(BasePermissionList value) - { - m_widgetDevCapSettings = value; - } - - static void setDevCapSettings(PreferenceTypesMap value) - { - m_devCapSettings = value; - } - - static void setAttributeSet(BaseAttributeSet value) - { - m_attributeSet = value; - } - - static void setDevCapPermissions(std::set value) - { - m_devCapPermissions = value; - } - - protected: - static OptionalPolicyResult m_policyResult; - static OptionalCachedPromptDecision m_promptDecision; - static PreferenceTypes m_devCapSetting; - static PreferenceTypes m_widgetDevCapSetting; - static PreferenceTypesMap m_devCapSettings; - static BaseAttributeSet m_attributeSet; - static BasePermissionList m_widgetDevCapSettings; - static std::set m_devCapPermissions; -}; - -} - -#endif // WRT_MOCKUPS_ACE_DAO_READ_ONLY_MOCK_H_ diff --git a/mockups/PolicyInformationPoint_mock.h b/mockups/PolicyInformationPoint_mock.h deleted file mode 100644 index 07ced18..0000000 --- a/mockups/PolicyInformationPoint_mock.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief PolicyInformationPoint mockup class - */ -#ifndef WRT_MOCKUPS_POLICY_INFORMATION_POINT_MOCK_H_ -#define WRT_MOCKUPS_POLICY_INFORMATION_POINT_MOCK_H_ - -class PolicyInformationPoint { - public: - PolicyInformationPoint(void*, void*, void*){}; - virtual ~PolicyInformationPoint(){}; - void getAttributesValues(void*, void*){}; - -}; - -#endif // WRT_MOCKUPS_POLICY_INFORMATION_POINT_MOCK_H_ diff --git a/mockups/PopupInvoker_mock.cpp b/mockups/PopupInvoker_mock.cpp deleted file mode 100644 index 0835e0a..0000000 --- a/mockups/PopupInvoker_mock.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file PopupInvoker_mock.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - */ - -#include "PopupInvoker_mock.h" - -Prompt::PromptAnswer PopupInvoker::m_answer(true, Prompt::Validity::ALWAYS); diff --git a/mockups/PopupInvoker_mock.h b/mockups/PopupInvoker_mock.h deleted file mode 100644 index e439c69..0000000 --- a/mockups/PopupInvoker_mock.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file PopupInvoker_mock.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - */ - -#ifndef WRT_SRC_MOCKUPS_POPUP_INVOKER_H -#define WRT_SRC_MOCKUPS_POPUP_INVOKER_H - -#include - -#include - -class PopupInvoker -{ -public: - PopupInvoker(){}; - ~PopupInvoker(){}; - - Prompt::PromptAnswer showSyncPopup(int /*popupType*/, - const std::string &/*resource*/) - { - return m_answer; - } - - static void setPromptAnswer(Prompt::PromptAnswer value) - { - m_answer = value; - } -private: - static Prompt::PromptAnswer m_answer; -}; - -#endif // WRT_SRC_MOCKUPS_POPUP_INVOKER_H diff --git a/mockups/WrtDatabase_mock.h b/mockups/WrtDatabase_mock.h deleted file mode 100644 index b67baea..0000000 --- a/mockups/WrtDatabase_mock.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains simple mockup of WrtDatabase class. - */ -#ifndef WRT_MOCUPS_CONFIGURATION_WRTDATABASE_MOCK_H_ -#define WRT_MOCUPS_CONFIGURATION_WRTDATABASE_MOCK_H_ - -namespace WrtDB { - -class WrtDatabase -{ - public: - static void attachToThread(){}; - static void detachFromThread(){}; -}; - -} - -#endif /* WRT_MOCUPS_CONFIGURATION_WRTDATABASE_H_ */ - diff --git a/mockups/dbus_client_mock.cpp b/mockups/dbus_client_mock.cpp deleted file mode 100644 index 81f4ca8..0000000 --- a/mockups/dbus_client_mock.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief DBus client mockup class. - */ -#include "dbus_client_mock.h" - -namespace DPL { -namespace DBus { - int Client::m_checkAccessResult = 0; - bool Client::m_daemonValidationResult = true; -} -}; diff --git a/mockups/dbus_client_mock.h b/mockups/dbus_client_mock.h deleted file mode 100644 index ee62774..0000000 --- a/mockups/dbus_client_mock.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief DBus client mockup class. - */ - -#ifndef WRT_MOCKUPS_DBUS_CLIENT_MOCK_H_ -#define WRT_MOCKUPS_DBUS_CLIENT_MOCK_H_ - -#include -#include - -#include -#include -#include "ace_server_api.h" -#include "popup_response_service_api.h" - -namespace DPL { -namespace DBus { - -/* - * This class is a mockup implementation for some methods called - * with DBus::Client. - */ - -class Client -{ - - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DBusClientException) - }; - - Client(std::string /*serverPath*/, - std::string /*serviceName*/, - std::string /*interfaceName*/) - { - } - - // ACE server api echo method - void call(const std::string &methodName, - const std::string &inArg, - std::string* outArg) - { - if (methodName == RPC::AceServerApi::ECHO_METHOD) { - Assert(NULL != outArg); - *outArg = inArg; - return; - } - } - - // ACE server api check access method - void call(const std::string &methodName, - int, - const std::string&, - const std::string&, - const std::vector&, - const std::vector&, - int* outArg) - { - if (methodName == RPC::AceServerApi::CHECK_ACCESS_METHOD) { - Assert(NULL != outArg); - *outArg = m_checkAccessResult; - return; - } - } - - // Security daemon validation method - void call(const std::string &methodName, - bool, - int, - int, - const std::string&, - const std::string&, - const std::vector&, - const std::vector&, - bool* outArg) - { - if (methodName == - RPC::PopupResponseServiceApi::getValidationMethodName()) { - Assert(NULL != outArg); - *outArg = m_daemonValidationResult; - return; - } - } - - ~Client() - { - } - - static void setCheckAccessResult(int value) - { - m_checkAccessResult = value; - } - - static void setDaemonValidationResult(bool value) - { - m_daemonValidationResult = value; - } - - private: - static int m_checkAccessResult; - static bool m_daemonValidationResult; -}; - -} // namespace DBus -} - -#endif // WRT_MOCKUPS_DBUS_CLIENT_MOCK_H_ diff --git a/mockups/event_support_mock.h b/mockups/event_support_mock.h deleted file mode 100644 index e95305b..0000000 --- a/mockups/event_support_mock.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 0.1 - * @brief Event support mockup. - */ -/* - * Creating this mockup is necessary, as, ie. AceThinClient is - * using method invocation like this: - * - * m_popupClient->DPL::EventSupport::AddListener - * - * Moreover, it must fire the delegate just after creation, - * preferably in the same thread, to avoid race conditions - * with callbacks that change (initialize) state of the callee, - * ie. AceThinClient. - * - * */ -#include - -namespace DPL { -namespace Event { -template -class EventSupport { - public: - typedef FastDelegate1 DelegateType; - - void AddListener(DelegateType delegate) - { - T event; - delegate(event); - } -}; -} -} diff --git a/mockups/rpc_client_mock.cpp b/mockups/rpc_client_mock.cpp deleted file mode 100644 index 7424204..0000000 --- a/mockups/rpc_client_mock.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief RPC client mockup class. - */ -#include "rpc_client_mock.h" - -namespace UIProcess { -PopupResponse RpcClient::m_popupReponse = PopupResponse(false); -}; diff --git a/mockups/rpc_client_mock.h b/mockups/rpc_client_mock.h deleted file mode 100644 index 35a3980..0000000 --- a/mockups/rpc_client_mock.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 0.1 - * @brief RpcClient mockup class - */ -#ifndef WRT_MOCKUPS_RPC_CLIENT_H_ -#define WRT_MOCKUPS_RPC_CLIENT_H_ - -#include - -#include -#include -#include -#include -#include - -#include -#include "PolicyEffect.h" -#include "event_support_mock.h" - -namespace UIProcess { - -DECLARE_GENERIC_EVENT_0(AcceptingCallsEvent) - -struct PopupResponse -{ - PopupResponse(bool pIsAccessAllowed) : - isAccessAllowed(pIsAccessAllowed) - { - } - PopupResponse(const PopupResponse& aResponse) : - isAccessAllowed(aResponse.isAccessAllowed) - { - } - bool isAccessAllowed; -}; - -typedef std::unique_ptr UniquePopupResponsePtr; - -class RpcClient : public DPL::Event::EventSupport { - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, NotConnected) - }; - - UniquePopupResponsePtr showSyncPopup(PolicyEffect&, - AceUserdata&) - { - PopupResponse* newPopupReponse = new PopupResponse(m_popupReponse); - return UniquePopupResponsePtr(newPopupReponse); - } - - static void setPopupResponse(PopupResponse value) - { - m_popupReponse = value; - } - - private: - static PopupResponse m_popupReponse; -}; - - -}; // namespace UIProcess - -#endif // WRT_MOCKUPS_RPC_CLIENT_H_ diff --git a/mockups/widget_dao_read_only_mock.cpp b/mockups/widget_dao_read_only_mock.cpp deleted file mode 100644 index 580fb5e..0000000 --- a/mockups/widget_dao_read_only_mock.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Widget dao mockup class - */ -#include "widget_dao_read_only_mock.h" - -namespace WrtDB { -WidgetGUID WidgetDAOReadOnly::m_guid = WidgetGUID(); -} // namespace WrtDB diff --git a/mockups/widget_dao_read_only_mock.h b/mockups/widget_dao_read_only_mock.h deleted file mode 100644 index 20f7630..0000000 --- a/mockups/widget_dao_read_only_mock.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Widget dao mockup class - */ - -#ifndef _WRT_MOCKUPS_WIDGET_DAO_READ_ONLY_H_ -#define _WRT_MOCKUPS_WIDGET_DAO_READ_ONLY_H_ - -#include - -namespace WrtDB { - -typedef int DbWidgetHandle; -typedef DPL::OptionalString WidgetGUID; - -class WidgetDAOReadOnly -{ - public: - /** - * WidgetDAO Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, ReadOnlyProperty) - DECLARE_EXCEPTION_TYPE(Base, GUIDisNull) - DECLARE_EXCEPTION_TYPE(Base, UnexpectedEmptyResult) - DECLARE_EXCEPTION_TYPE(Base, WidgetNotExist) - DECLARE_EXCEPTION_TYPE(Base, AlreadyRegistered) - }; - WidgetDAOReadOnly(DbWidgetHandle /*widgetHandle*/){}; - WidgetGUID getGUID() const - { - return m_guid; - } - - static void setGUID(WidgetGUID value) - { - m_guid = value; - } - - private: - static WidgetGUID m_guid; -}; - -} // namespace WrtDB - -#endif // _WRT_MOCKUPS_WIDGET_DAO_READ_ONLY_H_ - diff --git a/packaging/wrt-engine.spec b/packaging/wrt-engine.spec deleted file mode 100644 index 8464854..0000000 --- a/packaging/wrt-engine.spec +++ /dev/null @@ -1,212 +0,0 @@ -Name: wrt-engine -Summary: Web Runtime Engine -Version: 0.5.7 -Release: 1 -Group: System/Libraries -License: SAMSUNG -Source0: %{name}-%{version}.tar.gz - -Requires(post): /usr/bin/sqlite3 - -BuildRequires: pkgconfig(glib-2.0) -BuildRequires: pkgconfig(sqlite3) -BuildRequires: pkgconfig(ewebkit) -BuildRequires: pkgconfig(elm-webview) -BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(dbus-1) -BuildRequires: pkgconfig(efreet) -BuildRequires: pkgconfig(appcore-efl) -BuildRequires: pkgconfig(openssl) -BuildRequires: pkgconfig(cert-svc) -BuildRequires: pkgconfig(dpl-efl) -BuildRequires: pkgconfig(libpcre) -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(ecore) -BuildRequires: pkgconfig(eina) -BuildRequires: pkgconfig(ui-gadget) -BuildRequires: pkgconfig(utilX) -BuildRequires: pkgconfig(security-server) -BuildRequires: pkgconfig(pkgmgr-installer) -BuildRequires: pkgconfig(xmlsec1) -BuildRequires: pkgconfig(libidn) -BuildRequires: pkgconfig(dnet) -BuildRequires: pkgconfig(pkgmgr-types) -BuildRequires: pkgconfig(libsoup-2.4) -BuildRequires: cmake -BuildRequires: gettext -BuildRequires: edje-tools - -%description -online widget(W3C, BONDI, JIL, MSC) platform - -%package devel -Summary: Web Runtime Engine Development -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} - -%description devel -online widget(W3C, BONDI, JIL, MSC) platform - dev - -%package test -Summary: Web Runtime Engine Test -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} - -%description test -online widget(W3C, BONDI, JIL, MSC) platform - test program - -%prep -%setup -q - -%build -cmake . -DBUILD_TYPE="X1" -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -make %{?jobs:-j%jobs} - -%install -%make_install - -%post -# Update database -WRT_DB_VERSION=`sqlite3 /opt/dbspace/.wrt.db ".schema" | grep "CREATE TABLE WRT_VERSION_" | sed -e s/"CREATE TABLE "// -e s/"(version INT);"//` - - -chmod +x /usr/bin/wrt_reset_db.sh - -if [ ${WRT_DB_VERSION} ] -then - if [ ${WRT_DB_VERSION} = "WRT_VERSION_28" ] - then - echo "Valid database detected so db installation ignored" - else - echo "Calling /usr/bin/wrt_reset_db.sh" - /usr/bin/wrt_reset_db.sh - fi -else - echo "Calling /usr/bin/wrt_reset_db.sh" - /usr/bin/wrt_reset_db.sh -fi - -mkdir -p /opt/apps/widget/system -mkdir -p /opt/apps/widget/user -mkdir -p /opt/apps/widget/exec -mkdir -p /opt/apps/widget/data/Public -mkdir -p /usr/lib/wrt-plugins -mkdir -p /usr/etc/ace -mkdir -p /usr/apps/org.tizen.policy - -if [ ${USER} == "root" ] -then - #change file owner - chmod +s /usr/bin/wrt-client - - # 3. configurations - chown root:root /usr/etc/ace/config.xml - chown root:root /opt/dbspace/.wrt.db - chown root:root /opt/dbspace/.wrt.db-journal -fi - -#change file permissions -# 3. configurations -chmod 660 /opt/dbspace/.wrt.db -chmod 660 /opt/dbspace/.wrt.db-journal -#chmod 600 /usr/etc/ace/config.xml - -#symlink for package manager -ln -sf /usr/bin/pkgmgr_backend_wgt /usr/etc/package-manager/backend/wgt - -#vconf --- register WRT -/usr/bin/vconftool set -t string db/webruntime/vendor "Samsung" -f -/usr/bin/vconftool set -t string db/webruntime/name "WebRuntime" -f -/usr/bin/vconftool set -t string db/webruntime/version "1.0.0.0" -f -/usr/bin/vconftool set -t string db/webruntime/api "W3C WAC1.0 WAC2.0" -f - -################################################################# -# Set executin script -################################################################# -mkdir -p /opt/share/cert-svc/certs/code-signing/wac/ -echo "[WRT] install WAC ROOT CA preproduction certificate" -cd /usr/share/wrt-engine -cp wac.root.preproduction.pem /opt/share/cert-svc/certs/code-signing/wac/ -echo "[WRT] install WAC ROOT CA production certificate" -cp wac.root.production.pem /opt/share/cert-svc/certs/code-signing/wac/ -echo "[WRT] install WAC publisherId preproduction certificate" -cp wac.publisherid.pem /opt/share/cert-svc/certs/code-signing/wac/ -echo "[WRT] install Samsung developer mode certificate" -cp samsung.devmode.root.cert.pem /opt/share/cert-svc/certs/code-signing/wac/ - -echo "[WRT] wrt postinst done ..." - -%post test -sqlite3 /opt/dbspace/.wrt.db "delete from featureslist where FeatureUUID=666;" -sqlite3 /opt/dbspace/.wrt.db "delete from pluginproperties where PluginPropertiesId=666;" -sqlite3 /opt/dbspace/.wrt.db "insert into featureslist(FeatureUUID, FeatureName, PluginPropertiesId) VALUES(666, 'feature:a9bb79c1', 666);" -sqlite3 /opt/dbspace/.wrt.db "insert into pluginproperties(PluginPropertiesId, PluginLibraryName) VALUES(666, 'plugin:forfeaturea9bb79c1')" - -sqlite3 /opt/dbspace/.wrt.db "delete from featureslist where FeatureUUID=777;" -sqlite3 /opt/dbspace/.wrt.db "delete from pluginproperties where PluginPropertiesId=777;" -sqlite3 /opt/dbspace/.wrt.db "insert into pluginproperties(PluginPropertiesId, PluginLibraryName) VALUES(777, 'plugin:forfeaturexbugusfeature')" -sqlite3 /opt/dbspace/.wrt.db "insert into featureslist(FeatureUUID, FeatureName, PluginPropertiesId) VALUES(777, 'feature:x-bugus-feature', 777);" - -echo "Copying ROOT CA certificate for W3C DIGITAL SIGNATURE test-suite." -cp /opt/apps/widget/tests/w3c_certificates/root.cert.pem /opt/share/cert-svc/certs/code-signing/wac/ -echo "Copying ROOT CA certificate for wrt-engine-tests test-suite." -cp /opt/apps/widget/tests/vcore_keys/root_cacert.pem /opt/share/cert-svc/certs/code-signing/wac/ -echo "Copying ROOT CA certificate for developer mode tests." -cp /opt/apps/widget/tests/vcore_keys/operator.root.cert.pem /opt/share/cert-svc/certs/code-signing/wac/ -echo "Copying ROOT CA certificate for wac tests." -cp /opt/apps/widget/user/wactests/demoCA/cacert.pem /opt/share/cert-svc/certs/code-signing/wac/test.root.cacert.pem - -%files -/usr/bin/wrt-client -/usr/bin/wrt_policy_setter.sh -/usr/bin/wrt_reset_db.sh -/usr/bin/pkgmgr_backend_wgt -/usr/lib/libwrt-popup-lib.so* -/opt/ug/lib/* -/usr/share/edje/ace/* -/usr/share/locale/* -/usr/share/wrt-engine/* -/usr/share/edje/wrt/Daemon.edj -/usr/etc/ace/config.xml -/usr/etc/ace/config.dtd -/usr/etc/ace/bondixml.xsd -/usr/etc/ace/demo.xml -/usr/etc/ace/WACPolicy.xml -/usr/etc/ace/UnrestrictedPolicy.xml -/usr/etc/wrt/* - -%files devel -/usr/include/* -/usr/lib/pkgconfig/* - -%files test -/usr/bin/wrt-tests-* -/usr/bin/intercept-test.sh -/usr/bin/wrt_client_tests -/usr/bin/wrt-popup-test -/usr/bin/wrt-miniapp -/usr/bin/wrt_dao_tests_prepare_db.sh -#/usr/apps/org.tizen.policy/bin/* -#/usr/apps/org.tizen.policy/bin/unittests -#/usr/apps/org.tizen.policy/bin/policyut -#/usr/apps/org.tizen.policy/bin/signer -#/usr/apps/org.tizen.policy/signer/* -/usr/etc/ace/at* -/usr/etc/ace/p* -/usr/etc/ace/g* -/usr/etc/ace/u* -/usr/etc/ace/i* -/usr/etc/ace/j* -/usr/etc/ace/w* -/usr/etc/ace/CMTest/* -#/usr/etc/ace/SignerTests/* -#/usr/etc/ace/PolicyUpdateTests/* -/opt/apps/widget/tests/w3c_widgets/* -/opt/apps/widget/tests/w3c_certificates/* -/opt/apps/widget/tests/vcore* -/opt/apps/widget/user/acetests/* -/opt/apps/widget/user/tests/* -/usr/lib/libwrt-engine-tests-lib.so* -/opt/apps/widget/user/wactests/* -/bin/unittests -/usr/bin/wrt-scoped-gpointer-tests diff --git a/pkgconfigs/wrt-ace-client.pc.in b/pkgconfigs/wrt-ace-client.pc.in deleted file mode 100644 index 5e1d801..0000000 --- a/pkgconfigs/wrt-ace-client.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: ace-client -Description: ACE thin client library -Version: @VERSION@ -Requires: -Libs: -lwrt-ace-client -L${libdir} -Cflags: -I${includedir}/wrt-engine/ace-client diff --git a/pkgconfigs/wrt-engine.pc.in b/pkgconfigs/wrt-engine.pc.in deleted file mode 100644 index e2b434d..0000000 --- a/pkgconfigs/wrt-engine.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: wrt-engine -Description: wrt-engine -Version: @VERSION@ -Requires: glib-2.0 sqlite3 ewebkit libxml-2.0 dbus-1 efreet cert-svc appcore-efl -Libs: -L${libdir} -Cflags: -I${includedir}/wrt-engine diff --git a/pkgconfigs/wrt-plugin-api.pc.in b/pkgconfigs/wrt-plugin-api.pc.in deleted file mode 100644 index 3866ea2..0000000 --- a/pkgconfigs/wrt-plugin-api.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: wrt-plugin-api -Description: wrt-plugin-api -Version: @VERSION@ -Requires: -Libs: -Cflags: -I${includedir}/wrt-engine diff --git a/pkgconfigs/wrt-plugin-loading.pc.in b/pkgconfigs/wrt-plugin-loading.pc.in deleted file mode 100644 index 1e45645..0000000 --- a/pkgconfigs/wrt-plugin-loading.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: wrt-plugin-loading -Description: wrt-plugin-loading -Version: @VERSION@ -Requires: dpl-efl dpl-wrt-dao-ro wrt-plugin-api ewebkit -Libs: -lwrt-plugin-loading -L${libdir} -Cflags: -I${includedir}/wrt-engine/plugin-service diff --git a/roaming_error.msg b/roaming_error.msg deleted file mode 100644 index f8fd9e9..0000000 --- a/roaming_error.msg +++ /dev/null @@ -1 +0,0 @@ -This request was blocked because this site is not allowed to run in roaming mode. diff --git a/scripts/DESCRIPTION b/scripts/DESCRIPTION deleted file mode 100644 index 86074c4..0000000 --- a/scripts/DESCRIPTION +++ /dev/null @@ -1,2 +0,0 @@ -!!!options!!! stop -Various scripts for test/development usage diff --git a/scripts/wrt_install.expect b/scripts/wrt_install.expect deleted file mode 100755 index 1eaa70c..0000000 --- a/scripts/wrt_install.expect +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/expect -f -# -# Automated WRT packages installation script -# -# Usage: -# expect wrt_install.expect WRT_version -# -#read arguments -set arg1 [lrange $argv 0 0] -set arg2 [lrange $argv 1 1] -#run the telnet command to target -spawn telnet target -#wait for login prompt -expect -re "login:" -#send login -send "root\n" -#wait for shell prompt -expect -re "#" -#install engine package -send "dpkg -i /mnt/nfs/wrt-engine_${arg1}_armel.deb\r" -#wait for result -expect -re "#" -#install test package -send "dpkg -i /mnt/nfs/wrt-engine-test_${arg1}_armel.deb\r" -#wait for result -expect -re "#" -#install debug package -send "dpkg -i /mnt/nfs/wrt-engine-dbg_${arg1}_armel.deb\r" -#wait for result -expect -re "#" -#bye -exit 0 diff --git a/scripts/wrt_install.sh b/scripts/wrt_install.sh deleted file mode 100644 index 9a00cd9..0000000 --- a/scripts/wrt_install.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# Bash script for automated WRT test results processing -# Author: Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - -SOURCE_DIR=$1 -WRT_VERSION=$2 - -WRT_ENGINE=wrt-engine - -EXPECT_SCRIPT_DIR=$SOURCE_DIR/$WRT_ENGINE/scripts - -expect $EXPECT_SCRIPT_DIR/wrt_mount_nfs.expect $SOURCE_DIR - -if [ $? -ne 0 ] -then - echo Mount failed - exit -1 -fi - -expect $EXPECT_SCRIPT_DIR/wrt_kill.expect - -if [ $? -ne 0 ] -then - echo Kill failed - exit -1 -fi - -expect $EXPECT_SCRIPT_DIR/wrt_install.expect $WRT_VERSION - -if [ $? -ne 0 ] -then - echo Install failed - exit -1 -fi - - diff --git a/scripts/wrt_kill.expect b/scripts/wrt_kill.expect deleted file mode 100755 index d2d5a59..0000000 --- a/scripts/wrt_kill.expect +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/expect -f -#read arguments -set arg1 [lrange $argv 0 0] -set arg2 [lrange $argv 1 1] -#run the telnet command to target -spawn telnet target -#wait for login prompt -expect -re "login:" -#send login -send "root\n" -#wait for shell prompt -expect -re "#" - -#kill wrt clients -send "killall -9 30100 30101 30102 30103 30104 30105 30106 30107 30108 30109 30110 wrt-client wrt-test-ui\r" -#wait for result -expect -re "#" -#kill wrt engines -send "killall -9 wrt_engine_daemon\r" -#wait for result -expect -re "#" - -#kill bluescreens -send "killall -9 blue-screen\r" -#wait for result -expect -re "#" - - -#bye -exit 0 diff --git a/scripts/wrt_mount_nfs.expect b/scripts/wrt_mount_nfs.expect deleted file mode 100755 index 000c4f5..0000000 --- a/scripts/wrt_mount_nfs.expect +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/expect -f -# -# Expect script for automated NFS resource mount -# -# Usage: -# -# wrt_mount_nfs.expect local_nfs_drive -# -# -# read arguments -set arg1 [lrange $argv 0 0] -set arg2 [lrange $argv 1 1] -# run the telnet command to target -spawn telnet target -# wait for login prompt -expect -re "login:" -# send login -send "root\n" -# wait for shell prompt -expect -re "#" -# mount network drive -send "mount -o nolock,tcp -t nfs 192.168.129.1:$arg1 /mnt/nfs\r" -# wait for result -expect -re "#" -# turn off power manager -send "pmctrl stop\r" -# wait for result -expect -re "#" -# bye -exit 0 diff --git a/scripts/wrt_test.expect b/scripts/wrt_test.expect deleted file mode 100755 index 3a11687..0000000 --- a/scripts/wrt_test.expect +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/expect -f -#read arguments -set arg1 [lrange $argv 0 0] -set arg2 [lrange $argv 1 1] -#Set long timeout for tests -set timeout 600 -#run the telnet command to target -spawn telnet target -#wait for login prompt -expect -re "login:" -#send login -send "root\n" -#wait for shell prompt -expect -re "#" - -send "( $arg1 --output=html --verbosity=yes --filename=/opt/home/root/result.html && echo \"WRT_TEST_CORRECT\"_\"RETURN\" ) || echo \"WRT_TEST_INVALID\"_\"RETURN\" \r" - -expect -re "WRT_TEST_INVALID_RETURN" {exit -1} \ - "WRT_TEST_CORRECT_RETURN" {expect -re "#"} - -send "( cat /opt/home/root/result.html && echo \"WRT_TEST_CORRECT\"_\"RETURN\" ) || echo \"WRT_TEST_INVALID\"_\"RETURN\"\r" - -#wait for result -expect -re "WRT_TEST_INVALID_RETURN" {exit -1} \ - "WRT_TEST_CORRECT_RETURN" {expect -re "#"} - -exit 0 -#} - diff --git a/scripts/wrt_test.sh b/scripts/wrt_test.sh deleted file mode 100644 index 33e87b0..0000000 --- a/scripts/wrt_test.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# Bash script for automated WRT test results processing -# Author: Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - -TODO=0 -SUCCED=0 -IGNORED=0 -FAILED=0 - -EXPECT_SCRIPT_DIR=$1 - - -TESTS="/usr/bin/wrt-tests-orm -/usr/bin/wrt-tests-w3c -/usr/bin/wrt-tests-permission-check -/usr/bin/wrt-tests-warp" - - -for TEST in $TESTS -do - echo $TEST - SIGHTML=`expect $EXPECT_SCRIPT_DIR/wrt_test.expect $TEST` - - if [ $? -ne 0 ] - then - echo Expect test script failed for: $EXPECT_SCRIPT_DIR/wrt_test.expect $TEST - echo Expect result: - echo $SIGHTML - exit -1 - fi - - SUMMARY=`echo "$SIGHTML" | grep ""` - - TODONEW=`echo "$SUMMARY" | grep Todo: | sed -e s/"<"/" "/g | awk '{print $3}' | tail -n 1` - SUCCEDNEW=`echo "$SUMMARY" | grep Succeeded: | sed -e s/"<"/" "/g | awk '{print $3}' | tail -n 1 ` - IGNOREDNEW=`echo "$SUMMARY" | grep Ignored: | sed -e s/"<"/" "/g | awk '{print $3}' | tail -n 1` - FAILEDNEW=`echo "$SUMMARY" | grep Failed: | sed -e s/"<"/" "/g | awk '{print $3}' | tail -n 1` - - let TODO=TODO+TODONEW - let SUCCED=SUCCED+SUCCEDNEW - let IGNORED=IGNORED+IGNOREDNEW - let FAILED=FAILED+FAILEDNEW -done - - - - -echo Todo: $TODO -echo Succed: $SUCCED -echo Ignored: $IGNORED -echo Failed: $FAILED - diff --git a/src/API/DESCRIPTION b/src/API/DESCRIPTION deleted file mode 100644 index 59cbce3..0000000 --- a/src/API/DESCRIPTION +++ /dev/null @@ -1,2 +0,0 @@ -!!!options!!! stop -WRT external API diff --git a/src/API/api_callbacks_translate.cpp b/src/API/api_callbacks_translate.cpp deleted file mode 100644 index 379f476..0000000 --- a/src/API/api_callbacks_translate.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file api_callbacks_translate.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief Source file for api callbacks translate functions - */ - -#include - -using namespace WrtDB; - -namespace ApiCallbacksTranslate { -WrtErrStatus TranslateError(CommonError::Type status) -{ - switch (status) { - case CommonError::WrtSuccess: - return WRT_SUCCESS; - - case CommonError::HandleNotFound: - return WRT_ERROR_HANDLE_NOT_FOUND; - - case CommonError::AlreadyRunning: - return WRT_ERROR_ALREADY_RUNNING; - - case CommonError::InvalidLanguage: - return WRT_ERROR_INVALID_LANGUAGE; - - case CommonError::AlreadyStopped: - return WRT_ERROR_ALREADY_STOPPED; - - case CommonError::StillAuthorizing: - return WRT_ERROR_STILL_AUTHORIZING; - - case CommonError::EarlyKilled: - return WRT_ERROR_EARLY_KILLED; - - case CommonError::AccessDenied: - return WRT_ERROR_ACCESS_DENIED; - - case CommonError::DatabaseFailure: - return WRT_INSTALLER_ERROR_DATABASE_FAILURE; - - case CommonError::NoPath: - return WRT_ERROR_NO_PATH; - - default: - LogError("Untranslatable error: " << status); - return WRT_ERROR_INTERNAL; - } -} - -void LaunchWidgetCallback(ResultContext context, - WidgetHandle widgetHandle, - CommonError::Type result, - const std::string& errorMsg, - UserParam userParam) -{ - ADD_PROFILING_POINT("wrt_launch", "stop", "stopped Widget Launching"); - Assert(userParam != NULL); - - WrtErrStatus error = TranslateError(result); - APIWidgetLaunchStruct* launch = - static_cast(userParam); - - if (launch->callback) { - LogDebug("Calling launch widget callback (" << context << ", " << - widgetHandle << ", " << error << ", " << errorMsg << ")."); - launch->callback(context, - widgetHandle, - error, - errorMsg.c_str(), - launch->userdata); - } else { - LogWarning("LaunchWidgetCallback: ignoring NULL callback pointer"); - } - - delete launch; -} - -void StatusCallback(int widget_handle, - CommonError::Type result, - void *data) -{ - LogDebug("StatusCallback called " << widget_handle << " | " << result); - Assert(NULL != data); - - WrtErrStatus error = TranslateError(result); - StatusCallbackStruct* statusCallbackStruct = - static_cast(data); - - if (statusCallbackStruct->status_callback) { - statusCallbackStruct->status_callback(widget_handle, - error, - statusCallbackStruct->userdata); - } else { - LogInfo("StatusCallback: ignoring NULL callback pointer"); - } - - delete statusCallbackStruct; -} - -void InitCallback(CommonError::Type result, void *data) -{ - LogDebug("InitCallback called " << result); - Assert(data != NULL); - - WrtErrStatus error = TranslateError(result); - InitCallbackStruct* initCallbackStruct = - static_cast(data); - - if (initCallbackStruct->callback) { - initCallbackStruct->callback(error, initCallbackStruct->userdata); - } else { - LogInfo("InitCallback: ignoring NULL callback pointer"); - } - - delete initCallbackStruct; -} - -OperationStatusStruct CreateOperationStatusStruct(void* userdata, - WrtStatusCallback cb) -{ - LogDebug("Creating OperationStatusStruct with " << userdata << " " << cb); - OperationStatusStruct ret; - ret.operationStatusCallback = &StatusCallback; - - StatusCallbackStruct* statusCallbackStruct = - new StatusCallbackStruct(userdata, cb); - - ret.userParam = statusCallbackStruct; - return ret; -} - -InitStatusStruct CreateInitStatusStruct(void* userdata, WrtInitCallback cb) -{ - LogDebug("Creating InitStatusStruct with " << userdata << " " << cb); - InitStatusStruct ret; - ret.initStatusCallback = &InitCallback; - - InitCallbackStruct* initCallbackStruct = - new InitCallbackStruct(userdata, cb); - - ret.userParam = initCallbackStruct; - return ret; -} - -} //namespace - diff --git a/src/API/api_callbacks_translate.h b/src/API/api_callbacks_translate.h deleted file mode 100644 index 7c96b49..0000000 --- a/src/API/api_callbacks_translate.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file api_callbacks_translate.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief Header file for api callbacks translate functions - */ -#ifndef WRT_SRC_API_API_CALLBACKS_TRANSLATE_H_ -#define WRT_SRC_API_API_CALLBACKS_TRANSLATE_H_ - -#include -#include -#include - -namespace ApiCallbacksTranslate { -struct StatusCallbackStruct -{ - void* userdata; - WrtStatusCallback status_callback; - - StatusCallbackStruct(void* u, - WrtStatusCallback s) : - userdata(u), - status_callback(s) - { - } -}; -struct APIWidgetLaunchStruct -{ - void* userdata; - WrtLaunchWidgetCallback callback; -}; - -struct InitCallbackStruct -{ - void* userdata; - WrtInitCallback callback; - - InitCallbackStruct(void* u, - WrtInitCallback s) : - userdata(u), - callback(s) - { - } -}; - -void LaunchWidgetCallback(ResultContext context, - WidgetHandle widgetHandle, - CommonError::Type result, - const std::string& errorMsg, - UserParam userParam); - -void StatusCallback(int widget_handle, - CommonError::Type result, - void *data); - -void InitCallback(CommonError::Type result, void *data); - -OperationStatusStruct CreateOperationStatusStruct(void* userdata, - WrtStatusCallback cb); - -InitStatusStruct CreateInitStatusStruct(void* userdata, WrtInitCallback cb); -} //namespace - -#endif /* WRT_SRC_API_API_CALLBACKS_TRANSLATE_H_ */ diff --git a/src/API/export.h b/src/API/export.h deleted file mode 100644 index 7718770..0000000 --- a/src/API/export.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef EXPORT_H_ -#define EXPORT_H_ - -#define EXPORT_API __attribute__((visibility("default"))) - -#endif diff --git a/src/API/wrt_api.cpp b/src/API/wrt_api.cpp deleted file mode 100644 index d72b9d2..0000000 --- a/src/API/wrt_api.cpp +++ /dev/null @@ -1,733 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_api.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains definitions of wrt api - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include "dnet.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; - -#ifdef __cplusplus -extern "C" -{ -#endif - /** - * Wrt spank support - */ - static int wrt_pedantic_count_init_shutdown; - static int wrt_pedantic_count_widget_list; - static int wrt_pedantic_count_widget_name; - static int wrt_pedantic_count_widget_icon; - static int wrt_pedantic_count_widget_info; - - /* - * For Install plugin - */ - static void wrtPedanticCheck() - { - if (wrt_pedantic_count_init_shutdown != 0 || - wrt_pedantic_count_widget_list != 0 || - wrt_pedantic_count_widget_name != 0 || - wrt_pedantic_count_widget_icon != 0 || - wrt_pedantic_count_widget_info != 0) - { - printf( - "\033[1;31m====================================================" - "============================\033[m\n"); - printf("\033[1;31m= WRT: SPANK SPANK SPANK !!! \033[m\n"); - printf( - "\033[1;31m====================================================" - "============================\033[m\n"); - printf("\033[1;31mReasons of spank: \033[m\n"); - - if (wrt_pedantic_count_init_shutdown != 0) { - printf( - "\033[1;31m * COUNT(wrt_init) != COUNT(wrt_shutdown) [ %d ]" - "\033[m\n", - wrt_pedantic_count_init_shutdown); - } - - if (wrt_pedantic_count_widget_list != 0) { - printf( - "\033[1;31m * COUNT(wrt_get_widget_list) != COUNT(wrt_free_" - "widget_list) [ %d ] \033[m\n", - wrt_pedantic_count_widget_list); - } - - if (wrt_pedantic_count_widget_name != 0) { - printf( - "\033[1;31m * COUNT(wrt_get_widget_name) != COUNT(wrt_free_" - "widget_name) [ %d ]\033[m\n", - wrt_pedantic_count_widget_name); - } - - if (wrt_pedantic_count_widget_icon != 0) { - printf( - "\033[1;31m * COUNT(wrt_get_widget_icon) != COUNT(wrt_free_" - "widget_icon) [ %d ]\033[m\n", - wrt_pedantic_count_widget_icon); - } - - if (wrt_pedantic_count_widget_info != 0) { - printf( - "\033[1;31m * COUNT(wrt_get_widget_info) != COUNT(wrt_free_" - "widget_info) [ %d ]\033[m\n", - wrt_pedantic_count_widget_info); - } - } - } - - int wrtPedanticInit(); - - static int wrt_pedantic_initializer = wrtPedanticInit(); - - int wrtPedanticInit() - { - wrt_pedantic_count_init_shutdown = 0; - wrt_pedantic_count_widget_list = 0; - wrt_pedantic_count_widget_name = 0; - wrt_pedantic_count_widget_icon = 0; - wrt_pedantic_count_widget_info = 0; - - atexit(&wrtPedanticCheck); - - printf("\033[1;34mWRT spank support enabled.\033[m\n"); - - return 0; - } - - typedef std::shared_ptr WidgetModelPtr; - static WidgetModelPtr createWidgetModel(WidgetHandle widgetHandle) - { - WidgetModelPtr model = Domain::deserializeWidgetModel(widgetHandle); - - // Set localized data - if(model) Domain::localizeWidgetModel(model); - - return model; - } - - EXPORT_API int wrt_init(void *userdata, - WrtInitCallback callback) - { - ADD_PROFILING_POINT("wrt_init", - "start", - "starting WebRuntime Initialization"); - - // Set DPL/LOG MID - DPL::Log::LogSystemSingleton::Instance().SetTag("WRT"); - - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - try - { - LogInfo("[WRT-API] INITIALIZING WRT..."); - LogInfo("[WRT-API] BUILD: " << __TIMESTAMP__); - - LogInfo("Prepare libxml2 to work in multithreaded program."); - - // Pedantic init check - if (wrt_pedantic_count_init_shutdown > 0) { - return WRT_ALREADY_INIT; - } - - // Must touch all singletons to inherit current context - ADD_PROFILING_POINT("touch_architecture", "start"); - GlobalContext::TouchArchitecture(); - ADD_PROFILING_POINT("touch_architecture", "stop"); - - // Initialize Widget Logic - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::InitializeEvent( - ApiCallbacksTranslate::CreateInitStatusStruct( - userdata, - callback))); - - // user has to call shutdown if init fails during initialization - ++wrt_pedantic_count_init_shutdown; - } - catch (const DPL::Exception& ex) - { - LogError("Internal Error during Init:"); - return WRT_ERROR_INTERNAL; - } - } - UNHANDLED_EXCEPTION_HANDLER_END - - // OK - return WRT_SUCCESS; - } - - EXPORT_API void wrt_shutdown() - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - try - { - LogInfo("[WRT-API] DEINITIALIZING WRT..."); - - if (wrt_pedantic_count_init_shutdown < 1) { - return; - } - - // Deinitialize Widget Logic - CONTROLLER_POST_SYNC_EVENT( - WidgetController, - WidgetControllerEvents::DeinitializeEvent()); - - // Pedantic deinit check - --wrt_pedantic_count_init_shutdown; - } - catch (const DPL::Exception& ex) - { - LogError("Internal Error during Shutdown:"); - DPL::Exception::DisplayKnownException(ex); - } - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_launch_widget(int widget_handle, - void *obj, - const char *widget_arg, - void *userdata, - WrtLaunchWidgetCallback callback) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - ADD_PROFILING_POINT("wrt_launch", - "start", - "starting Widget Launching"); - LogInfo("[WRT-API] WIDGET LAUNCH: " << widget_handle); - ApiCallbacksTranslate::APIWidgetLaunchStruct* s = - new ApiCallbacksTranslate::APIWidgetLaunchStruct; - - s->callback = callback; - s->userdata = userdata; - - if (widget_arg == NULL) { - widget_arg = ""; - } - - // Post launch event to widget controller - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::LaunchWidgetIdEvent( - widget_handle, - WidgetLaunchStruct( - obj, - &ApiCallbacksTranslate::LaunchWidgetCallback, - s, - widget_arg))); - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_kill_widget(int widget_handle, - void* userdata, - WrtStatusCallback cb) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] WIDGET KILL: " << widget_handle); - - // Post kill event to widget controller - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::KillWidgetIdEvent( - widget_handle, - ApiCallbacksTranslate::CreateOperationStatusStruct(userdata, - cb))); - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API WrtErrStatus wrt_get_widget_list(int *length, - int** list) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] GETTING WIDGETS LIST"); - if (!length || !list) { - return WRT_ERROR_INVALID_PARAMETER; - } - - WidgetHandleList widgetList = WidgetDAO::getHandleList(); - - int *ret = new int[widgetList.size()]; - int i = 0; - - FOREACH(iterator, widgetList) - { - ret[i++] = *iterator; - } - - *list = ret; - *length = widgetList.size(); - - ++wrt_pedantic_count_widget_list; - return WRT_SUCCESS; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_free_widget_list(int *list) - { - if (list) { - delete[] list; - --wrt_pedantic_count_widget_list; - } - } - - EXPORT_API WrtErrStatus wrt_get_widget_by_id(const char *widget_id, - int *widget_handle) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] GETTING WIDGET HANDLE BY ID : " << widget_id); - if (!widget_id) { - return WRT_ERROR_INVALID_PARAMETER; - } - - int len; - bool found = false; - int *list; - - wrt_get_widget_list(&len, &list); - - for (int i = 0; i < len; ++i) { - wrt_widget_info *widget; - WrtErrStatus status; - - status = wrt_get_widget_info(list[i], &widget); - if (status == WRT_SUCCESS) { - if (widget->id != NULL && !strcmp(widget->id, widget_id)) { - *widget_handle = list[i]; - wrt_free_widget_info(widget); - found = true; - break; - } - wrt_free_widget_info(widget); - } - } - - wrt_free_widget_list(list); - - if (!found) { - return WRT_ERROR_ID_NOT_FOUND; - } else { - return WRT_SUCCESS; - } - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API WrtErrStatus wrt_get_widget_name(int widget_handle, - char **name) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] GETTING WIDGET NAME: " << widget_handle); - if (!name) { - return WRT_ERROR_INVALID_PARAMETER; - } - - WidgetModelPtr ret = createWidgetModel(widget_handle); - if (!ret) { - return WRT_ERROR_HANDLE_NOT_FOUND; - } - - DPL::OptionalString n = ret->Name.Get(); - if (!n.IsNull()) { - *name = new_strdup(DPL::ToUTF8String(*n).c_str()); - } else { - *name = NULL; - } - - ++wrt_pedantic_count_widget_name; - return WRT_SUCCESS; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_free_widget_name(char *name) - { - if (name) { - delete[] name; - --wrt_pedantic_count_widget_name; - } - } - - EXPORT_API WrtErrStatus wrt_get_widget_icon(int widget_handle, - wrt_widget_icon **widgetIcon) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] GETTING WIDGET ICON: " << widget_handle); - if (!widgetIcon) { - return WRT_ERROR_INVALID_PARAMETER; - } - - WidgetModelPtr ret = createWidgetModel(widget_handle); - if (!ret) { - return WRT_ERROR_HANDLE_NOT_FOUND; - } - - OptionalWidgetIcon tmpIcon = ret->Icon.Get(); - if (!tmpIcon.IsNull()) { - std::ostringstream sourceFile; - sourceFile << GlobalConfig::GetUserInstalledWidgetPath() << "/"; - sourceFile << ret->PkgName.Get() << "/" << tmpIcon->src; - - wrt_widget_icon* icon = new wrt_widget_icon; - - icon->src = new_strdup(sourceFile.str().c_str()); - - icon->width = !tmpIcon->width ? -1 : *tmpIcon->width; - icon->height = !tmpIcon->height ? -1 : *tmpIcon->height; - - *widgetIcon = icon; - } else { - *widgetIcon = NULL; - } - - ++wrt_pedantic_count_widget_icon; - - return WRT_SUCCESS; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_free_widget_icon(wrt_widget_icon *widgetIcon) - { - if (widgetIcon) { - delete[] widgetIcon->src; - delete widgetIcon; - --wrt_pedantic_count_widget_icon; - } - } - - EXPORT_API WrtErrStatus wrt_check_widget_version(int widget_handle, - const char *widget_version) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] CHECKING WIDGET VERSION: " << widget_handle); - if (!widget_version) { - return WRT_ERROR_INVALID_PARAMETER; - } - - WidgetModelPtr widgetModel = createWidgetModel(widget_handle); - if (!widgetModel) { - return WRT_ERROR_HANDLE_NOT_FOUND; - } - - // Check if version string is available - OptionalWidgetVersion optionalVersion = widgetModel->Version.Get(); - - if (!optionalVersion) { - // If no version string was provided, all versions are newer - return WRT_VERSION_NEW; - } - - WidgetVersion checkedWidgetVersion( - DPL::FromASCIIString(widget_version)); - OptionalWidgetVersion version = widgetModel->Version.Get(); - WidgetVersion installedWidgetVersion = - !!version ? *version : WidgetVersion(); - - // Check if strings are comparable at at all - if (!checkedWidgetVersion.IsWac() || - !installedWidgetVersion.IsWac()) - { - // Cannot compare garbage strings - return WRT_VERSION_NOT_COMPARABLE; - } - - // Now, compare versions - if (checkedWidgetVersion == installedWidgetVersion) { - return WRT_VERSION_EXACT; - } else if (checkedWidgetVersion > installedWidgetVersion) { - return WRT_VERSION_NEW; - } else { - return WRT_VERSION_OLD; - } - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API WrtErrStatus wrt_get_widget_info(int widget_handle, - wrt_widget_info **widget_info) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] GETTING WIDGET INFO: " << widget_handle); - if (!widget_info) { - return WRT_ERROR_INVALID_PARAMETER; - } - - WidgetModelPtr widgetModel = createWidgetModel(widget_handle); - if (!widgetModel) { - return WRT_ERROR_HANDLE_NOT_FOUND; - } - - wrt_widget_info *info = new wrt_widget_info; - - memset(info, 0, sizeof (*info)); - - OptionalWidgetIcon icon = widgetModel->Icon.Get(); - if (!icon.IsNull()) { - info->icon_path = new_strdup( - DPL::ToUTF8String(icon->src).c_str()); - } - DPL::OptionalString n = widgetModel->Name.Get(); - if (!n.IsNull()) { - info->name = new_strdup(DPL::ToUTF8String(*n).c_str()); - } - - DPL::OptionalString GUID = widgetModel->GUID.Get(); - if (!!GUID) { - info->id = new_strdup(DPL::ToUTF8String(*GUID).c_str()); - } - - std::string installedWidgetVersionString; - - if (!widgetModel->Version.Get()) { - installedWidgetVersionString = ""; - } else { - installedWidgetVersionString = DPL::ToUTF8String( - widgetModel->Version.Get()->Raw()); - } - - info->version = new_strdup(installedWidgetVersionString.c_str()); - - info->pkg_name = new_strdup( - DPL::ToUTF8String(widgetModel->PkgName.Get()).c_str()); - - WidgetStorageSize widgetStorage = - widgetModel->ApplicationStorage.Get(); - info->application_size = widgetStorage.applicationStorage; - info->data_size = widgetStorage.dataStorage; - - *widget_info = info; - ++wrt_pedantic_count_widget_info; // Increase usage count - - return WRT_SUCCESS; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_free_widget_info(wrt_widget_info* widget_info) - { - if (widget_info) { - delete[] widget_info->icon_path; - delete[] widget_info->id; - delete[] widget_info->name; - delete[] widget_info->version; - delete[] widget_info->pkg_name; - delete widget_info; - --wrt_pedantic_count_widget_info; - } - } - - EXPORT_API void wrt_suspend_widget(int widget_handle, - void* userdata, - WrtStatusCallback cb) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] SUSPEND"); - - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::SuspendWidgetEvent( - widget_handle, - ApiCallbacksTranslate::CreateOperationStatusStruct(userdata, - cb))); - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_resume_widget(int widget_handle, - void* userdata, - WrtStatusCallback cb) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] RESUME"); - - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::ResumeWidgetEvent( - widget_handle, - ApiCallbacksTranslate::CreateOperationStatusStruct(userdata, - cb))); - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_reset_widget(int widget_handle, - const char *bundleData) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] wrt_reset_widget"); - - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::ResetWidgetEvent( - widget_handle, - std::string(bundleData))); - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API int wrt_set_developer_mode( - int mode, - wrt_set_developer_mode_callback callback, - void* userParam) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] SET DEVELOPER MODE: "); - - GlobalLogicSingleton::Instance(). - GetGlobalModel()->DeveloperMode.Set(mode); - - //response - typedef GenericUserCallbackCall1 SetDeveloperModeCallback; - POST_USER_CALLBACK( - new SetDeveloperModeCallback(callback, userParam)); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API int wrt_set_compliance_mode( - int mode, - wrt_set_compliance_mode_callback callback, - void* userParam) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] SET COMPLIANCE MODE: "); - - GlobalLogicSingleton::Instance(). - GetGlobalModel()->ComplianceMode.Set(mode); - - //response - typedef GenericUserCallbackCall1 SetComplianceModeCallback; - POST_USER_CALLBACK( - new SetComplianceModeCallback(callback, userParam)); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - - EXPORT_API int wrt_set_compliance_fake_imei( - const char *imei, - wrt_set_compliance_fake_imei_callback callback, - void *userParam) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] SET COMPLIANCE IMEI: "); - - GlobalLogicSingleton::Instance(). - GetGlobalModel()->ComplianceFakeImei.Set(imei); - - //response - typedef GenericUserCallbackCall1< - wrt_set_compliance_fake_imei_callback, - void *> SetComplianceFakeImeiCallback; - POST_USER_CALLBACK( - new SetComplianceFakeImeiCallback(callback, userParam)); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - - EXPORT_API int wrt_set_compliance_fake_meid( - const char *meid, - wrt_set_compliance_fake_meid_callback callback, - void *userParam) - { - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogInfo("[WRT-API] SET COMPLIANCE MEID: "); - - GlobalLogicSingleton::Instance(). - GetGlobalModel()->ComplianceFakeMeid.Set(meid); - - //response - typedef GenericUserCallbackCall1< - wrt_set_compliance_fake_meid_callback, - void *> SetComplianceFakeMeidCallback; - POST_USER_CALLBACK( - new SetComplianceFakeMeidCallback(callback, userParam)); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END - } - - EXPORT_API void wrt_force_stop(int widget_handle) - { - Utils::killWidget(widget_handle); - } - -#ifdef __cplusplus -} -#endif diff --git a/src/API/wrt_api.h b/src/API/wrt_api.h deleted file mode 100644 index f20aa86..0000000 --- a/src/API/wrt_api.h +++ /dev/null @@ -1,721 +0,0 @@ -/* - * wrt-engine - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_api.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains declarations of wrt api - */ - -/* - * @defgroup wrt_engine_group WebRunTime engine Library - * @ingroup internet_FW - * Functions to APIs to access wrt-engine - */ - -#ifndef WRT_API_H_ -#define WRT_API_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define WRT_DEPRECATED __attribute__((deprecated)) - -/** - * Callback function type invoked after async init function - */ -typedef void (*WrtInitCallback)(WrtErrStatus status, - void *data); - -/** - * Callback function type invoked after launching widget - */ -typedef void (*WrtLaunchWidgetCallback)(void *widget_canvas, - int widget_handle, - WrtErrStatus status, - const char *errorMsg, - void *data); - -/** - * Callback function type invoked after async functions - */ -typedef void (*WrtStatusCallback)(int widget_handle, - WrtErrStatus status, - void *data); - -/** - * Callback function type invoked when widget needs to be resized - */ -typedef void (*WrtWidgetResizeCallback)(int widget_handle, int width, - int height, void *userdata); - -/** - * Callback function type invoked when installed widgets list - * has been changed - */ -typedef void (*WrtUpdateNeededCallback)(void *userdata); - -/** - * Callback function type invoked when wrt ask for dialog window - * to be shown. - */ -typedef void (*WrtQuestionShowCallback)(void *question_data, void *userdata); - -/** - * Callback argument for response of combobox callback - */ -typedef void (*WrtComboboxResponseCallback)(int selected_index, void* userdata); -/** - * Callback function type invoked when wrt asks for showing combobox - * to be shown. - */ -typedef void (*WrtComboboxCallback)(int length, - char** combobox_options, - void* resposne_data, - WrtComboboxResponseCallback callback, - void *userdata); -/** - * Callback function type invoked when wrt ask for widget close - */ -typedef void (*WrtCloseWidgetCallback)(int widget_handle, void *userdata); - -/** - * Callback function type invoked when developer mode is set - */ -typedef void (*wrt_set_developer_mode_callback)(void *userParam); - -/** - * Callback function type invoked when compliance mode is set - */ -typedef void (*wrt_set_compliance_mode_callback)(void *userParam); - -/** - * Callback function type invoked when compliance fake imei is set - */ -typedef void (*wrt_set_compliance_fake_imei_callback)(void *userParam); - -/** - * Callback function type invoked when compliance fake meid is set - */ -typedef void (*wrt_set_compliance_fake_meid_callback)(void *userParam); - -/** - * Callbacks used by wrt - */ -typedef struct _WrtCallbacks -{ - WrtWidgetResizeCallback resize_cb; /**< widget resize callback */ - WrtUpdateNeededCallback update_cb; /**< widget update callback */ - WrtComboboxCallback combobox_cb; /**< widget combobox callback */ - WrtCloseWidgetCallback close_cb; /**< close widget callback */ -} WrtCallbacks; - -static const WrtCallbacks WRT_CALLBACKS_INIT = { - 0, - 0, - 0, - 0 -}; - -/** - * @fn int wrt_init(void *userdata, WrtInitCallback callback) - * @brief Initializes WRT - * - * This method is used to initialize wrt-engine. - * It connects to database, initializes webkit, widget and plugin logic. - * - * @param [in] userdata - User parameters to be passed to the callback - * @param [in] callback - The callback function that is launched, after wrt initialization. - * The callback is called in the context of the application's - * main loop. - * - * @return 0 on success, -1 on failure - * - * Sample code: - * @code - * int main (int argc, char *argv[]) - * { - * init_loop(argc, argv); - * printf("Initializing WRT"); - * wrt_init(NULL, &init_cb); - * - * wait_for_wrt_init(); - * printf("Starting tests"); - * - * int status = DPL_TestRunnerSingleton_Instance().ExecTestRunner(argc, argv); - * - * wrt_shutdown(); - * quit_loop(); - * return status; - * } - * @endcode - * - * @see wrt_shutdown - */ -int wrt_init(void *userdata, - WrtInitCallback callback); - -/** - * @fn void wrt_shutdown(void) - * @brief Deinitializes WRT - * - * This method is used to deinitialize wrt-engine. - * It deinitializes widget logic, plugin logic, shuts down connection to database, - * switchs back to single thread and does deinit checks. - * - * @return nothing - * - * Sample code: - * @code - * int main (int argc, char *argv[]) - * { - * init_loop(argc, argv); - * printf("Initializing WRT"); - * wrt_init(NULL, &init_cb); - * - * wait_for_wrt_init(); - * printf("Starting tests"); - * - * int status = DPL_TestRunnerSingleton_Instance().ExecTestRunner(argc, argv); - * - * wrt_shutdown(); - * quit_loop(); - * return status; - * } - * @endcode - * - * @see wrt_init - */ -void wrt_shutdown(void); - -/** - * @fn void wrt_launch_widget(int widget_handle, void *obj, void *userdata, const char *widget_arg, - * WrtLaunchWidgetCallback callback) - * @brief Launches widget application - * - * This method is used to launch a widget application. - * - * @param [in] widget_handle - widget id - * @param [in] obj - widget container in which widget will be painted - * @param [in] widget_arg - widget "input" argument - * @param [in] userdata - user parameters to be passed to the callback - * @param [in] callback - Callback function that is launched, after creating widget by wrt - * The callback is called in the context of the application's - * - * @return nothing (status returned in callback) - * - * @see wrt_kill_widget - */ -void wrt_launch_widget(int widget_handle, - void *obj, - const char *widget_arg, - void *userdata, - WrtLaunchWidgetCallback callback); - -/** - * @fn void wrt_kill_widget(int widget_handle, void* userdata, WrtStatusCallback cb) - * @brief Kills widget application - * - * This method is used to kill a widget application. - * - * @param [in] widget_handle - widget id - * @param [in] userdata - user parameters to be passed to the callback - * @param [in] cb - Call to this one will be done and the end of operation - * The callback is called in the context of the application's - * - * @return nothing (status returned in callback) - * - * @see wrt_launch_widget - */ -void wrt_kill_widget(int widget_handle, - void* userdata, - WrtStatusCallback cb); - -/** - * @fn WrtErrStatus wrt_get_widget_list(int *length, int** list) - * @brief Gets list of widgets - * - * This method is used to get list of installed widget. - * - * @param [out] length - length of list (should be allocated before calling function) - * @param [out] list - list of widget's id (*list should be allocated before calling function) - * - * @return Error status - * @retval WRT_SUCCESS - recieved list of widgets - * @retval WRT_ERROR_INVALID_PARAMETER - at least one of the parameters is invalid - * @retval WRT_ERROR_NOT_INITIALIZED - wrt engine is not initialized - * - * Sample code: - * @code - * void list_all_widgets() { - * - * int widgetCount; - * int *widgetApIdList; - * wrt_get_widget_list( &widgetCount, &widgetApIdList ); - * for (int i = 0; i < widgetCount; i++) { - * - * int appId = widgetApIdList[i]; - * - * char *widgetName; - * wrt_get_widget_name(appId, &widgetName); - * - * printf( "Widget appId: %d , name: %s",appId,widgetName ); - * wrt_free_widget_name(widgetName); - * } - * wrt_free_widget_list(widgetApIdList); - * } - * @endcode - * - * @see wrt_free_widget_list - */ -WrtErrStatus wrt_get_widget_list(int *length, - int** list); - -/** - * @fn void wrt_free_widget_list(int *list) - * @brief Frees widget list - * - * This method is used to free list got from wrt_get_widget_list - * - * @param [in] list - list of WidgetHandles to free - * - * @return nothing - * - * Sample code: - * @code - * void list_all_widgets() { - * - * int widgetCount; - * int *widgetApIdList; - * wrt_get_widget_list( &widgetCount, &widgetApIdList ); - * for (int i = 0; i < widgetCount; i++) { - * - * int appId = widgetApIdList[i]; - * - * char *widgetName; - * wrt_get_widget_name(appId, &widgetName); - * - * printf( "Widget appId: %d , name: %s",appId,widgetName ); - * wrt_free_widget_name(widgetName); - * } - * wrt_free_widget_list(widgetApIdList); - * } - * @endcode - * - * @see wrt_get_widget_list - */ -void wrt_free_widget_list(int *list); - -/** - * @fn WrtErrStatus wrt_get_widget_by_id(const char *widget_id, int *widget_handle) - * @brief Gets widget handle by widget id in config.xml - * - * This method is used to get widget's handle by widget id. - * - * @param [in] widget_id - widget id - * @param [out] widget_handle - widget handle of installed widget - * - * @return Error status - * @retval WRT_SUCCESS - widget id is found - * @retval WRT_ERROR_ID_NOT_FOUND - widget id is not found - * @retval WRT_ERROR_INVALID_PARAMETER - name parameter is invalid - * @retval WRT_ERROR_NOT_INITIALIZED - wrt engine is not initialized - * - * Sample code: - * @code - * void print_widget_handle(const char *id) { - * // id should be URI format like 'http://www.wacapps.net/..' - * WrtErrStatus status = wrt_get_widget_by_id(id, &handle); - * if(status == WRT_SUCCESS) - * { - * LOG(LOG_WARN, LOG_NAME, "id : %s, handle : %d", id, handle); - * }else{ - * LOG(LOG_WARN, LOG_NAME, "FAIL to get widget handle"); - * } - * } - * @endcode - * - */ -WrtErrStatus wrt_get_widget_by_id(const char *widget_id, - int *widget_handle); - -/** - * @fn WrtErrStatus wrt_get_widget_name(int widget_handle, char **name) - * @brief Gets widget name - * - * This method is used to get widget's name. - * - * @param [in] widget_handle - widget id - * @param [out] name - widget name (*name should be allocated before calling function) - * - * @return Error status - * @retval WRT_SUCCESS - recieved widget's name - * @retval WRT_ERROR_HANDLE_NOT_FOUND - widget handle was not found - * @retval WRT_ERROR_INVALID_PARAMETER - name parameter is invalid - * @retval WRT_ERROR_NOT_INITIALIZED - wrt engine is not initialized - * - * Sample code: - * @code - * void list_all_widgets() { - * - * int widgetCount; - * int *widgetApIdList; - * wrt_get_widget_list( &widgetCount, &widgetApIdList ); - * for (int i = 0; i < widgetCount; i++) { - * - * int appId = widgetApIdList[i]; - * - * char *widgetName; - * wrt_get_widget_name(appId, &widgetName); - * - * printf( "Widget appId: %d , name: %s",appId,widgetName ); - * wrt_free_widget_name(widgetName); - * } - * wrt_free_widget_list(widgetApIdList); - * } - * @endcode - * - * @see wrt_free_widget_name - */ -WrtErrStatus wrt_get_widget_name(int widget_handle, - char **name); - -/** - * @fn void wrt_free_widget_name(char *name) - * @brief Frees widget name resource - * - * This method is used to free widget name got from wrt_get_widget_name - * - * @param [in] name - widget name to free - * - * @return nothing - * - * Sample code: - * @code - * void list_all_widgets() { - * - * int widgetCount; - * int *widgetApIdList; - * wrt_get_widget_list( &widgetCount, &widgetApIdList ); - * for (int i = 0; i < widgetCount; i++) { - * - * int appId = widgetApIdList[i]; - * - * char *widgetName; - * wrt_get_widget_name(appId, &widgetName); - * - * printf( "Widget appId: %d , name: %s",appId,widgetName ); - * wrt_free_widget_name(widgetName); - * } - * wrt_free_widget_list(widgetApIdList); - * } - * @endcode - * - * @see wrt_get_widget_name - */ -void wrt_free_widget_name(char *name); - -/** - * @fn WrtErrStatus wrt_get_widget_icon(int widget_handle, wrt_widget_icon **icon) - * @brief Gets widget icon data - * - * This method is used to get widget's icon data. - * Structure wrt_widget_icon contains valid path to widget's icon and its width / height in pixels. - * - * @param [in] widget_handle - widget id - * @param [out] icon - widget's icon data (*icon should be allocated - * before calling function) - * - * @return Error status - * @retval WRT_SUCCESS - success - * @retval WRT_ERROR_HANDLE_NOT_FOUND - widget handle was not found - * @retval WRT_ERROR_INVALID_PARAMETER - icon parameter is invalid - * @retval WRT_ERROR_NOT_INITIALIZED - wrt engine is not initialized - * - * Sample code: - * @code - * void list_all_icons_paths() { - * int length; - * int *list; - * wrt_get_widget_list(&length,&list); - * for(int i=0;i -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -EXPORT_API int wrt_config_get_vendor(wrt_config_vendor_t *out_vendor) -{ - *out_vendor = vconf_get_str(VCONFKEY_WEBRUNTIME_VENDOR_STR); - return 0; -} - -EXPORT_API int wrt_config_free_vendor(wrt_config_vendor_t *out_vendor) -{ - free(const_cast(*out_vendor)); - *out_vendor = NULL; - return 0; -} - -EXPORT_API int wrt_config_get_name(wrt_config_name_t *out_name) -{ - *out_name = vconf_get_str(VCONFKEY_WEBRUNTIME_NAME_STR); - return 0; -} - -EXPORT_API int wrt_config_free_name(wrt_config_name_t *out_name) -{ - free(const_cast(*out_name)); - *out_name = NULL; - return 0; -} - -EXPORT_API int wrt_config_get_version(wrt_config_version_t *out_version) -{ - *out_version = vconf_get_str(VCONFKEY_WEBRUNTIME_VERSION_STR); - return 0; -} - -EXPORT_API int wrt_config_free_version(wrt_config_version_t *out_version) -{ - free(const_cast(*out_version)); - *out_version = NULL; - return 0; -} - -EXPORT_API int wrt_config_get_api(wrt_config_api_t *out_api) -{ - *out_api = vconf_get_str(VCONFKEY_WEBRUNTIME_API_STR); - return 0; -} - -EXPORT_API int wrt_config_free_api(wrt_config_api_t *out_api) -{ - free(const_cast(*out_api)); - *out_api = NULL; - return 0; -} - -#ifdef __cplusplus -} -#endif diff --git a/src/API/wrt_config.h b/src/API/wrt_config.h deleted file mode 100644 index c14566b..0000000 --- a/src/API/wrt_config.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_config.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains declarations of wrt config - */ -#ifndef WRT_CONFIG_H -#define WRT_CONFIG_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef const char *wrt_config_vendor_t; - -int wrt_config_get_vendor(wrt_config_vendor_t *out_vendor); -int wrt_config_free_vendor(wrt_config_vendor_t *out_vendor); - -typedef const char *wrt_config_name_t; - -int wrt_config_get_name(wrt_config_name_t *out_name); -int wrt_config_free_name(wrt_config_name_t *out_name); - -typedef const char *wrt_config_version_t; - -int wrt_config_get_version(wrt_config_version_t *out_version); -int wrt_config_free_version(wrt_config_version_t *out_version); - -typedef const char *wrt_config_api_t; - -int wrt_config_get_api(wrt_config_api_t *out_api); -int wrt_config_free_api(wrt_config_api_t *out_api); - -/** - * VConf access keys - */ -#define VCONFKEY_WEBRUNTIME_PREFIX "db/webruntime" - -#define VCONFKEY_WEBRUNTIME_VENDOR_STR VCONFKEY_WEBRUNTIME_PREFIX "/vendor" -#define VCONFKEY_WEBRUNTIME_NAME_STR VCONFKEY_WEBRUNTIME_PREFIX "/name" -#define VCONFKEY_WEBRUNTIME_VERSION_STR VCONFKEY_WEBRUNTIME_PREFIX "/version" -#define VCONFKEY_WEBRUNTIME_API_STR VCONFKEY_WEBRUNTIME_PREFIX "/api" - -#ifdef __cplusplus -} -#endif - -#endif /* WRT_CONFIG_H */ diff --git a/src/API/wrt_type.h b/src/API/wrt_type.h deleted file mode 100755 index ac1a528..0000000 --- a/src/API/wrt_type.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_type.h - * @author jihoon Chung (jihoon.Chung@samsung.com) - * @version 1.0 - * @brief This file contains declarations of wrt api - */ - -/* - * @defgroup wrt_engine_group WebRunTime engine Library - * @ingroup internet_FW - * Functions to APIs to access wrt-engine - */ - -#ifndef WRT_TYPE_H_ -#define WRT_TYPE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define WRT_DEPRECATED __attribute__((deprecated)) - -typedef enum -{ - /* Generic success */ - WRT_SUCCESS = 0, /*< Success*/ - WRT_ALREADY_INIT, /*< Wrt already initialized*/ - WRT_UPDATE_NEED, /*< Widget data has been updated*/ - WRT_SHUTDOWN, /*InstallAllPlugins(); - * - * if (This->m_argc == 2) - * wrt_install_widget(This->m_argv[1], This, InstallCallback); - * } - * else if(wrt_has_failed(status)) - * printf("[LAUNCH-WIDGET] INITIALIZATION HAS FAILED"); - * } - * @endcode - * - * @see wrt_has_failed - */ -inline bool wrt_has_succeded(WrtErrStatus err) -{ - return (err >= 0); -} - -/** - * @fn inline bool wrt_has_failed(WrtErrStatus err) - * @brief Checks whether call failed - * - * This function checks whether call failed. - * If call failed it returns TRUE. - * - * @param [in] err WrtErrStatus to check - * - * @return Result of the test - * @retval TRUE - the call failed - * @retval FALSE - the call was successful - * - * Sample code: - * @code - * static void InitCallback(WrtErrStatus status, void *data) - * { - * MyApplication *This = (MyApplication *)(data); - * - * printf("[LAUNCH-WIDGET] init callback"); - * - * if (wrt_has_succeded(status) && status!=WRT_UPDATE_NEED) - * { - * This->InstallAllPlugins(); - * - * if (This->m_argc == 2) - * wrt_install_widget(This->m_argv[1], This, InstallCallback); - * } - * else if(wrt_has_failed(status)) - * printf("[LAUNCH-WIDGET] INITIALIZATION HAS FAILED"); - * } - * @endcode - * - * @see wrt_has_succeded - */ -inline bool wrt_has_failed(WrtErrStatus err) -{ - return (err < 0); -} - -#ifdef __cplusplus -} -#endif - -#endif /* WRT_TYPE_H_ */ diff --git a/src/access-control/CMakeLists.txt b/src/access-control/CMakeLists.txt deleted file mode 100644 index d779ac0..0000000 --- a/src/access-control/CMakeLists.txt +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Path for all tests binary files - -SET(ACE_TEST_PATH "/usr/apps/org.tizen.policy") - -INSTALL(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/configuration/config.xml - ${CMAKE_CURRENT_SOURCE_DIR}/configuration/config.dtd - ${CMAKE_CURRENT_SOURCE_DIR}/configuration/bondixml.xsd - ${CMAKE_CURRENT_SOURCE_DIR}/configuration/demo.xml - ${CMAKE_CURRENT_SOURCE_DIR}/configuration/WACPolicy.xml - ${CMAKE_CURRENT_SOURCE_DIR}/configuration/UnrestrictedPolicy.xml - DESTINATION /usr/etc/ace - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE) - -SET(ACE_LIB_DEPS_BASIC - dpl-efl - dpl-event-efl - libxml-2.0 -) - -IF(SMACK_ENABLED) - LIST(APPEND ACE_LIB_DEPS_BASIC libprivilege-control) -ENDIF(SMACK_ENABLED) - -PKG_CHECK_MODULES(ACE_LIB_DEPS ${ACE_LIB_DEPS_BASIC} REQUIRED) - -SET(ACE_SOURCES - ${WRT_ACE_DIR}/security_controller.cpp - ${WRT_ACE_DIR}/security_logic.cpp - ${WRT_ACE_DIR}/engine/AceUpdateEventMessages.cpp - ${WRT_ACE_DIR}/engine/PolicyEvaluator.cpp - ${WRT_ACE_DIR}/engine/PolicyInformationPoint.cpp - ${WRT_ACE_DIR}/engine/logic/CombinerImpl.cpp - ${WRT_ACE_DIR}/engine/xml/parser.cpp - ${WRT_ACE_DIR}/logic/attribute_facade.cpp - ${WRT_ACE_DIR}/logic/PolicyEnforcementPoint.cpp - ${WRT_ACE_DIR}/logic/session_manager.cpp - ${WRT_ACE_DIR}/logic/SettingsLogic.cpp - ${WRT_ACE_DIR}/common/Attribute.cpp - ${WRT_ACE_DIR}/common/Condition.cpp - ${WRT_ACE_DIR}/common/NodeFactory.cpp - ${WRT_ACE_DIR}/common/Policy.cpp - ${WRT_ACE_DIR}/common/Rule.cpp - ${WRT_ACE_DIR}/common/Serializer.cpp - ${WRT_ACE_DIR}/common/Subject.cpp - ${WRT_ACE_DIR}/common/TreeNode.cpp - ${WRT_ACE_DIR}/common/simple_roaming_agent.cpp - ${WRT_ACE_DIR}/common/UserDecisionTestStub.cpp - ${WRT_ACE_DIR}/common/ConfigurationManager.cpp - ${WRT_ACE_DIR}/ace_settings_logic.cpp -) - -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/common) -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/localization) -# -# Ace settings server -# -SET(WITH_ACE_SETTINGS_SERVER_IPC_SOURCES - ${WRT_ACE_DIR}/server/ipc/oim_generator.cpp - ${WRT_ACE_DIR}/server/ipc/ace_settings_server_ipc.cpp - ${WRT_ACE_DIR}/server/ipc/ace_settings_server_factory_ipc.cpp -) - -SET(WITH_ACE_SETTINGS_SERVER_NONE_SOURCES - ${WRT_ACE_DIR}/server/null/ace_settings_server_factory_null.cpp -) - -SET(WITH_ACE_SETTINGS_SERVER_SOURCES - ${WITH_ACE_SETTINGS_SERVER_NONE_SOURCES} - ) - -ADD_LIBRARY(${TARGET_ACE_LIB} SHARED - ${ACE_SOURCES} - ${WITH_ACE_SETTINGS_SERVER_SOURCES} -) - -SET_TARGET_PROPERTIES(${TARGET_ACE_LIB} PROPERTIES - SOVERSION ${PROJECT_VERSION}) - -SET_TARGET_PROPERTIES(${TARGET_ACE_LIB} PROPERTIES - COMPILE_FLAGS -fPIC) -SET_TARGET_PROPERTIES(${TARGET_ACE_LIB} PROPERTIES - COMPILE_FLAGS "-include profiling_util.h") - -TARGET_LINK_LIBRARIES(${TARGET_ACE_LIB} - ${TARGET_WRT_DAO_RW_LIB} #For now WRT has to be RW - Global dao write is needed - ${TARGET_ACE_DAO_RW_LIB} - ${TARGET_PROFILING_LIB} - ${ACE_LIB_DEPS_LIBRARIES} -) - -INSTALL(TARGETS ${TARGET_ACE_LIB} - DESTINATION lib - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE -) diff --git a/src/access-control/DEPRECATED/AceUpdateEventMessages.cpp b/src/access-control/DEPRECATED/AceUpdateEventMessages.cpp deleted file mode 100644 index 392845e..0000000 --- a/src/access-control/DEPRECATED/AceUpdateEventMessages.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include "AceUpdateEventMessages.h" - -EVENT_DELIVERY_IMPLEMENT_EVENT_MESSAGE(AceUpdateRequestEvent) -EVENT_DELIVERY_IMPLEMENT_EVENT_MESSAGE(AceUpdateResponseEvent) - diff --git a/src/access-control/DEPRECATED/AceUpdateEventMessages.h b/src/access-control/DEPRECATED/AceUpdateEventMessages.h deleted file mode 100644 index 77c7853..0000000 --- a/src/access-control/DEPRECATED/AceUpdateEventMessages.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef ACE_UPDATE_EVENT_MESSAGES_H -#define ACE_UPDATE_EVENT_MESSAGES_H - -#include -#include - -typedef int ResponseParameter; - -EVENT_DELIVERY_DECLARE_EVENT_MESSAGE_1(AceUpdateRequestEvent, std::string) -EVENT_DELIVERY_DECLARE_EVENT_MESSAGE_1(AceUpdateResponseEvent, - ResponseParameter) - -#endif // ACE_UPDATE_EVENT_MESSAGES_H diff --git a/src/access-control/DEPRECATED/session_manager.cpp b/src/access-control/DEPRECATED/session_manager.cpp deleted file mode 100644 index 5ddfd19..0000000 --- a/src/access-control/DEPRECATED/session_manager.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This class simply redirects the access requests to access control engine. - * The aim is to hide access control engine specific details from WRT modules. - * It also implements WRT_INTERFACE.h interfaces, so that ACE could access - * WRT specific and other information during the decision making. - * - * @file session_manager.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Header file for session management like starting/invalidating - */ - -#include -#include - -#include - -static const int SESSION_ID_LENGTH = 32; - -using namespace WrtDB; - -class SessionManager::Impl -{ - public: - std::map sessionIdWidgetIdMap; - std::map widgetHandleSessionIdMap; - - Impl() { - srandom(static_cast(time(0))); - } - - SessionId generate() - { - SessionId session_id = ""; - do { - session_id = ""; - for (int i = 0; i < SESSION_ID_LENGTH; i++) { - int c = random() % 16; - session_id.append(1, c < 10 ? static_cast('0' + c) - : static_cast('A' + c - 10)); - } - } - while (sessionIdWidgetIdMap.find(session_id) != - sessionIdWidgetIdMap.end()); - LogDebug("Generated session_id " << session_id); - return session_id; - } - - SessionId startNewSession (WidgetHandle widget_id) - { - SessionId session_id = generate(); - invalidateSession(widget_id); // in this order it is impossible to genreate the same session_id :) - - sessionIdWidgetIdMap[session_id] = widget_id; - widgetHandleSessionIdMap[widget_id] = session_id; - - return session_id; - } - - SessionId getSessionId (WidgetHandle widget_id) - { - if (widgetHandleSessionIdMap.find(widget_id) != - widgetHandleSessionIdMap.end()) { - return widgetHandleSessionIdMap[widget_id]; - } else { - return std::string(""); - } - } - - void invalidateSession (WidgetHandle widget_id) - { - if (widgetHandleSessionIdMap.find(widget_id) != - widgetHandleSessionIdMap.end()) { - SessionId session_id = widgetHandleSessionIdMap[widget_id]; - sessionIdWidgetIdMap.erase(session_id); - widgetHandleSessionIdMap.erase(widget_id); - } - } - - void invalidateSession (SessionId session_id) - { - if (sessionIdWidgetIdMap.find(session_id) != - sessionIdWidgetIdMap.end()) { - WidgetHandle widget_id = sessionIdWidgetIdMap[session_id]; - sessionIdWidgetIdMap.erase(session_id); - widgetHandleSessionIdMap.erase(widget_id); - } - } -}; - -SessionManager::SessionManager() -{ - impl = new SessionManager::Impl; -} - -SessionManager::~SessionManager() -{ - delete impl; -} - -SessionId SessionManager::startNewSession (WidgetHandle widget_id) -{ - LogDebug("startNewSession for widget_id " << widget_id); - return impl->startNewSession(widget_id); -} - -SessionId SessionManager::startNewSession (WidgetModel *model) -{ - LogDebug("startNewSession for widget_id " << model->Handle.Get()); - return impl->startNewSession(model->Handle.Get()); -} - -SessionId SessionManager::getSessionId (WidgetHandle widget_id) -{ - LogDebug( - "GetSession for widget_id " << widget_id << " : " << - impl->getSessionId(widget_id)); - return impl->getSessionId(widget_id); -} - -SessionId SessionManager::getSessionId (WidgetModel *model) -{ - LogDebug("GetSession for widget_id " << model->Handle.Get() << " : " << - impl->getSessionId(model->Handle.Get())); - return impl->getSessionId(model->Handle.Get()); -} - -void SessionManager::invalidateSession (WidgetHandle widget_id) -{ - LogDebug("Invalidating by widget_id " << widget_id); - impl->invalidateSession(widget_id); -} - -void SessionManager::invalidateSession (WidgetModel *model) -{ - LogDebug("Invalidating by widget_id " << model->Handle.Get()); - impl->invalidateSession(model->Handle.Get()); -} - -void SessionManager::invalidateSession (SessionId session_id) -{ - LogDebug("Invalidating by session_id " << session_id); - impl->invalidateSession(session_id); -} - diff --git a/src/access-control/DEPRECATED/session_manager.h b/src/access-control/DEPRECATED/session_manager.h deleted file mode 100644 index 293aa31..0000000 --- a/src/access-control/DEPRECATED/session_manager.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This class simply redirects the access requests to access control engine. - * The aim is to hide access control engine specific details from WRT modules. - * It also implements WRT_INTERFACE.h interfaces, so that ACE could access - * WRT specific and other information during the decision making. - * - * @file session_manager.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Header file for session management like starting/invalidating - */ - -#ifndef SESSION_MANAGER_H -#define SESSION_MANAGER_H - -#include -#include -#include - -#include - -typedef std::string SessionId; - -class SessionManager : private DPL::Noncopyable -{ - public: - - SessionId startNewSession (WidgetHandle widget_id); - SessionId startNewSession (WidgetModel *model); - - SessionId getSessionId (WidgetHandle widget_id); - SessionId getSessionId (WidgetModel *model); - - void invalidateSession (WidgetHandle widget_id); - void invalidateSession (WidgetModel *model); - void invalidateSession (SessionId session_id); - - ~SessionManager(); - SessionManager(); - private: - class Impl; - Impl *impl; -}; -#endif //SESSION_MANAGER_H - diff --git a/src/access-control/DESCRIPTION b/src/access-control/DESCRIPTION deleted file mode 100644 index aac5ef6..0000000 --- a/src/access-control/DESCRIPTION +++ /dev/null @@ -1,2 +0,0 @@ -!!!options!!! stop -ACE - Access Control Engine - security module for Device APIs diff --git a/src/access-control/ace_settings_logic.cpp b/src/access-control/ace_settings_logic.cpp deleted file mode 100644 index d980f02..0000000 --- a/src/access-control/ace_settings_logic.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_logic.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is an implementation of server of ACE user preferences - */ -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -using namespace WrtDB; - -namespace // anonymous -{ -struct SubjectResource -{ - WidgetHandle subject; // app_id - std::string resource; - - SubjectResource(WidgetHandle subjectArg, - const std::string& resourceArg) : - subject(subjectArg), - resource(resourceArg) - { - } - - bool operator < (const SubjectResource& subjectResource) const - { - if (subject != subjectResource.subject) { - return subject < subjectResource.subject; - } else { - return resource < subjectResource.resource; - } - } -}; - -typedef std::map WidgetResourcePreferenceMap; -} // namespace anonymous - -AceSettingsLogic::AceSettingsLogic( - PolicyEnforcementPoint *policyEnforcementPoint) : - m_policyEnforcementPoint(policyEnforcementPoint) -{ - // Acquire ACE settings server from factory - m_server = AceSettingsServerFactory::Create(this); -} - -AceSettings::WidgetsPreferences AceSettingsLogic::getWidgetsPreferences() const -{ - AceSettings::WidgetsPreferences widgetsPreferences; - WidgetHandleList widgetHandleList = WidgetDAOReadOnly::getHandleList(); - - DPL::ScopedPtr preferenceMap; - - PermissionList permissionTriple; - SettingsLogic::getWidgetDevCapSettings(&permissionTriple); - - preferenceMap.Reset(new WidgetResourcePreferenceMap()); - - FOREACH(permission, permissionTriple) - { - LogInfo("In db: " << permission->appId << - " " << permission->devCap); - SubjectResource sb(permission->appId, - permission->devCap); - preferenceMap->insert(std::make_pair(sb, permission->access)); - } - - LogInfo("Sending Widget Resources"); - - FOREACH(handle, widgetHandleList) - { - AceSettings::SubjectResourcePreferences subjectResourcePreferences; - WidgetDAOReadOnly widget(*handle); - - //This has to be redesigned how to gather localized name of widget -// auto lang = widget.getDefaultlocale(); -// if (!lang) lang = DPL::FromASCIIString("en"); -// WidgetLocalizedInfo info = -// widget.getLocalizedInfo(*lang); -// -// DPL::Optional optionalName = info.name; -// -// if (!!optionalName) { -// LogDebug("optional name: " << (*optionalName)); -// subjectResourcePreferences.subject = -// DPL::ToUTF8String(*optionalName); -// } else { -// subjectResourcePreferences.subject = ""; -// } - - WidgetFeatureSet featureSet = widget.getFeaturesList(); - SubjectResource subjectResource(*handle, ""); - - DeviceCapabilitySet deviceCaps; - - FOREACH(feature, featureSet) - { - DeviceCapabilitySet thisFeatureDeviceCaps = - GlobalDAO::GetDeviceCapability(feature->name); - deviceCaps.insert(thisFeatureDeviceCaps.begin(), - thisFeatureDeviceCaps.end()); - } - - FOREACH(deviceCap, deviceCaps) - { - AceSettings::ResourcePreference resourcePreferences; - resourcePreferences.resource = DPL::ToUTF8String(*deviceCap); - - subjectResource.resource = resourcePreferences.resource; - LogInfo("Looking for: " << subjectResource.subject << - " " << subjectResource.resource); - - if (preferenceMap) { - WidgetResourcePreferenceMap::const_iterator preference = - preferenceMap->find(subjectResource); - - if (preference != preferenceMap->end()) { - LogInfo("Found not default preference!!"); - resourcePreferences.preference = preference->second; - } else { - resourcePreferences.preference = Preference::PREFERENCE_DEFAULT; - } - } else { - resourcePreferences.preference = Preference::PREFERENCE_DEFAULT; - } - - LogInfo("Pushing back resource preference"); - - subjectResourcePreferences.resourcesPreference. - push_back(resourcePreferences); - } - - widgetsPreferences.subjectsResourcePreferences.push_back( - subjectResourcePreferences); - } - - return widgetsPreferences; -} - -AceSettings::ResourcesPreferences AceSettingsLogic::getResourcesPreferences() -const -{ - AceSettings::ResourcesPreferences resourcesPreferences; - PreferenceMap preferenceMap; - - SettingsLogic::getDevCapSettings(&preferenceMap); - - FeatureHandleList featureList = FeatureDAOReadOnly::GetHandleList(); - - FOREACH(featureName, featureList) - { - FeatureDAOReadOnly featureDao(*featureName); - - AceSettings::ResourcePreference resourcePreference; - resourcePreference.resource = featureDao.GetName(); - - PreferenceMap::const_iterator preference = - preferenceMap.find(resourcePreference.resource); - - if (preference != preferenceMap.end()) { - resourcePreference.preference = preference->second; - } else { - resourcePreference.preference = Preference::PREFERENCE_DEFAULT; - } - - resourcesPreferences.resourcesPreference.push_back(resourcePreference); - } - - return resourcesPreferences; -} - -void AceSettingsLogic::setWidgetPreference(const std::string &resource, - WidgetHandle handler, - const Preference &preference) -{ - SettingsLogic::setWidgetDevCapSetting(resource, handler, preference); -} - -void AceSettingsLogic::setResourcePreference(const std::string &resource, - const Preference &preference) -{ - SettingsLogic::setDevCapSetting(resource, preference); -} - -bool AceSettingsLogic::getWidgetsSecure() const -{ - return GlobalDAO::GetSecureByDefault(); -} - -void AceSettingsLogic::setWidgetsSecure(bool widgetSecure) -{ - GlobalDAO::SetSecureByDefault(widgetSecure); -} - -void AceSettingsLogic::resetWidgetsPreferences() -{ - AceDB::AceDAO::clearWidgetDevCapSettings(); -} - -void AceSettingsLogic::resetResourcesPreferences() -{ - AceDB::AceDAO::clearDevCapSettings(); -} diff --git a/src/access-control/ace_settings_logic.h b/src/access-control/ace_settings_logic.h deleted file mode 100644 index fa49af8..0000000 --- a/src/access-control/ace_settings_logic.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_logic.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a header of server of ACE user preferences - */ -#ifndef WRT_SRC_ACCESS_CONTROL_IPC_SETTINGS_ACE_SETTINGS_LOGIC_H_ -#define WRT_SRC_ACCESS_CONTROL_IPC_SETTINGS_ACE_SETTINGS_LOGIC_H_ - -#include -#include -#include -#include - -#include - -class PolicyEnforcementPoint; - -class AceSettingsLogic -{ - public: - void setWidgetPreference(const std::string &resource, - WidgetHandle handler, - const AceDB::PreferenceTypes &preference); - - void setResourcePreference(const std::string &resource, - const AceDB::PreferenceTypes &preference); - - AceSettings::WidgetsPreferences getWidgetsPreferences() const; - - AceSettings::ResourcesPreferences getResourcesPreferences() const; - - bool getWidgetsSecure() const; - - void setWidgetsSecure(bool widgetSecure); - - void resetWidgetsPreferences(); - void resetResourcesPreferences(); - - private: - AceSettingsLogic(PolicyEnforcementPoint *policyEnforcementPoint); - - friend class SecurityLogic; - friend class PolicyEnforcementPoint; - - // PEP - PolicyEnforcementPoint *m_policyEnforcementPoint; - - // Ace settings server (may be null) - DPL::SharedPtr m_server; -}; - -#endif // WRT_SRC_ACCESS_CONTROL_IPC_SETTINGS_ACE_SETTINGS_LOGIC_H_ diff --git a/src/access-control/attribute_facade.cpp b/src/access-control/attribute_facade.cpp deleted file mode 100644 index 52a9160..0000000 --- a/src/access-control/attribute_facade.cpp +++ /dev/null @@ -1,871 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * This file contains classes that implement WRT_INTERFACE.h interfaces, - * so that ACE could access WRT specific and other information during - * the decision making. - * - * @file attribute_.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Ming Jin(ming79.jin@samsung.com) - * @version 1.0 - * @brief Implementation file for attributes obtaining. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; - -namespace // anonymous -{ -typedef std::list AttributeHandlerResponse; - -typedef AttributeHandlerResponse (*AttributeHandler)( - const WidgetExecutionPhase &phase, - const WidgetHandle &widgetHandle); -typedef AttributeHandlerResponse (*ResourceAttributeHandler)( - const WidgetExecutionPhase &phase, - const WidgetHandle &widgetHandle, - const Request &request); - -AttributeHandlerResponse AttributeClassHandler(const WidgetExecutionPhase & /*phase*/, - const WidgetHandle & /*widgetHandle*/) -{ - AttributeHandlerResponse response; - response.push_back("widget"); - return response; -} - -AttributeHandlerResponse AttributeInstallUriHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - std::string value = dao.getShareHref(); - - if (!value.empty()) { - response.push_back(value); - } - - return response; -} - -AttributeHandlerResponse AttributeVersionHandler(const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - DPL::Optional value = dao.getVersion(); - - if (!!value) { - response.push_back(DPL::ToUTF8String(*value)); - } - - return response; -} - -AttributeHandlerResponse AttributeDistributorKeyCnHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyCommonNameList(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY); - - return response; -} - -AttributeHandlerResponse AttributeDistributorKeyFingerprintHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyFingerprints(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY); - - return response; -} - -AttributeHandlerResponse AttributeDistributorKeyRootCnHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyCommonNameList(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT); - - return response; -} - -AttributeHandlerResponse AttributeDistributorKeyRootFingerprintHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyFingerprints(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT); - - return response; -} - -AttributeHandlerResponse AttributeAuthorKeyCnHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyCommonNameList(WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); - - return response; -} - -AttributeHandlerResponse AttributeAuthorKeyFingerprintHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyFingerprints(WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); - - return response; -} - -AttributeHandlerResponse AttributeAuthorKeyRootCnHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyCommonNameList(WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - return response; -} - -AttributeHandlerResponse AttributeAuthorKeyRootFingerprintHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - response = dao.getKeyFingerprints(WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - return response; -} - -AttributeHandlerResponse AttributeNetworkAccessUriHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle & /*widgetHandle*/) -{ - AttributeHandlerResponse response; - return response; -} - -AttributeHandlerResponse AttributeIdHandler(const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - WidgetGUID wGUID = dao.getGUID(); - - if (!!wGUID) { - response.push_back(DPL::ToUTF8String(*wGUID)); - } - return response; -} - -//AttributeHandlerResponse AttributeNameHandler(const WidgetExecutionPhase & /*phase*/, -// const WidgetHandle &widgetHandle) -//{ -// AttributeHandlerResponse response; -// -// WidgetLocalizedInfo info = -// W3CFileLocalization::getLocalizedInfo(widgetHandle); -// -// DPL::Optional val = info.name; -// std::string value = !!val ? DPL::ToUTF8String(*val) : ""; -// -// response.push_back(value); -// return response; -//} -// -//AttributeHandlerResponse AttributeWidgetAttrNameHandler( -// const WidgetExecutionPhase & /*phase*/, -// const WidgetHandle &widgetHandle) -//{ -// AttributeHandlerResponse response; -// -// WidgetLocalizedInfo info = -// W3CFileLocalization::getLocalizedInfo(widgetHandle); -// -// DPL::Optional value = info.name; -// -// if (!!value) { -// response.push_back(DPL::ToUTF8String(*value)); -// } -// -// return response; -//} - -AttributeHandlerResponse AttributeAuthorNameHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle) -{ - AttributeHandlerResponse response; - WidgetDAOReadOnly dao(widgetHandle); - - DPL::Optional value = dao.getAuthorName(); - - if (!!value) { - response.push_back(DPL::ToUTF8String(*value)); - } - - return response; -} - -AttributeHandlerResponse AttributeRoamingHandler( - const WidgetExecutionPhase &phase, - const WidgetHandle & /*widgetHandle*/) -{ - AttributeHandlerResponse response; - - if (WidgetExecutionPhase_WidgetInstall == phase) { - // TODO undetermind value - response.push_back(std::string("")); - } else if (SimpleRoamingAgentSingleton::Instance().IsRoamingOn()) { - response.push_back(std::string("true")); - } else { - response.push_back(std::string("false")); - } - - return response; -} - -AttributeHandlerResponse AttributeBearerTypeHandler( - const WidgetExecutionPhase & /*phase*/, - const WidgetHandle & /*widgetHandle*/) -{ - AttributeHandlerResponse response; - - std::string bearerName = "undefined-bearer-name"; - - if (bearerName.empty()) { - LogWarning("Bearer-type is NOT SET or empty"); - } else { - response.push_back(bearerName); - } - - return response; -} - -struct AttributeHandlerContext -{ - std::string name; - WidgetExecutionPhase allowedPhaseMask; - AttributeHandler handler; -}; - -// Private masks -const WidgetExecutionPhase WidgetExecutionPhase_All = - static_cast( - WidgetExecutionPhase_WidgetInstall | - WidgetExecutionPhase_WidgetInstantiate | - WidgetExecutionPhase_WebkitBind | - WidgetExecutionPhase_Invoke); -const WidgetExecutionPhase WidgetExecutionPhase_NoWidgetInstall = - static_cast( - WidgetExecutionPhase_WidgetInstantiate | - WidgetExecutionPhase_WebkitBind | - WidgetExecutionPhase_Invoke); - -#define ALL_PHASE(name, handler) \ - { # name, WidgetExecutionPhase_All, handler }, - -#define NO_INSTALL(name, handler) \ - { # name, WidgetExecutionPhase_NoWidgetInstall, handler }, - -AttributeHandlerContext HANDLED_ATTRIBUTES_LIST[] = { - ALL_PHASE(Class, &AttributeClassHandler) - ALL_PHASE(install-uri, &AttributeInstallUriHandler) - ALL_PHASE(version, &AttributeVersionHandler) - ALL_PHASE(distributor-key-cn, &AttributeDistributorKeyCnHandler) - ALL_PHASE(distributor-key-fingerprint, - &AttributeDistributorKeyFingerprintHandler) - ALL_PHASE(distributor-key-root-cn, - &AttributeDistributorKeyRootCnHandler) - ALL_PHASE(distributor-key-root-fingerprint, - &AttributeDistributorKeyRootFingerprintHandler) - ALL_PHASE(author-key-cn, &AttributeAuthorKeyCnHandler) - ALL_PHASE(author-key-fingerprint, &AttributeAuthorKeyFingerprintHandler) - ALL_PHASE(author-key-root-cn, &AttributeAuthorKeyRootCnHandler) - ALL_PHASE(author-key-root-fingerprint, - &AttributeAuthorKeyRootFingerprintHandler) - ALL_PHASE(network-access-uri, &AttributeNetworkAccessUriHandler) - ALL_PHASE(id, &AttributeIdHandler) -// ALL_PHASE(name, &AttributeNameHandler) -// ALL_PHASE(widget-attr:name, &AttributeWidgetAttrNameHandler) - ALL_PHASE(author-name, &AttributeAuthorNameHandler) - /* Enviroment attributes*/ - NO_INSTALL(roaming, &AttributeRoamingHandler) - NO_INSTALL(bearer-type, &AttributeBearerTypeHandler) -}; - -#undef ALL_PHASE -#undef NO_INSTALL - -const size_t HANDLED_ATTRIBUTES_LIST_COUNT = - sizeof(HANDLED_ATTRIBUTES_LIST) / sizeof(HANDLED_ATTRIBUTES_LIST[0]); - -template -class lambdaCollectionPusher -{ - public: - std::list& m_collection; - lambdaCollectionPusher(std::list& collection) : m_collection(collection) - { - } - void operator()(const T& element) const - { - m_collection.push_back(element); - } -}; - -class lambdaWidgetPrefixEquality : - public std::binary_function -{ - public: - bool operator()(const WidgetFeature& wFeature, - const std::string& prefix) const - { - return wFeature.name.find(DPL::FromUTF8String(prefix)) != - DPL::String::npos; - } -}; - -class lambdaWidgetNameEquality : - public std::binary_function -{ - public: - bool operator()(const WidgetFeature& wFeature, - const std::string& prefix) const - { - return wFeature.name == DPL::FromUTF8String(prefix); - } -}; - -FeatureHandleList getFeatureHandleList(const WidgetHandle& widgetHandle, - const std::string& resourceId) -{ - FeatureHandleList featureHandleList; - WidgetDAOReadOnly widgetDAO(widgetHandle); - WidgetFeatureSet wFeatureSet = widgetDAO.getFeaturesList(); - WidgetFeatureSet::iterator foundFeatures = - std::find_if(wFeatureSet.begin(), - wFeatureSet.end(), - std::bind2nd(lambdaWidgetPrefixEquality(), resourceId)); - - if (foundFeatures != wFeatureSet.end()) { - FeatureDAOReadOnly featureDAO(resourceId); - featureHandleList.push_back(featureDAO.GetFeatureHandle()); - } - return featureHandleList; -} - -AttributeHandlerResponse AttributeDeviceCapHandler(const WidgetExecutionPhase & /*phase*/, - const WidgetHandle & /*widgetHandle*/, - const Request &request) -{ - AttributeHandlerResponse response; - - Request::DeviceCapabilitySet capSet = request.getDeviceCapabilitySet(); - - std::for_each( - capSet.begin(), - capSet.end(), - lambdaCollectionPusher(response)); - - return response; - - // We should return list of device-caps required by resourceId. - // AttributeHandlerResponse response; - // - // FeatureHandleList fHandleList = - // getFeatureHandleList(widgetHandle, resourceId); - // if( !fHandleList.empty() ) - // { - // FeatureDAO feature( resourceId ); - // std::set deviceCapLast = - // feature.GetDeviceCapabilities(); - // std::for_each( - // deviceCapList.begin(), - // deviceCapList.end(), - // lambdaCollectionPusher( - // response) ); - // } - // return response; -} - -class lambdaFeatureEquality : - public std::binary_function -{ - public: - bool operator()(const FeatureHandle& wFeature, - const int& resurceId) const - { - return wFeature == resurceId; - } -}; - -class lambdaPushFeatureName : - public std::binary_function -{ - void operator()(const WidgetFeature& wFeature, - AttributeHandlerResponse& response) const - { - response.push_back(DPL::ToUTF8String(wFeature.name)); - } -}; - -AttributeHandlerResponse AttributeApiFeatureHandler( - const WidgetExecutionPhase & /* phase */, - const WidgetHandle & /* widgetHandle */, - const Request & /* request */) -{ - LogDebug("WAC 2.0 does not support api-feature and resource-id in policy."); - AttributeHandlerResponse response; - return response; - // Wrt shouldn't ask about resource which is not listed in - // (widget) config.xml file - // - // AttributeHandlerResponse response; - // WidgetDAOReadOnly widgetDAO(widgetHandle); - // WidgetFeatureSet wFeatureSet = widgetDAO.GetFeaturesList(); - // std::string featureName = resourceId; - // WidgetFeatureSet::iterator foundFeatures = - // std::find_if(wFeatureSet.begin(), - // wFeatureSet.end(), - // std::bind2nd(lambdaWidgetPrefixEquality(), - // featureName)); - // - // while( foundFeatures != wFeatureSet.end() ) - // { - // response.push_back( foundFeatures->name ); - // LogDebug("Found feature: " << foundFeatures->name ); - // foundFeatures++; - // } - // - // return response; -} - -typedef std::string (FeatureDAOReadOnly::*FNMETHOD)() const; - -AttributeHandlerResponse GetFeatureAttributeGroup(const WidgetExecutionPhase & /*phase*/, - const WidgetHandle &widgetHandle, - const std::string& resourceId, - FNMETHOD function) -{ - AttributeHandlerResponse response; - FeatureHandleList fHandleList = - getFeatureHandleList(widgetHandle, resourceId); - if (!fHandleList.empty()) { - FeatureDAOReadOnly featureDAO(fHandleList.front()); - std::string attribute = (featureDAO.*function)(); - response.push_back(attribute); - } - return response; -} - -AttributeHandlerResponse AttributeFeatureInstallUriHandler( - const WidgetExecutionPhase & /* phase */, - const WidgetHandle & /* widgetHandle */, - const Request & /* request */) -{ - LogDebug("WAC 2.0 does not support feature-install-uri is policy!"); - AttributeHandlerResponse response; - return response; -} - -AttributeHandlerResponse AttributeFeatureFeatureKeyCnHandler( - const WidgetExecutionPhase & /* phase */, - const WidgetHandle & /* widgetHandle */, - const Request & /* request */) -{ - LogDebug("WAC 2.0 does not support feature-key-cn is policy!"); - AttributeHandlerResponse response; - return response; -} - -AttributeHandlerResponse AttributeFeatureKeyRootCnHandler( - const WidgetExecutionPhase & /* phase */, - const WidgetHandle & /* widgetHandle */, - const Request & /* request */) -{ - LogDebug("WAC 2.0 does not support feature-key-root-cn is policy!"); - AttributeHandlerResponse response; - return response; -} - -AttributeHandlerResponse AttributeFeatureKeyRootFingerprintHandler( - const WidgetExecutionPhase & /* phase */, - const WidgetHandle & /* widgetHandle */, - const Request & /* request */) -{ - LogDebug("WAC 2.0 does not support" - " feature-key-root-fingerprint is policy!"); - AttributeHandlerResponse response; - return response; -} - -struct ResourceAttributeHandlerContext -{ - std::string name; - WidgetExecutionPhase allowedPhaseMask; - ResourceAttributeHandler handler; -}; - -#define ALL_PHASE(name, handler) \ - { # name, WidgetExecutionPhase_All, handler }, - -ResourceAttributeHandlerContext HANDLED_RESOURCE_ATTRIBUTES_LIST[] = { - ALL_PHASE(device-cap, &AttributeDeviceCapHandler) - ALL_PHASE(api-feature, &AttributeApiFeatureHandler) - // For compatiblity with older policies we tread resource-id - // identically as api-feature - ALL_PHASE(resource-id, &AttributeApiFeatureHandler) - - ALL_PHASE(feature-install-uri, &AttributeFeatureInstallUriHandler) - ALL_PHASE(feature-key-cn, &AttributeFeatureFeatureKeyCnHandler) - ALL_PHASE(feature-key-root-cn, &AttributeFeatureKeyRootCnHandler) - ALL_PHASE(feature-key-root-fingerprint, - &AttributeFeatureKeyRootFingerprintHandler) -}; - -#undef ALL_PHASE - -const size_t HANDLED_RESOURCE_ATTRIBUTES_LIST_COUNT = - sizeof(HANDLED_RESOURCE_ATTRIBUTES_LIST) / - sizeof(HANDLED_RESOURCE_ATTRIBUTES_LIST[0]); -} // namespace anonymous - -/* - * class WebRuntimeImpl - */ -int WebRuntimeImpl::getAttributesValuesLoop(const Request &request, - std::list* attributes, - WidgetExecutionPhase executionPhase) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - WidgetHandle widgetHandle = request.getWidgetHandle(); - - FOREACH(itr, *attributes) - { - // Get attribute name - std::string attribute = *itr->first; - - // Search for attribute handler - bool attributeFound = false; - - for (size_t i = 0; i < HANDLED_ATTRIBUTES_LIST_COUNT; ++i) { - if (HANDLED_ATTRIBUTES_LIST[i].name == attribute) { - // Check if execution phase is valid - if ((executionPhase & - HANDLED_ATTRIBUTES_LIST[i].allowedPhaseMask) == 0) { - // Attribute found, but execution state - // forbids to execute handler - LogWarning( - "Request for attribute: '" << - attribute << "' which is supported " << - "but forbidden at widget execution phase: " - << - executionPhase); - } else { - // Execution phase allows handler - AttributeHandlerResponse attributeResponse = - (*HANDLED_ATTRIBUTES_LIST[i].handler)( - executionPhase, - widgetHandle); - std::copy(attributeResponse.begin(), - attributeResponse.end(), - std::back_inserter(*itr->second)); - } - - attributeFound = true; - break; - } - } - - if (!attributeFound) { - LogWarning("Request for attribute: '" << - attribute << "' which is not supported"); - } - } - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int WebRuntimeImpl::getAttributesValues(const Request &request, - std::list* attributes) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - // Get current execution state - WidgetExecutionPhase executionPhase = - request.getExecutionPhase(); - - return getAttributesValuesLoop(request, attributes, executionPhase); - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -std::string WebRuntimeImpl::getSessionId(const Request & /* request */) -{ - std::string result; - LogError("Not implemented!"); - return result; -} - -WebRuntimeImpl::WebRuntimeImpl() -{ -} - -/* - * class ResourceInformationImpl - */ - -int ResourceInformationImpl::getAttributesValuesLoop(const Request &request, - std::list* attributes, - WidgetExecutionPhase executionPhase) -{ - // Currently, we assume widgets have internal representation of integer IDs - WidgetHandle widgetHandle = request.getWidgetHandle(); - //TODO add resource id string analyzys - FOREACH(itr, *attributes) - { - // Get attribute name - std::string attribute = *itr->first; - - // Search for attribute handler - bool attributeFound = false; - - for (size_t i = 0; i < HANDLED_RESOURCE_ATTRIBUTES_LIST_COUNT; ++i) { - if (HANDLED_RESOURCE_ATTRIBUTES_LIST[i].name == attribute) { - // Check if execution phase is valid - if ((executionPhase & - HANDLED_RESOURCE_ATTRIBUTES_LIST[i].allowedPhaseMask) == - 0) { - // Attribute found, but execution state - // forbids to execute handler - LogDebug( - "Request for attribute: '" << - attribute << - "' which is supported but forbidden " << - "at widget execution phase: " << executionPhase); - itr->second = NULL; - } else { - // Execution phase allows handler - AttributeHandlerResponse attributeResponse = - (*HANDLED_RESOURCE_ATTRIBUTES_LIST[i].handler)( - executionPhase, - widgetHandle, - request); - std::copy(attributeResponse.begin(), - attributeResponse.end(), - std::back_inserter(*itr->second)); - - std::ostringstream attributeResponseFull; - - for (AttributeHandlerResponse::const_iterator - it = attributeResponse.begin(); - it != attributeResponse.end(); ++it) { - attributeResponseFull << - (it == attributeResponse.begin() ? "" : ", ") << - *it; - } - - LogDebug("Attribute(" << attribute << ") = " << - attributeResponseFull.str()); - } - - attributeFound = true; - break; - } - } - - if (!attributeFound) { - LogWarning("Request for attribute: '" << attribute << - "' which is not supported"); - } - } - return 0; -} - -int ResourceInformationImpl::getAttributesValues(const Request &request, - std::list* attributes) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - // Get current execution state - WidgetExecutionPhase executionPhase = - request.getExecutionPhase(); - return getAttributesValuesLoop(request, attributes, executionPhase); - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -ResourceInformationImpl::ResourceInformationImpl() -{ -} - -/* - * class OperationSystemImpl - */ - -int OperationSystemImpl::getAttributesValues(const Request &request, - std::list* attributes) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - //FIXME: - //GetExecution name without widget name - WidgetExecutionPhase executionPhase = - request.getExecutionPhase(); - - FOREACH(itr, *attributes) - { - // Get attribute name - std::string attribute = *itr->first; - - // Search for attribute handler - bool attributeFound = false; - - for (size_t i = 0; i < HANDLED_ATTRIBUTES_LIST_COUNT; ++i) { - if (HANDLED_ATTRIBUTES_LIST[i].name == attribute) { - // Check if execution phase is valid - if ((executionPhase & - HANDLED_ATTRIBUTES_LIST[i].allowedPhaseMask) == 0) { - // Attribute found, but execution state forbids - // to execute handler - LogDebug("Request for attribute: '" << attribute << - "' which is supported but forbidden at " << - "widget execution phase: " << executionPhase); - itr->second = NULL; - } else { - // Execution phase allows handler - AttributeHandlerResponse attributeResponse = - (*HANDLED_ATTRIBUTES_LIST[i].handler)( - executionPhase, - 0); - std::copy(attributeResponse.begin(), - attributeResponse.end(), - std::back_inserter(*itr->second)); - - std::ostringstream attributeResponseFull; - - typedef AttributeHandlerResponse::const_iterator Iter; - FOREACH(it, attributeResponse) - { - attributeResponseFull << - (it == attributeResponse.begin() - ? "" : ", ") << *it; - } - - LogDebug("Attribute(" << attribute << - ") = " << attributeResponseFull.str()); - } - - attributeFound = true; - break; - } - } - - if (!attributeFound) { - LogWarning("Request for attribute: '" << attribute << - "' which is not supported"); - } - } - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -OperationSystemImpl::OperationSystemImpl() -{ -} - -/* - * end of class OperationSystemImpl - */ - -int FunctionParamImpl::getAttributesValues(const Request & /*request*/, - std::list *attributes) -{ - FOREACH(iter, *attributes) - { - std::string attributeName = *(iter->first); - - ParamMap::const_iterator i; - std::pair jj = - paramMap.equal_range(attributeName); - - for (i = jj.first; i != jj.second; ++i) { - iter->second->push_back(i->second); - LogDebug("Attribute: " << attributeName << " Value: " << - i->second); - } - } - return 0; -} - diff --git a/src/access-control/attribute_facade.h b/src/access-control/attribute_facade.h deleted file mode 100644 index e3a8cfd..0000000 --- a/src/access-control/attribute_facade.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file attribute_facade.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of WebRuntimeImpl, - * ResourceInformationImpl, OperationSystemImpl - */ - -#ifndef ATTRIBUTE_FACADE_H -#define ATTRIBUTE_FACADE_H - -#include -#include -#include - -#include - -class Request; - -class WebRuntimeImpl : public IWebRuntime -{ - public: - // Return current sessionId - int getAttributesValuesLoop(const Request &request, - std::list* attributes, - WidgetExecutionPhase executionPhase); - - int getAttributesValues(const Request &request, - std::list* attributes); - virtual std::string getSessionId(const Request &request); - WebRuntimeImpl(); -}; - -class ResourceInformationImpl : public IResourceInformation -{ - public: - int getAttributesValuesLoop(const Request &request, - std::list* attributes, - WidgetExecutionPhase executionPhase); - int getAttributesValues(const Request &request, - std::list* attributes); - ResourceInformationImpl(); -}; - -class OperationSystemImpl : public IOperationSystem -{ - public: - /** - * gather and set attributes values for specified attribute name - * @param attributes is a list of pairs( - * first: pointer to attribute name - * second: list of values for attribute (std::string) - - * its a list of string (BONDI requirement), but usually there - * will be only one string - */ - int getAttributesValues(const Request &request, - std::list* attributes); - OperationSystemImpl(); -}; - -class FunctionParamImpl : public IFunctionParam -{ - public: - virtual int getAttributesValues(const Request & /*request*/, - std::list *attributes); - void addAttribute(const std::string &key, - const std::string &value) - { - paramMap.insert(make_pair(key, value)); - } - virtual ~FunctionParamImpl() - { - } - - private: - typedef std::multimap ParamMap; - ParamMap paramMap; -}; - -typedef std::vector FunctionParams; - -#endif //ATTRIBUTE_FACADE_H diff --git a/src/access-control/i_ace_permissions.h b/src/access-control/i_ace_permissions.h deleted file mode 100644 index 3935c9d..0000000 --- a/src/access-control/i_ace_permissions.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file i_ace_settings.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This is header file for preference settings interface between - * security controller and clients - */ - -#ifndef WRT_SRC_ACCESS_CONTROL_I_ACE_PERMISSSIONS_H_ -#define WRT_SRC_ACCESS_CONTROL_I_ACE_PERMISSSIONS_H_ - -#include -#include - -namespace AceSettings { - -struct ResourcePreference -{ - std::string resource; - AceDB::PreferenceTypes preference; - - ResourcePreference() - { - } - - ResourcePreference(const std::string &resourceArg, - const AceDB::PreferenceTypes &preferenceArg) : - resource(resourceArg), - preference(preferenceArg) - { - } -}; - -struct SubjectResourcePreferences -{ - std::string subject; - std::vector resourcesPreference; - - SubjectResourcePreferences() - { - } - - SubjectResourcePreferences( - const std::string &subjectArg, - const std::vector &resourcesPreferenceArg) : - subject(subjectArg), - resourcesPreference(resourcesPreferenceArg) - { - } -}; - -struct WidgetsPreferences -{ - std::vector subjectsResourcePreferences; -}; - -struct ResourcesPreferences -{ - std::vector resourcesPreference; -}; - -} // end of namespace AceSettings - -#endif /* WRT_SRC_ACCESS_CONTROL_I_ACE_PERMISSSIONS_H_ */ diff --git a/src/access-control/security_controller.cpp b/src/access-control/security_controller.cpp deleted file mode 100644 index 762a640..0000000 --- a/src/access-control/security_controller.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This class simply redirects the access requests to access control engine. - * The aim is to hide access control engine specific details from WRT modules. - * It also implements WRT_INTERFACE.h interfaces, so that ACE could access - * WRT specific and other information during the decision making. - * - * @file security_controller.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Ming Jin(ming79.jin@samsung.com) - * @version 1.0 - * @brief Implementation file for security controller - */ -#include - -#include -#include -#include -#include -#include - -#include -#include - -IMPLEMENT_SINGLETON(SecurityController) - -struct SecurityController::Impl -{ - SecurityLogic logic; -}; - -SecurityController::SecurityController() -{ - m_impl.Reset(new Impl); -} - -SecurityController::~SecurityController() -{ -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::InitializeSyncEvent & /* event */) -{ - m_impl->logic.initialize(); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::TerminateSyncEvent & /*event*/) -{ - m_impl->logic.terminate(); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::AuthorizeWidgetInstallEvent &event) -{ - m_impl->logic.authorizeWidgetInstall(event.GetArg0(), event.GetArg1()); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::CheckFunctionCallSyncEvent &ev) -{ - *ev.GetArg0() = m_impl->logic.checkFunctionCall(ev.GetArg1()); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::SetWidgetPreferenceEvent & /*event*/) -{ -// m_impl->logic.setWidgetPreference(event.GetArg0(), -// event.GetArg1(), -// event.GetArg2()); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::SetResourcePreferenceEvent & /*event*/) -{ -// m_impl->logic.setResourcePreference(event.GetArg0(), event.GetArg1()); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::GetWidgetsPreferencesSyncEvent & /*event*/) -{ -// *event.GetArg0() = m_impl->logic.getWidgetsPreferences(); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::GetResourcesPreferencesSyncEvent & /*event*/) -{ -// *event.GetArg0() = m_impl->logic.getResourcesPreferences(); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::ResetWidgetsPreferencesEvent & /*evt*/) -{ -// m_impl->logic.resetWidgetsPreferences(); -} - -void SecurityController::OnEventReceived( - const SecurityControllerEvents::ResetResourcesPreferencesEvent & /*evt*/) -{ -// m_impl->logic.resetResourcesPreferences(); -} diff --git a/src/access-control/security_controller.h b/src/access-control/security_controller.h deleted file mode 100644 index ad0f3d6..0000000 --- a/src/access-control/security_controller.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This class simply redirects the access requests to access control engine. - * The aim is to hide access control engine specific details from WRT modules. - * It also implements WRT_INTERFACE.h interfaces, so that ACE could access - * WRT specific and other information during the decision making. - * - * @file security_controller.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Ming Jin(ming79.jin@samsung.com) - * @version 1.0 - * @brief Header file for security controller - */ -#ifndef SECURITY_CONTROLLER_H -#define SECURITY_CONTROLLER_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -namespace Jobs { -class Job; -} - -namespace SecurityControllerEvents { -DECLARE_GENERIC_EVENT_0(InitializeSyncEvent) -DECLARE_GENERIC_EVENT_0(TerminateSyncEvent) - -DECLARE_GENERIC_EVENT_2(AuthorizeWidgetInstallEvent, - Request *, - AbstractPolicyEnforcementPoint::ResponseReceiver) - -DECLARE_GENERIC_EVENT_2(CheckFunctionCallSyncEvent, - PolicyResult *, - Request *) - -DECLARE_GENERIC_EVENT_3(SetWidgetPreferenceEvent, - std::string, // resource, - WidgetHandle, // subject - AceDB::PreferenceTypes) // preference - -DECLARE_GENERIC_EVENT_2(SetResourcePreferenceEvent, - std::string, // resource, - AceDB::PreferenceTypes) // preference - -DECLARE_GENERIC_EVENT_1(GetWidgetsPreferencesSyncEvent, - AceSettings::WidgetsPreferences *) - -DECLARE_GENERIC_EVENT_1(GetResourcesPreferencesSyncEvent, - AceSettings::ResourcesPreferences *) - -DECLARE_GENERIC_EVENT_0(ResetWidgetsPreferencesEvent) -DECLARE_GENERIC_EVENT_0(ResetResourcesPreferencesEvent) -} // namespace SecurityControllerEvents - -typedef DPL::TypeListDecl< - SecurityControllerEvents::InitializeSyncEvent, - SecurityControllerEvents::TerminateSyncEvent, - SecurityControllerEvents::AuthorizeWidgetInstallEvent, - SecurityControllerEvents::CheckFunctionCallSyncEvent, - SecurityControllerEvents::SetWidgetPreferenceEvent, - SecurityControllerEvents::SetResourcePreferenceEvent, - SecurityControllerEvents::GetWidgetsPreferencesSyncEvent, - SecurityControllerEvents::GetResourcesPreferencesSyncEvent, - SecurityControllerEvents::ResetWidgetsPreferencesEvent, - SecurityControllerEvents::ResetResourcesPreferencesEvent>::Type -SecurityControllerEventsTypeList; - -class SecurityController : - public DPL::Event::Controller -{ - protected: - virtual void OnEventReceived( - const SecurityControllerEvents::InitializeSyncEvent &event); - virtual void OnEventReceived( - const SecurityControllerEvents::TerminateSyncEvent &event); - virtual void OnEventReceived( - const SecurityControllerEvents::AuthorizeWidgetInstallEvent &event); - virtual void OnEventReceived( - const SecurityControllerEvents::CheckFunctionCallSyncEvent &e); - virtual void OnEventReceived( - const SecurityControllerEvents::SetWidgetPreferenceEvent &event); - virtual void OnEventReceived( - const SecurityControllerEvents::SetResourcePreferenceEvent &event); - virtual void OnEventReceived( - const SecurityControllerEvents::GetWidgetsPreferencesSyncEvent & - event); - virtual void OnEventReceived( - const SecurityControllerEvents::GetResourcesPreferencesSyncEvent & - evt); - virtual void OnEventReceived( - const SecurityControllerEvents::ResetWidgetsPreferencesEvent &evt); - virtual void OnEventReceived( - const SecurityControllerEvents::ResetResourcesPreferencesEvent & - evt); - - private: - class Impl; - DPL::ScopedPtr m_impl; - - SecurityController(); - //This desctructor must be in implementation file (cannot be autogenerated) - ~SecurityController(); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton SecurityControllerSingleton; - -#endif // SECURITY_CONTROLLER_H diff --git a/src/access-control/security_logic.cpp b/src/access-control/security_logic.cpp deleted file mode 100644 index 6485201..0000000 --- a/src/access-control/security_logic.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This class simply redirects the access requests to access control engine. - * The aim is to hide access control engine specific details from WRT modules. - * It also implements WRT_INTERFACE.h interfaces, so that ACE could access - * WRT specific and other information during the decision making. - * - * @file security_controller.h - # @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Ming Jin(ming79.jin@samsung.com) - * @author Piotr Kozbial (p.kozbial@samsung.com) - * @version 1.0 - * @brief Header file for security logic - */ - -#include -#include -#include -#ifdef WRT_SMACK_ENABLED -#include -#endif -#include - -void SecurityLogic::initialize() { - m_policyEnforcementPoint.initialize(new WebRuntimeImpl(), - new ResourceInformationImpl(), - new OperationSystemImpl()); -} - -void SecurityLogic::terminate() { - m_policyEnforcementPoint.terminate(); -} - -void SecurityLogic::authorizeWidgetInstall( - Request *request, - AbstractPolicyEnforcementPoint::ResponseReceiver receiver) -{ - PolicyResult result = m_policyEnforcementPoint.check(*request); - - // this is bad idea, what about context in request ?? - // We could resolve problem with memory allocation by adding default - // constructor to Request and pass object by value. - delete request; - - receiver(result); -} - -PolicyResult SecurityLogic::checkFunctionCall(Request* request) -{ - PolicyResult aceResult = m_policyEnforcementPoint.check(*request); - if (aceResult == PolicyEffect::PERMIT) { -#ifdef WRT_SMACK_ENABLED - try { - WrtDB::WidgetDAOReadOnly dao(request->getWidgetHandle()); - DPL::OptionalString pkgName = dao.getPkgname(); - Assert(!pkgName.IsNull() && "widget doesn't have a pkg name"); - const char *devCap = ""; - int ret = grant_rules_forWAC(DPL::ToUTF8String(*pkgName).c_str(), devCap); - Assert(ret==PC_OPERATION_SUCCESS && "smack rules couldn't be granted"); - } catch (WrtDB::WidgetDAOReadOnly::Exception) { - Assert(false && "can't access widget data"); - } -#endif - return PolicyEffect::PERMIT; - } else if (aceResult == PolicyEffect::PROMPT_ONESHOT || - aceResult == PolicyEffect::PROMPT_SESSION || - aceResult == PolicyEffect::PROMPT_BLANKET) - { - // TODO: check stored user answers!!! - // if necessary, grant SMACK rules - // return appropriately - the following is a dummy: - return aceResult; - } else { - return PolicyEffect::DENY; - } -} - -//void SecurityLogic::setWidgetPreference( -// std::string devCap, -// WidgetHandle widgetHandle, -// AceDB::PreferenceTypes preference) -//{ -// m_aceSettingsLogic.setWidgetPreference(devCap, -// widgetHandle, -// preference); -//} -// -//void SecurityLogic::setResourcePreference( -// std::string devCap, -// AceDB::PreferenceTypes preference) -//{ -// m_aceSettingsLogic.setResourcePreference(devCap, preference); -//} -// -//AceSettings::WidgetsPreferences SecurityLogic::getWidgetsPreferences() { -// return m_aceSettingsLogic.getWidgetsPreferences(); -//} -// -//AceSettings::ResourcesPreferences SecurityLogic::getResourcesPreferences() { -// return m_aceSettingsLogic.getResourcesPreferences(); -//} -// -//void SecurityLogic::resetWidgetsPreferences() { -// m_aceSettingsLogic.resetWidgetsPreferences(); -//} -// -//void SecurityLogic::resetResourcesPreferences() { -// m_aceSettingsLogic.resetResourcesPreferences(); -//} diff --git a/src/access-control/security_logic.h b/src/access-control/security_logic.h deleted file mode 100644 index 12da736..0000000 --- a/src/access-control/security_logic.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This class simply redirects the access requests to access control engine. - * The aim is to hide access control engine specific details from WRT modules. - * It also implements WRT_INTERFACE.h interfaces, so that ACE could access - * WRT specific and other information during the decision making. - * - * @file security_logic.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Ming Jin(ming79.jin@samsung.com) - * @author Piotr Kozbial (p.kozbial@samsung.com) - * @version 1.0 - * @brief Header file for security logic - */ -#ifndef SECURITY_LOGIC_H -#define SECURITY_LOGIC_H - -#include -#include -#include -#include -#include -#include - -//#include "ace_settings_logic.h" - -/* SecurityLogic - * May only be created and used by SecurityController. - * There may be only one instance. - */ -class SecurityLogic { - public: - SecurityLogic() {} - ~SecurityLogic() {} - // initialize/terminate - /** */ - void initialize(); - /** */ - void terminate(); - // access control checkpoints - /** */ - void authorizeWidgetInstall( - Request *, - AbstractPolicyEnforcementPoint::ResponseReceiver); - /** */ - PolicyResult checkFunctionCall(Request*); - // access control user settings - /** */ -// void setWidgetPreference( -// std::string devCap, -// WidgetHandle widgetHandle, -// AceDB::PreferenceTypes preference); -// /** */ -// void setResourcePreference( -// std::string devCap, -// AceDB::PreferenceTypes preference); - /** */ -// AceSettings::WidgetsPreferences getWidgetsPreferences(); - /** */ -// AceSettings::ResourcesPreferences getResourcesPreferences(); - /** */ -// void resetWidgetsPreferences(); - /** */ -// void resetResourcesPreferences(); - private: - PolicyEnforcementPoint m_policyEnforcementPoint; -// AceSettingsLogic m_aceSettingsLogic; -}; - -#endif // SECURITY_CONTROLLER_H diff --git a/src/access-control/server/ace_settings_server_factory.h b/src/access-control/server/ace_settings_server_factory.h deleted file mode 100644 index afab715..0000000 --- a/src/access-control/server/ace_settings_server_factory.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_server_factory.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a header of server of ACE server factory - */ -#ifndef WRT_SRC_ACCESS_CONTROL_SERVER_ACE_SETTINGS_SERVER_FACTORY_H_ -#define WRT_SRC_ACCESS_CONTROL_SERVER_ACE_SETTINGS_SERVER_FACTORY_H_ - -#include -#include - -typedef DPL::SharedPtr IAceSettingsServerPtr; - -class AceSettingsLogic; -class PolicyEnforcementPoint; - -class AceSettingsServerFactory -{ - public: - static IAceSettingsServerPtr Create(AceSettingsLogic *aceSettingsLogic); - - private: - AceSettingsServerFactory() - { - } -}; - -#endif // WRT_SRC_ACCESS_CONTROL_SERVER_ACE_SETTINGS_SERVER_FACTORY_H_ diff --git a/src/access-control/server/i_ace_settings_client.h b/src/access-control/server/i_ace_settings_client.h deleted file mode 100644 index d9f6b92..0000000 --- a/src/access-control/server/i_ace_settings_client.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file i_ace_settings_client.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a header file for interface of ACE settings client - */ -#ifndef WRT_SRC_UI_SHARED_GADGET_IACESETTINGSCLIENT_H_ -#define WRT_SRC_UI_SHARED_GADGET_IACESETTINGSCLIENT_H_ - -#include -#include -#include -#include -#include - -namespace AceSettings { - -class IClient -{ - public: - typedef DPL::FastDelegate - GetWidgetsPreferencesDelegate; - - typedef DPL::FastDelegate - GetResourcesPreferencesDelegate; - - virtual void setWidgetPreference(const std::string &resource, - const std::string &widget, - const AceDB::PreferenceTypes &preference) = 0; - - virtual void setResourcePreference(const std::string &resource, - const AceDB::PreferenceTypes &preference) = 0; - - virtual void asyncGetWidgetsPreferences( - GetWidgetsPreferencesDelegate delegate) = 0; - - virtual void asyncGetResourcesPreferences( - GetResourcesPreferencesDelegate delegate) = 0; - - virtual void resetWidgetsPreferences() = 0; - virtual void resetResourcesPreferences() = 0; - - virtual ~IClient() - { - } -}; -} // namespace AceSettings - -#endif // WRT_SRC_UI_SHARED_GADGET_IACESETTINGSCLIENT_H_ diff --git a/src/access-control/server/i_ace_settings_server.h b/src/access-control/server/i_ace_settings_server.h deleted file mode 100644 index 3cce315..0000000 --- a/src/access-control/server/i_ace_settings_server.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file i_ace_settings_server.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a header of server of ACE user preferences - */ -#ifndef WRT_SRC_ACCESS_CONTROL_IPC_SETTINGS_I_ACE_SETTINGS_SERVER_H_ -#define WRT_SRC_ACCESS_CONTROL_IPC_SETTINGS_I_ACE_SETTINGS_SERVER_H_ - -class IAceSettingsServer -{ - public: - virtual ~IAceSettingsServer() - { - } - - protected: - IAceSettingsServer() - { - } -}; - -#endif // WRT_SRC_ACCESS_CONTROL_IPC_SETTINGS_I_ACE_SETTINGS_SERVER_H_ diff --git a/src/access-control/server/ipc/ace_settings_server_factory_ipc.cpp b/src/access-control/server/ipc/ace_settings_server_factory_ipc.cpp deleted file mode 100644 index bb09f92..0000000 --- a/src/access-control/server/ipc/ace_settings_server_factory_ipc.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_server_factory.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a source of server of ACE server IPC factory - */ -#include -#include - -IAceSettingsServerPtr AceSettingsServerFactory::Create( - AceSettingsLogic *aceSettingsLogic) -{ - return IAceSettingsServerPtr(new AceSettingsServerIPC(aceSettingsLogic)); -} diff --git a/src/access-control/server/ipc/ace_settings_server_ipc.cpp b/src/access-control/server/ipc/ace_settings_server_ipc.cpp deleted file mode 100644 index 0fa4bd4..0000000 --- a/src/access-control/server/ipc/ace_settings_server_ipc.cpp +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_logic.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This is an implementation of server of ACE user preferences - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -AceSettingsServerIPC::AceSettingsServerIPC(AceSettingsLogic *aceSettingsLogic) - : - m_serverSockPath(AceSettings::DefaultAddress), - m_connection(NULL), - m_aceSettingsLogic(aceSettingsLogic) -{ - Touch(); - - DPL::Event::EventSupport::AddListener(this); - - m_serverID = Open(m_serverSockPath); -} - -AceSettingsServerIPC::~AceSettingsServerIPC() -{ - closeConnection(); - deatachListeners(); - - delete m_connection; - - DPL::Event::EventSupport::RemoveListener(this); -} - -void AceSettingsServerIPC::deatachListeners() -{ - LogInfo("Deattaching listeners"); - - if (m_connection) { - m_connection->DPL::Event::EventSupport - ::RemoveListener(this); - m_connection->DPL::Event::EventSupport - ::RemoveListener(this); - m_connection->DPL::Event::EventSupport - ::RemoveListener(this); - } -} - -void AceSettingsServerIPC::OnEventReceived( - const ConnectionEstablishedEvent &event) -{ - LogInfo("Initializing Connection"); - - if (!m_connection) { - m_connection = event.GetArg1(); - LogInfo("Estabilishing connection"); - - m_connection->DPL::Event::EventSupport - ::AddListener(this); - m_connection->DPL::Event::EventSupport - ::AddListener(this); - m_connection->DPL::Event::EventSupport - ::AddListener(this); - } else { - LogWarning("Ace settings can accept only one client"); - } -} - -void AceSettingsServerIPC::closeConnection() -{ - if (m_serverID) { - LogInfo("Closing AceSettingsServerIPC"); - - Close(m_serverID); - m_serverID = NULL; - - if (unlink(m_serverSockPath.c_str()) == -1) { - LogWarning("Cannot unlink socket file"); - } - } -} - -void AceSettingsServerIPC::OnEventReceived(const ConnectionClosedEvent & /*event*/) -{ - deatachListeners(); - - DPL::Event::ControllerEventHandler:: - PostEvent(CloseAceSettingsConnectionEvent()); -} - -void AceSettingsServerIPC::OnEventReceived(const ConnectionBrokenEvent & /*event*/) -{ - deatachListeners(); - - DPL::Event::ControllerEventHandler:: - PostEvent(CloseAceSettingsConnectionEvent()); -} - -void AceSettingsServerIPC::OnEventReceived(const AsyncCallEvent &event) -{ - LogInfo("Received async call"); - - Try - { - DPL::RPC::RPCFunction func = event.GetArg0(); - - OIM::OIM_MESSAGES cmd; - func.ConsumeArg(cmd); - - LogInfo("Received " << cmd << " from server"); - - switch (cmd) { - case OIM::MESSAGE_AskForWidgetResources_TYPE: - sendWidgetsPreferences(); - break; - - case OIM::MESSAGE_AskForResources_TYPE: - sendResourcesPreferences(); - break; - - case OIM::MESSAGE_SetWidgetResourcePreference_TYPE: - receiveWidgetResourcePreference(func); - break; - - case OIM::MESSAGE_SetResourcePreference_TYPE: - receiveResourcePreference(func); - break; - - case OIM::MESSAGE_AskForWidgetSecure_TYPE: - sendwidgetsSecure(); - break; - - case OIM::MESSAGE_WidgetSecure_TYPE: - receiveWidgetsSecure(func); - break; - - case OIM::MESSAGE_ResetWidgetsPreferences_TYPE: - receiveResetWidgetsPreferences(func); - break; - - case OIM::MESSAGE_ResetResourcesPreferences_TYPE: - receiveResetResourcesPreferences(func); - break; - - default: - LogWarning("Received Unknown command"); - closeConnection(); - break; - } - } - Catch(DPL::RPC::RPCFunction::Exception::ParseFailed) - { - LogWarning("Failed to parse data from client"); - closeConnection(); - } -} - -void AceSettingsServerIPC::OnEventReceived( - const CloseAceSettingsConnectionEvent & /*event*/) -{ - LogInfo("Received Close Connection event"); - delete m_connection; - m_connection = NULL; -} - -void AceSettingsServerIPC::sendWidgetsPreferences() -{ - // Get widgets settings - AceSettings::WidgetsPreferences widgetsPreferences = - m_aceSettingsLogic->getWidgetsPreferences(); - - // Convert widgets preferences to OIM structure - OIM::WidgetsSettings::WidgetsSettings widgetsSettings; - - FOREACH(widgetsIterator, widgetsPreferences.subjectsResourcePreferences) - { - std::vector - resourcesCollection; - - FOREACH(resourcesIterator, - widgetsIterator->resourcesPreference) - { - OIM::ResourcePreference::ResourcePreference resourcePreference; - - resourcePreference.resource = resourcesIterator->resource; - resourcePreference.preference = resourcesIterator->preference; - - resourcesCollection.push_back(resourcePreference); - } - - OIM::WidgetResourcesSetting::WidgetResourcesSetting - widgetResourcesSetting; - - widgetResourcesSetting.subject = widgetsIterator->subject; - widgetResourcesSetting.resourcesCollection = resourcesCollection; - - widgetsSettings.widgetsCollection.push_back( - widgetResourcesSetting); - } - - // Send OIM message - DPL::RPC::RPCFunction func; - widgetsSettings.Send(func); - - DPL::Event::ControllerEventHandler - ::PostEvent(AceSettingsSendDataEvent(func)); -} - -void AceSettingsServerIPC::sendResourcesPreferences() -{ - // Get resource preferences - AceSettings::ResourcesPreferences resourcesPreferences = - m_aceSettingsLogic->getResourcesPreferences(); - - // Convert to OIM message - OIM::ResourcesSetting::ResourcesSetting resourceSettings; - - FOREACH(resourcesIterator, resourcesPreferences.resourcesPreference) - { - OIM::ResourcePreference::ResourcePreference resourcePreference; - - resourcePreference.resource = resourcesIterator->resource; - resourcePreference.preference = resourcesIterator->preference; - - resourceSettings.resourcesCollection.push_back(resourcePreference); - } - - // Post OIM message - DPL::RPC::RPCFunction func; - resourceSettings.Send(func); - DPL::Event::ControllerEventHandler - ::PostEvent(AceSettingsSendDataEvent(func)); -} - -void AceSettingsServerIPC::sendwidgetsSecure() -{ - OIM::WidgetSecure::WidgetSecure widgetSecure; - widgetSecure.widgetSecure = - m_aceSettingsLogic->getWidgetsSecure(); - - DPL::RPC::RPCFunction func; - widgetSecure.Send(func); - - DPL::Event::ControllerEventHandler - ::PostEvent(AceSettingsSendDataEvent(func)); -} - -void AceSettingsServerIPC::OnEventReceived( - const AceSettingsSendDataEvent &event) -{ - LogInfo("Sending data by AceSettings Controller"); - - if (m_connection == NULL) { - LogError("Connection is NULL!"); - return; - } - - Try - { - m_connection->AsyncCall(event.GetArg0()); - } - Catch(DPL::RPC::AbstractRPCConnection::Exception::AsyncCallFailed) - { - LogInfo("--------------AsyncCall Failed------------"); - closeConnection(); - } -} - -void AceSettingsServerIPC::receiveWidgetResourcePreference( - DPL::RPC::RPCFunction& func) -{ - OIM::SetWidgetResourcePreference::SetWidgetResourcePreference - setWidgetPreference; - - setWidgetPreference.Receive(func); - - LogDebug("Setting Widget Resource Preference"); - -// m_aceSettingsLogic->setWidgetPreference( -// setWidgetPreference.resourcePreference.resource, -// setWidgetPreference.subject, -// setWidgetPreference.resourcePreference.preference); -} - -void AceSettingsServerIPC::receiveResourcePreference(DPL::RPC::RPCFunction& func) -{ - OIM::SetResourcePreference::SetResourcePreference - setResourcePreference; - - setResourcePreference.Receive(func); - - LogDebug("Setting Resource Preference"); - - m_aceSettingsLogic->setResourcePreference( - setResourcePreference.resourcePreference.resource, - setResourcePreference.resourcePreference.preference); -} - -void AceSettingsServerIPC::receiveWidgetsSecure(DPL::RPC::RPCFunction& func) -{ - OIM::WidgetSecure::WidgetSecure setWidgetSecureOIM; - setWidgetSecureOIM.Receive(func); - LogDebug("Setting WidgetSecure"); - - // Set widget secure - m_aceSettingsLogic->setWidgetsSecure(setWidgetSecureOIM.widgetSecure); -} - -void AceSettingsServerIPC::receiveResetWidgetsPreferences(DPL::RPC::RPCFunction& /*func*/) -{ - m_aceSettingsLogic->resetWidgetsPreferences(); -} - -void AceSettingsServerIPC::receiveResetResourcesPreferences(DPL::RPC::RPCFunction& /*func*/) -{ - m_aceSettingsLogic->resetResourcesPreferences(); -} diff --git a/src/access-control/server/ipc/ace_settings_server_ipc.h b/src/access-control/server/ipc/ace_settings_server_ipc.h deleted file mode 100644 index 050307d..0000000 --- a/src/access-control/server/ipc/ace_settings_server_ipc.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_logic.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a header of server of ACE user preferences - */ -#ifndef WRT_SRC_ACCESS_CONTROL_SERVER_IPC_ACE_SETTINGS_SERVER_IPC_H_ -#define WRT_SRC_ACCESS_CONTROL_SERVER_IPC_ACE_SETTINGS_SERVER_IPC_H_ - -#include -#include -#include -#include -#include -//#include -#include -#include - -namespace AceSettingsLogicEvents { -DECLARE_GENERIC_EVENT_0(CloseAceSettingsConnectionEvent) -DECLARE_GENERIC_EVENT_1(AceSettingsSendDataEvent, DPL::RPC::RPCFunction) -} // namespace AceSettingsLogicEvents - -class AceSettingsLogic; -class PolicyEnforcementPoint; - -class AceSettingsServerIPC : - public IAceSettingsServer, - private DPL::RPC::UnixSocketRPCServer, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectorEvents::ConnectionEstablishedEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::AsyncCallEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::ConnectionClosedEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::ConnectionBrokenEvent>, - private DPL::Event::Controller< - DPL::TypeListDecl< - AceSettingsLogicEvents::CloseAceSettingsConnectionEvent, - AceSettingsLogicEvents::AceSettingsSendDataEvent>::Type> -{ - public: - virtual ~AceSettingsServerIPC(); - - private: - typedef DPL::RPC::AbstractRPCConnectorEvents::ConnectionEstablishedEvent - ConnectionEstablishedEvent; - - typedef DPL::RPC::AbstractRPCConnectionEvents::AsyncCallEvent - AsyncCallEvent; - - typedef DPL::RPC::AbstractRPCConnectionEvents::ConnectionClosedEvent - ConnectionClosedEvent; - - typedef DPL::RPC::AbstractRPCConnectionEvents::ConnectionBrokenEvent - ConnectionBrokenEvent; - - typedef AceSettingsLogicEvents::CloseAceSettingsConnectionEvent - CloseAceSettingsConnectionEvent; - - typedef AceSettingsLogicEvents::AceSettingsSendDataEvent - AceSettingsSendDataEvent; - - DPL::RPC::AbstractRPCConnectionID m_serverID; - std::string m_serverSockPath; - DPL::RPC::AbstractRPCConnection* m_connection; - - virtual void OnEventReceived(const ConnectionEstablishedEvent &event); - virtual void OnEventReceived(const ConnectionClosedEvent &event); - virtual void OnEventReceived(const ConnectionBrokenEvent &event); - virtual void OnEventReceived(const AsyncCallEvent &event); - virtual void OnEventReceived(const CloseAceSettingsConnectionEvent &event); - virtual void OnEventReceived(const AceSettingsSendDataEvent &event); - - void closeConnection(); - void deatachListeners(); - - virtual void sendWidgetsPreferences(); - virtual void sendResourcesPreferences(); - virtual void sendwidgetsSecure(); - - AceSettingsServerIPC(AceSettingsLogic *aceSettingsLogic); - - /** - * @fn virtual void ReceiveWidgetResourcePreference(DPL::RPC::RPCFunction& func) - * @brief Gets WidgetResourcePreference from RPC function - * - * This method parses input RPCFunction and saves widget resource preference - * to DB. - * It changes RPCFunction function value. - * - * - * @param [in] DPL::RPC::RPCFunction& func - * - * @return Nothing - * - */ - virtual void receiveWidgetResourcePreference(DPL::RPC::RPCFunction& func); - - /** - * @fn virtual void ReceiveResourcePreference(DPL::RPC::RPCFunction& func) - * @brief Gets ResourcePreference from RPC function - * - * This method parses input RPCFunction and saves resource preference to DB. - * It changes RPCFunction function value. - * - * - * @param [in] DPL::RPC::RPCFunction& func - * - * @return Nothing - * - */ - virtual void receiveResourcePreference(DPL::RPC::RPCFunction& func); - virtual void receiveWidgetsSecure(DPL::RPC::RPCFunction& func); - - virtual void receiveResetWidgetsPreferences(DPL::RPC::RPCFunction& func); - virtual void receiveResetResourcesPreferences(DPL::RPC::RPCFunction& func); - - AceSettingsLogic *m_aceSettingsLogic; - - // Factory can create instances - friend class AceSettingsServerFactory; -}; - -#endif // WRT_SRC_ACCESS_CONTROL_SERVER_IPC_ACE_SETTINGS_SERVER_IPC_H_ diff --git a/src/access-control/server/ipc/oim_generator.cpp b/src/access-control/server/ipc/oim_generator.cpp deleted file mode 100644 index 06f83e5..0000000 --- a/src/access-control/server/ipc/oim_generator.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file oim_generator.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This is an implementation file for Object-IPC mapper - */ -#include - -namespace OIM { - -#define MESSAGE(name) \ - namespace name { \ - void name::Send(DPL::RPC::RPCFunction& func) { \ - func.AppendArg(MESSAGE_##name##_TYPE); - -#define FIELD(name, type) func.AppendArg(this->name); -#define FIELDV(name, type) func.AppendArg(this->name.size()); \ - for(name##Iterator it = this->name.begin(); \ - it != this->name.end(); ++it) \ - { \ - func.AppendArg(*it); \ - } - - -#define STRUCT(name, type) name.Send(func); - -#define STRUCTV(name, type) func.AppendArg(this->name.size()); \ - for(name##Iterator it = this->name.begin(); \ - it != this->name.end(); ++it) \ - { \ - it->Send(func); \ - } - -#define MESSAGE_END }\ - } - -#include "oim_messages" - - - -#undef MESSAGE -#undef FIELD -#undef FIELDV -#undef STRUCT -#undef STRUCTV -#undef MESSAGE_END - - - - - - -#define MESSAGE(name) \ - namespace name { \ - void name::Receive(DPL::RPC::RPCFunction& func) { \ - (void)func; \ - LogDebug("Receive!"); -#define FIELD(name, type) { \ - LogDebug("Consume Field " << STRINGIFY(type) << " "<< STRINGIFY(name) ); \ - type tmp; \ - func.ConsumeArg(tmp); \ - this->name = tmp; \ - LogDebug("Taking " << this->name); \ - LogDebug("Consumed Field " << STRINGIFY(name) ); \ - } -#define FIELDV(name, type) { int size; \ - func.ConsumeArg(size); \ - for(int i = 0; \ - i < size; ++i) \ - { \ - type tmp; \ - func.ConsumeArg(tmp); \ - this->name.push_back(tmp); \ - } \ -} - -#define STRUCT(name, type) { \ - LogDebug("Expecting struct " << STRINGIFY(type)); \ - OIM_MESSAGES oim_type; \ - func.ConsumeArg(oim_type); \ - LogDebug("ClassName is " << oim_type); \ - type::type tmp; \ - tmp.Receive(func); \ - this->name = tmp; \ - } - - - -#define STRUCTV(name, type) { int size; \ - func.ConsumeArg(size); \ - LogDebug("Size:" << size); \ - for(int i = 0; i < size; ++i) \ - { \ - LogDebug("Expecting " << STRINGIFY(type)); \ - OIM_MESSAGES oim_type; \ - func.ConsumeArg(oim_type); \ - LogDebug("ClassName is " << oim_type); \ - Assert(oim_type == MESSAGE_##type##_TYPE && "Wrong ClassNameId sent"); \ - type::type tmp; \ - tmp.Receive(func); \ - this->name.push_back(tmp); \ - } \ -} -#define MESSAGE_END }\ - } - -#include "oim_messages" - - -#undef MESSAGE -#undef FIELD -#undef FIELDV -#undef STRUCT -#undef STRUCTV -#undef MESSAGE_END - -} diff --git a/src/access-control/server/ipc/oim_generator.h b/src/access-control/server/ipc/oim_generator.h deleted file mode 100644 index 4f72ea2..0000000 --- a/src/access-control/server/ipc/oim_generator.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file oim_generator.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This is a header file for Object-IPC mapper - */ - - -#ifndef OIM_GENERATOR_H_ -#define OIM_GENERATOR_H_ - -#include -#include - -#include -#include -#include - -#define STRINGIFY(s) _str(s) -#define _str(s) #s - -namespace OIM -{ - -enum OIM_MESSAGES { - -#define MESSAGE(name) MESSAGE_##name##_TYPE, - -#define FIELD(name, type) -#define FIELDV(name, type) -#define STRUCT(name, type) -#define STRUCTV(name, type) - -#define MESSAGE_END - -#include "oim_messages" - -#undef MESSAGE -#undef FIELD -#undef FIELDV -#undef STRUCT -#undef STRUCTV -#undef MESSAGE_END -}; - -#define MESSAGE(name) \ - namespace name { \ - class name { \ - public: \ - void Send(DPL::RPC::RPCFunction& func); \ - void Receive(DPL::RPC::RPCFunction& func); -#define FIELD(name, type) type name; -#define FIELDV(name, type) std::vector name; \ - typedef std::vector::iterator name##Iterator; - -#define STRUCT(name, type) type::type name; -#define STRUCTV(name, type) std::vector name; \ - typedef std::vector::iterator name##Iterator; - -#define MESSAGE_END }; \ - } - - -#include "oim_messages" - - -#undef MESSAGE -#undef FIELD -#undef FIELDV -#undef STRUCT -#undef STRUCTV -#undef MESSAGE_END - - -} //end of namespace OIM - - - -#endif /* OIM_GENERATOR_H_ */ diff --git a/src/access-control/server/ipc/oim_messages b/src/access-control/server/ipc/oim_messages deleted file mode 100644 index 1285154..0000000 --- a/src/access-control/server/ipc/oim_messages +++ /dev/null @@ -1,48 +0,0 @@ -MESSAGE(ResourcePreference) - FIELD (resource, std::string) - FIELD (preference, Preference) -MESSAGE_END - -MESSAGE(WidgetResourcesSetting) - FIELD (subject, std::string ) - STRUCTV (resourcesCollection, ResourcePreference) -MESSAGE_END - -MESSAGE(WidgetsSettings) - STRUCTV (widgetsCollection, WidgetResourcesSetting) -MESSAGE_END - -MESSAGE(ResourcesSetting) - STRUCTV (resourcesCollection, ResourcePreference) -MESSAGE_END - -MESSAGE(SetResourcePreference) - STRUCT (resourcePreference, ResourcePreference) -MESSAGE_END - -MESSAGE(SetWidgetResourcePreference) - FIELD (subject, std::string ) - STRUCT (resourcePreference, ResourcePreference) -MESSAGE_END - -MESSAGE(WidgetSecure) - FIELD (widgetSecure, bool) -MESSAGE_END - -MESSAGE(AskForWidgetResources) -MESSAGE_END - -MESSAGE(AskForResources) -MESSAGE_END - -MESSAGE(AskForWidgetSecure) -MESSAGE_END - -/** - * Commands for resetting to defaults - */ -MESSAGE(ResetWidgetsPreferences) -MESSAGE_END - -MESSAGE(ResetResourcesPreferences) -MESSAGE_END \ No newline at end of file diff --git a/src/access-control/server/null/ace_settings_server_factory_null.cpp b/src/access-control/server/null/ace_settings_server_factory_null.cpp deleted file mode 100644 index f978e95..0000000 --- a/src/access-control/server/null/ace_settings_server_factory_null.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_server_factory.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a source of server of ACE server NULL factory - */ -#include - -IAceSettingsServerPtr AceSettingsServerFactory::Create( - AceSettingsLogic* /*aceSettingsLogic*/) -{ - return IAceSettingsServerPtr(); -} diff --git a/src/access-control/simple_roaming_agent.cpp b/src/access-control/simple_roaming_agent.cpp deleted file mode 100644 index 587b95c..0000000 --- a/src/access-control/simple_roaming_agent.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file simple_roaming_agent.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @author Lukasz Marek (l.marek@samsung.com) - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief roaming agent - */ - -#include "simple_roaming_agent.h" -#include -#include -#include -#include -IMPLEMENT_SINGLETON(SimpleRoamingAgent) - -SimpleRoamingAgent::SimpleRoamingAgent() -{ - if (vconf_notify_key_changed( - VCONFKEY_TELEPHONY_SVC_ROAM, - vConfChagedCallback, this) < 0) - { - LogError("Cannot add vconf callback [" << - VCONFKEY_TELEPHONY_SVC_ROAM << "]"); - Assert(false && "Cannot add vconf callback"); - } - - int result = 0; - if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &result) != 0) { - LogError("Cannot get current roaming status"); - Assert(false && "Cannot get current roaming status"); - } else { - bool type = (result == VCONFKEY_TELEPHONY_SVC_ROAM_ON); - m_networkType = type ? ROAMING : HOME; - LogInfo("Network type is " << (type ? "ROAMING" : "HOME")); - } - -} - -SimpleRoamingAgent::~SimpleRoamingAgent() -{ - if (vconf_ignore_key_changed( - VCONFKEY_TELEPHONY_SVC_ROAM, - vConfChagedCallback) < 0) - { - LogError("Cannot rm vconf callback [" << - VCONFKEY_TELEPHONY_SVC_ROAM << "]"); - Assert(false && "Cannot remove vconf callback"); - } - -} - -void SimpleRoamingAgent::vConfChagedCallback(keynode_t *keyNode, void *data) -{ - LogInfo("SimpleRoamingAgent::vConfChagedCallback "); - char *key = vconf_keynode_get_name(keyNode); - - if (NULL == key) { - LogWarning("vconf key is null."); - return; - } - SimpleRoamingAgent *agent = static_cast(data); - if (NULL == agent) { - LogError("Bad user arg from vconf lib"); - Assert(false && "Bad user arg from vconf lib"); - return; - } - int result = 0; - if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &result) != 0) { - LogError("Cannot get current roaming status"); - Assert(false && "Cannot get current roaming status"); - } else { - bool type = (result == VCONFKEY_TELEPHONY_SVC_ROAM_ON); - agent->m_networkType = type ? ROAMING : HOME; - LogInfo("Network type is " << (type ? "ROAMING" : "HOME")); - } -} diff --git a/src/access-control/simple_roaming_agent.h b/src/access-control/simple_roaming_agent.h deleted file mode 100755 index 65b0bbe..0000000 --- a/src/access-control/simple_roaming_agent.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file simple_roaming_agent.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief simple roaming agent - */ - -#ifndef WRT_SRC_ACCESS_CONTROL_COMMON_SIMPLE_ROAMING_AGENT_H_ -#define WRT_SRC_ACCESS_CONTROL_COMMON_SIMPLE_ROAMING_AGENT_H_ - -#include -#include -#include -#include - -class SimpleRoamingAgent : DPL::Noncopyable -{ - public: - bool IsRoamingOn() const - { - return ROAMING == m_networkType; - } - - private: - enum NetworkType {ROAMING, HOME}; - - NetworkType m_networkType; - - SimpleRoamingAgent(); - virtual ~SimpleRoamingAgent(); - - static void vConfChagedCallback(keynode_t *keyNode, void *userParam); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton SimpleRoamingAgentSingleton; - -#endif//WRT_SRC_ACCESS_CONTROL_COMMON_SIMPLE_ROAMING_AGENT_H_ diff --git a/src/arch/CMakeLists.txt b/src/arch/CMakeLists.txt deleted file mode 100644 index 2f421b9..0000000 --- a/src/arch/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Pawel Sikorski (p.sikorski@samsung.com) -# @version 1.0 -# @brief -# \ No newline at end of file diff --git a/src/arch/DESCRIPTION b/src/arch/DESCRIPTION deleted file mode 100644 index 742f6f4..0000000 --- a/src/arch/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -architecture specific files diff --git a/src/common/DESCRIPTION b/src/common/DESCRIPTION deleted file mode 100644 index f29801c..0000000 --- a/src/common/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -Common definitions, global settings, small utilities diff --git a/src/common/ace_settings_address.h b/src/common/ace_settings_address.h deleted file mode 100644 index 8c1027f..0000000 --- a/src/common/ace_settings_address.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_settings_address.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This is a header for default ACE settings address - */ -#ifndef WRT_SRC_COMMON_ACE_SETTINGS_ADDRESS_H_ -#define WRT_SRC_COMMON_ACE_SETTINGS_ADDRESS_H_ - -namespace AceSettings { -char const * const DefaultAddress = "/tmp/wrt_ace_settings"; -} // namespace AceSettings - -#endif // WRT_SRC_COMMON_ACE_SETTINGS_ADDRESS_H_ diff --git a/src/common/force_stop.cpp b/src/common/force_stop.cpp deleted file mode 100644 index 47b7a72..0000000 --- a/src/common/force_stop.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file force_stop.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This file contains implementation of killing widget. - */ -#include - - -#include -#include // for opendir(), readdir(), closedir() - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace Utils { -namespace { -typedef std::vector PidCollection; -PidCollection findPIDFromWidgetHandle(int widgetHandle) -{ - const static char procDir[] = "/proc/"; - const static char cmdline[] = "/cmdline"; - - PidCollection pidCollection; - - DIR* dir = opendir(procDir); - if (NULL == dir) { - LogWarning("Cannot open directory " << procDir); - return pidCollection; - } - - struct dirent* dirEntry; - - // name of widget being run is: - - - WrtDB::WidgetDAOReadOnly dao(widgetHandle); - DPL::OptionalString pkgname = dao.getPkgname(); - std::stringstream out; - out << pkgname << "/" << WrtDB::GlobalConfig::GetUserWidgetExecPath() - << "/" << widgetHandle; - - std::string searchedName(out.str()); - while ((dirEntry = readdir(dir))) { - if (DT_DIR == dirEntry->d_type) { - std::istringstream iss(dirEntry->d_name); - pid_t pid; - iss >> pid; - if (iss.fail()) { - continue; - } - - //build full path - std::string fullPath(procDir); - fullPath += dirEntry->d_name; - fullPath += cmdline; - - std::ifstream cmdlineFile(fullPath); - - if (!cmdlineFile.is_open()) { - LogWarning("Couldn't open file"); - continue; - } - - std::string invocationText; - if (!getline(cmdlineFile, invocationText)) { - continue; - } - - bool isPrefix = searchedName.length() <= invocationText.length() && - std::equal(searchedName.begin(), - searchedName.end(), - invocationText.begin()); - if (isPrefix) { - LogInfo("Found process to kill: " << pid); - pidCollection.push_back(pid); - } - } - } - closedir(dir); - return pidCollection; -} - -} // end of anonymous namespace - -void killWidget(int widgetHandle) -{ - PidCollection pidCollection = findPIDFromWidgetHandle(widgetHandle); - FOREACH(pid, pidCollection) { - kill(*pid, SIGKILL); - } -} - -} // end of namespace Utils diff --git a/src/common/force_stop.h b/src/common/force_stop.h deleted file mode 100644 index 36dae75..0000000 --- a/src/common/force_stop.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file force_stop.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This file contains declaration of killing widget. - */ - -#ifndef SRC_COMMON_FORCE_STOP_H_ -#define SRC_COMMON_FORCE_STOP_H_ - -namespace Utils { -void killWidget(int widgetHandle); -} // end of namespace Utils - -#endif /* SRC_COMMON_FORCE_FORCE_STOP_H_ */ diff --git a/src/common/new_strdup.h b/src/common/new_strdup.h deleted file mode 100644 index 86a9672..0000000 --- a/src/common/new_strdup.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file new_strdup.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of the stdup with new operator - */ - -#ifndef SRC_COMMON_NEW_STRDUP_H_ -#define SRC_COMMON_NEW_STRDUP_H_ - -inline char* new_strdup(const char *str) -{ - size_t size = strlen(str); - char* ret = new char[size + 1]; - strcpy(ret, str); - return ret; -} - -#endif //SRC_COMMON_NEW_STRDUP_H_ diff --git a/src/common/wrt_db_types.h b/src/common/wrt_db_types.h deleted file mode 100644 index 81c5b53..0000000 --- a/src/common/wrt_db_types.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * wrt_db_types.h - * - * Created on: Nov 21, 2011 - * Author: Krzysztof Jackiewicz(k.jackiewicz@samsung.com) - */ - -#ifndef WRT_DB_TYPES_H_ -#define WRT_DB_TYPES_H_ - -#include - -typedef WrtDB::DbWidgetHandle WidgetHandle; -typedef WrtDB::DbWidgetHandleList WidgetHandleList; - -typedef WrtDB::DbWidgetFeature WidgetFeature; -typedef WrtDB::DbWidgetFeatureSet WidgetFeatureSet; - -typedef WrtDB::DbWidgetSize WidgetSize; - -typedef WrtDB::DbPluginHandle PluginHandle; - -#endif /* WRT_DB_TYPES_H_ */ diff --git a/src/common/wrt_error.h b/src/common/wrt_error.h deleted file mode 100644 index a03f788..0000000 --- a/src/common/wrt_error.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of the error codes of Widget. - * - * @file wrt_error.h - * @author MaQuan (jason.ma@samsung.com) - * @version 0.7 - * @brief This file contains the declaration of the error codes of Widget. - */ - -#ifndef _WRT_ERROR_H_ -#define _WRT_ERROR_H_ - -#ifndef WRT_ERROR_MASKL8 -#define WRT_ERROR_MASKL8 0xFF -#endif - -#ifndef WRT_SET_IDENT -#define WRT_SET_IDENT(X) (X & WRT_ERROR_MASKL8) -#endif - -#ifndef WRT_ERROR_SET -#define WRT_ERROR_SET(X) ((X & WRT_ERROR_MASKL8) << 8) -#endif - -#define WRT_MID_ERRCODE 0x10000 + WRT_SET_IDENT(5) - -/*typedef */ enum -{ - WRT_GENERAL_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(0), - WRT_CONFIG_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(1), - WRT_DOMAIN_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(2), - WRT_JS_EXT_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(3), - WRT_WM_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(4), - WRT_PLUGIN_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(5), - //_ACE support - WRT_SAI_ERRCODE = WRT_MID_ERRCODE + WRT_SET_IDENT(6) -}; - -/** - * WRT error code description - * - * @ WRT_SUCCESS - * There is no error with WRT operations. - * - * @ WRT_ERR_UNKNOW - * An unknow error happened to WRT. - * - * @ WRT_ERR_INVALID_ARG - * Invalid arguments are passed into WRT functions. - * - * @ WRT_ERR_OUT_MEMORY - * No memory space available for WRT. - * - * @ WRT_ERR_NO_DISK_SPACE - * There is no disk space for widget applications. - * - * - * - * - */ -enum WrtError -{ - /* General errors */ - WRT_SUCCESS = WRT_GENERAL_ERRCODE + WRT_ERROR_SET(0x01), - WRT_ERR_UNKNOWN = WRT_GENERAL_ERRCODE + WRT_ERROR_SET(0x02), - WRT_ERR_INVALID_ARG = WRT_GENERAL_ERRCODE + WRT_ERROR_SET(0x03), - WRT_ERR_OUT_OF_MEMORY = WRT_GENERAL_ERRCODE + WRT_ERROR_SET(0x04), - WRT_ERR_NO_DISK_SPACE = WRT_GENERAL_ERRCODE + WRT_ERROR_SET(0x05), - - /* Configuration */ - WRT_CONF_ERR_GCONF_FAILURE = WRT_CONFIG_ERRCODE + WRT_ERROR_SET(0x01), - WRT_CONF_ERR_OBJ_MISSING = WRT_CONFIG_ERRCODE + WRT_ERROR_SET(0x02), - WRT_CONF_ERR_OBJ_EXIST = WRT_CONFIG_ERRCODE + WRT_ERROR_SET(0x03), - WRT_CONF_ERR_START_FILE_MISSING = WRT_CONFIG_ERRCODE + WRT_ERROR_SET(0x04), - WRT_CONF_ERR_EMDB_FAILURE = WRT_CONFIG_ERRCODE + WRT_ERROR_SET(0x05), - WRT_CONF_ERR_EMDB_NO_RECORD = WRT_CONFIG_ERRCODE + WRT_ERROR_SET(0x06), - - /* Domain */ - WRT_DOMAIN_ERR_CREATE_JS_RT = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x01), - WRT_DOMAIN_ERR_MSG_QUEUE = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x02), - - /* Widget manager*/ - WRT_WM_ERR_NOT_INSTALLED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x01), - WRT_WM_ERR_HIGH_VER_INSTALLED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x02), - WRT_WM_ERR_LOW_VER_INSTALLED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x03), - WRT_WM_ERR_INVALID_ARCHIVE = WRT_WM_ERRCODE + WRT_ERROR_SET(0x04), - WRT_WM_ERR_INVALID_CERTIFICATION = WRT_WM_ERRCODE + WRT_ERROR_SET(0x05), - WRT_WM_ERR_NULL_CERTIFICATION = WRT_WM_ERRCODE + WRT_ERROR_SET(0x06), - WRT_WM_ERR_INSTALLATION_CANCEL = WRT_WM_ERRCODE + WRT_ERROR_SET(0x07), - WRT_WM_ERR_ALREADY_INSTALLED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x08), - WRT_WM_ERR_INSTALL_FAILED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x09), - WRT_WM_ERR_DELETE_BY_SERVER = WRT_WM_ERRCODE + WRT_ERROR_SET(0x0a), - WRT_WM_ERR_DEINSTALLATION_CANCEL = WRT_WM_ERRCODE + WRT_ERROR_SET(0x0b), - WRT_WM_ERR_INCORRECT_UPDATE_INFO = WRT_WM_ERRCODE + WRT_ERROR_SET(0x0c), - WRT_WM_ERR_UNREG_FAILED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x0d), - WRT_WM_ERR_REMOVE_FILES_FAILED = WRT_WM_ERRCODE + WRT_ERROR_SET(0x0e), - WRT_WM_ERR_ALREADY_LATEST = WRT_WM_ERRCODE + WRT_ERROR_SET(0x0f), - WRT_WM_ERR_UPDATE_CANCEL = WRT_WM_ERRCODE + WRT_ERROR_SET(0x10), - WRT_WM_ERR_IS_FACTORY_WIDGET = WRT_WM_ERRCODE + WRT_ERROR_SET(0x11), - WRT_WM_ERR_INVALID_APP_ID = WRT_WM_ERRCODE + WRT_ERROR_SET(0x12), - - /* Access Control Manager */ - WRT_SAI_ERR_INIT_ACE_FAILED = WRT_SAI_ERRCODE + WRT_ERROR_SET(0x01) -}; - -enum IGError -{ - /* General errors */ - ERR_AUI_SUCCESS = WRT_SUCCESS, - ERR_WIDGET_INSTALL_SUCCESSFULLY = WRT_SUCCESS, - ERR_WIDGET_UNKNOWN = WRT_ERR_UNKNOWN, - ERR_AUI_ARG_INVALID = WRT_ERR_INVALID_ARG, - ERR_AUI_OUT_OF_MEMORY = WRT_ERR_OUT_OF_MEMORY, - ERR_WIDGET_NO_ENOUGH_SPACE = WRT_ERR_NO_DISK_SPACE, - ERR_AUI_ARG_NULL = WRT_GENERAL_ERRCODE + WRT_ERROR_SET(0x06), - - /* Configuration */ - ERR_AUI_CONF_GCONF_FAILURE = WRT_CONF_ERR_GCONF_FAILURE, - ERR_AUI_OBJ_NOT_FOUND = WRT_CONF_ERR_OBJ_MISSING, - ERR_AUI_OBJ_ALREADY_EXIST = WRT_CONF_ERR_OBJ_EXIST, - ERR_AUI_FILE_NOT_FOUND = WRT_CONF_ERR_START_FILE_MISSING, - ERR_AUI_CONF_EMDB_FAILURE = WRT_CONF_ERR_EMDB_FAILURE, - ERR_AUI_CONF_EMDB_NO_RECORD = WRT_CONF_ERR_EMDB_NO_RECORD, - - /* Domain */ - ERR_DM_JSRT_CRET = WRT_DOMAIN_ERR_CREATE_JS_RT, - ERR_DM_MSG_QUEUE = WRT_DOMAIN_ERR_MSG_QUEUE, - ERR_DM_EVAL_FAIL = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x03), - ERR_DM_INVALID_DOMAIN = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x04), - ERR_DM_INVALID_WIDGET = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x05), - ERR_DM_AC_GENERAL_FAIL = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x06), - ERR_DM_OUT_OF_RESOURCE = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x07), - ERR_DM_AC_SYSTEM_POLICY_CONFLICT = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x08), - ERR_DM_AC_WIDGET_POLICY_CONFLICT = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x09), - ERR_DM_THREAD_CRET = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x0a), - ERR_AUI_INVALID_TYPE = WRT_DOMAIN_ERRCODE + WRT_ERROR_SET(0x0b), - - /* Widget manager*/ - ERR_WIDGET_NOT_INSTALLED = WRT_WM_ERR_NOT_INSTALLED, - ERR_WIDGET_HIGH_VER_INSTALLED = WRT_WM_ERR_HIGH_VER_INSTALLED, - ERR_WIDGET_LOW_VER_INSTALLED = WRT_WM_ERR_LOW_VER_INSTALLED, - ERR_WIDGET_INVALID_ARCHIVE = WRT_WM_ERR_INVALID_ARCHIVE, - ERR_WIDGET_CERTIFICATION_FAILED = WRT_WM_ERR_INVALID_CERTIFICATION, - ERR_WIDGET_NULL_CERTIFICATION = WRT_WM_ERR_NULL_CERTIFICATION, - ERR_WIDGET_INSTALLATION_CANCEL = WRT_WM_ERR_INSTALLATION_CANCEL, - ERR_WIDGET_ALREADY_INSTALLED = WRT_WM_ERR_ALREADY_INSTALLED, - ERR_WIDGET_INSTALL_FAILED = WRT_WM_ERR_INSTALL_FAILED, - ERR_WIDGET_DELETE_BY_SERVER = WRT_WM_ERR_DELETE_BY_SERVER, - ERR_WIDGET_DEINSTALLATION_CANCEL = WRT_WM_ERR_DEINSTALLATION_CANCEL, - ERR_WIDGET_UPDATE_INFO_INCORRECT = WRT_WM_ERR_INCORRECT_UPDATE_INFO, - ERR_WIDGET_UNREG_FAILED = WRT_WM_ERR_UNREG_FAILED, - ERR_WIDGET_REMOVE_FILES_FAILED = WRT_WM_ERR_REMOVE_FILES_FAILED, - ERR_WIDGET_IS_LATEST = WRT_WM_ERR_ALREADY_LATEST, - ERR_WIDGET_UPDATE_CANCEL = WRT_WM_ERR_UPDATE_CANCEL, - ERR_WIDGET_IS_FACTORY_WIDGET = WRT_WM_ERR_IS_FACTORY_WIDGET, - ERR_WIDGET_INVALID_APP_ID = WRT_WM_ERR_INVALID_APP_ID, - ERR_WIDGET_NONE_FILES_EXIST = WRT_WM_ERRCODE + WRT_ERROR_SET(0x13), - ERR_WIDGET_INSTALL_SEARCH_EXCEPTION = WRT_WM_ERRCODE + WRT_ERROR_SET(0x14), - ERR_WIDGET_NOT_INIT = WRT_WM_ERRCODE + WRT_ERROR_SET(0x15), - ERR_WIDGET_NO_ARCHIVE = WRT_WM_ERRCODE + WRT_ERROR_SET(0x16), - ERR_WIDGET_SET_DEFAULT = WRT_WM_ERRCODE + WRT_ERROR_SET(0x17), - ERR_WIDGET_SET_VALUE = WRT_WM_ERRCODE + WRT_ERROR_SET(0x18) -}; - -//Just for debug, d.wei@samsung.com -//#define WRT_WIDGETMGR_TEST - -#define W3C_WORKING_DRAFT_9_NOVEMBER_2006_EXPENDED_SUPPORT - -#define WRT_WIDGET_API_TO_BE_REMOVED -#define WRT_WIDGET_JIL_1_1_API_SUPPORT - -//#define WRT_EXTENDED_WIDGET_API - -#endif /* _WRT_ERROR_H_ */ - diff --git a/src/domain/application_launcher.cpp b/src/domain/application_launcher.cpp deleted file mode 100644 index 372d8e2..0000000 --- a/src/domain/application_launcher.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file application_launcher.cpp - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Implementation file for application launcher - */ - -#include "application_launcher.h" -#include -#include -#include -#include -#include - -IMPLEMENT_SINGLETON(ApplicationLauncher) - -using namespace WrtDB; - -namespace { -const char * const BUNDLE_URL = "url"; -const char * const BUNDLE_PATH = "path"; -const char * const BUNDLE_COOKIE = "cookie"; - -const char * const SCHEME_TYPE_YOUTUBE = "vnd.youtube"; -const char * const SCHEME_TYPE_RTSP = "rtsp"; -const char * const SCHEME_TYPE_HTML5_VIDEO = "html5video"; -} - -ApplicationLauncher::ApplicationLauncher() -{ -} - -ApplicationLauncher::~ApplicationLauncher() -{ -} - -void ApplicationLauncher::OnEventReceived( - const ApplicationLauncherEvents::LaunchApplicationByURI &event) -{ - LogDebug("Lanuching default application for URI: " << event.GetArg0()); - std::string uri = DPL::ToUTF8String(event.GetArg0()); - int code = aul_open_content(uri.c_str()); - switch (code) { - case AUL_R_OK: - LogDebug("\tLaunched with success"); - break; - case AUL_R_ERROR: - LogDebug("\tAUL_R_ERROR - general error or no found mimetype"); - break; - case AUL_R_EINVAL: - LogDebug("\tAUL_R_EINVAL - invalid argument(content) passed"); - break; - case AUL_R_ECOMM: - LogDebug("\tAUL_R_ECOM - internal AUL IPC error"); - break; - default: - LogDebug("\tunknown error code: " << code); - break; - } -} - -void ApplicationLauncher::OnEventReceived( - const ApplicationLauncherEvents::LaunchApplicationByAppService &event) -{ - int result; - bundle *args = event.GetArg0(); - appsvc_res_fn responseCallback = event.GetArg1(); - void *userData = event.GetArg2(); - result = appsvc_run_service(args, 0, responseCallback, userData); - - if (result != APPSVC_RET_OK) - LogError("Failed to run AppService"); -} - -void ApplicationLauncher::OnEventReceived( - const ApplicationLauncherEvents::LaunchApplicationByPkgname &event) -{ - using namespace ApplicationLauncherPkgname; - LogDebug("LaunchApplicationByPkgname"); - std::string pkgName(event.GetArg0()); - - if (PKG_NAME_DOWNLOAD_PROVIDER == pkgName) { - std::string url(event.GetArg1()); - // This value needs for checking video, music contents later. - //std::string mime_type(event.GetArg2()); - std::string cookie(event.GetArg3()); - - if ("null" == url) { - LogError("url is empty"); - return; - } - - bundle* bundle = bundle_create(); - - if (NULL == bundle) { - LogError("Fail to create bundle"); - return; - } - if (bundle_add(bundle, BUNDLE_URL, url.c_str())) { - LogError("Fail to add bundle for path"); - bundle_free(bundle); - return; - } - if (cookie != "null") { - if (bundle_add(bundle, BUNDLE_COOKIE, cookie.c_str())) { - LogError("Fail to add bundle for cookie"); - bundle_free(bundle); - return; - } - } - if (aul_launch_app(PKG_NAME_DOWNLOAD_PROVIDER.c_str(), bundle) < 0) { - LogError("aul_launch_app is failed"); - } - bundle_free(bundle); - } else if (PKG_NAME_VIDEO_PLAYER == pkgName) { - if (aul_app_is_running(PKG_NAME_VT_MAIN.c_str())) - { - LogError("video-call is running......"); - return; - } - - std::string scheme(event.GetArg1()); - std::string uri(event.GetArg2()); - std::string cookie(event.GetArg3()); - std::string videoPath; - int aulRVal = AUL_R_ERROR; - - if ("null" == scheme) { - LogError("scheme is empty"); - return; - } - if ("null" == uri) { - LogError("uri is empty"); - return; - } - - LogDebug("scheme: " << scheme); - if (SCHEME_TYPE_YOUTUBE == scheme) { - YouTubeHD *youtube = new YouTubeHD(m_widgetHandle); - videoPath = youtube->getYouTubeHD(uri.c_str()); - delete youtube; - } else if (SCHEME_TYPE_RTSP == scheme || - (SCHEME_TYPE_HTML5_VIDEO == scheme)) - { - videoPath = uri; - } else { - LogError("scheme is invalid!!"); - return; - } - - bundle *bundle = bundle_create(); - if (bundle == NULL) { - LogError("Fail to create bundle"); - bundle_free(bundle); - return; - } - - if (videoPath.empty()) { - LogError("getYouTubeHD is FAILED!!"); - bundle_free(bundle); - return; - } - LogDebug("videoPath: " << videoPath); - if (bundle_add(bundle, BUNDLE_PATH, videoPath.c_str()) < 0) { - LogError("bundle_add is FAIL!!"); - bundle_free(bundle); - return; - } - - if (SCHEME_TYPE_HTML5_VIDEO == scheme) { - if ("null" != cookie) { - LogDebug("cookie: " << cookie); - if (bundle_add(bundle, BUNDLE_COOKIE, cookie.c_str()) < 0) { - LogError("cookie is empty"); - bundle_free(bundle); - return; - } - } - } - - aulRVal = aul_launch_app(PKG_NAME_VIDEO_PLAYER.c_str(), bundle); - if (AUL_R_OK > aulRVal) { - LogError("aul_launch_app is failed! aulRVal: " << aulRVal); - } - if (bundle_free(bundle)) { - LogDebug("bundle_free is FAILED!!"); - } - - } -} - -void ApplicationLauncher::setWidgetHandle(const WidgetHandle widgetHandle) -{ - LogDebug("widgetHandle: " << widgetHandle); - m_widgetHandle = widgetHandle; -} diff --git a/src/domain/application_launcher.h b/src/domain/application_launcher.h deleted file mode 100644 index ab69b80..0000000 --- a/src/domain/application_launcher.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file application_launcher.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Header file for application launcher - */ - -#ifndef APPLICATION_LAUNCHER_H -#define APPLICATION_LAUNCHER_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace ApplicationLauncherEvents { -DECLARE_GENERIC_EVENT_1(LaunchApplicationByURI, DPL::String) -DECLARE_GENERIC_EVENT_3(LaunchApplicationByAppService, - bundle*, - appsvc_res_fn, - void*) -DECLARE_GENERIC_EVENT_4(LaunchApplicationByPkgname, - std::string, - std::string, - std::string, - std::string) - - -} //namespace ApplicationLauncherEvents - -namespace ApplicationLauncherPkgname { - const std::string PKG_NAME_DOWNLOAD_PROVIDER = - std::string( - WrtDB::GlobalConfig::GetPkgnamePrefix()) + "download-provider"; - const std::string PKG_NAME_VIDEO_PLAYER = - std::string(WrtDB::GlobalConfig::GetPkgnamePrefix()) + "video-player"; - const std::string PKG_NAME_VT_MAIN = - std::string(WrtDB::GlobalConfig::GetPkgnamePrefix()) + "vtmain"; -} // namespace ApplicationLauncherPkgname - -class ApplicationLauncher : - public DPL::Event::Controller::Type> -{ - public: - ApplicationLauncher(); - virtual ~ApplicationLauncher(); - void setWidgetHandle(const WidgetHandle widgetHandle); - - protected: - virtual void OnEventReceived( - const ApplicationLauncherEvents::LaunchApplicationByURI &event); - virtual void OnEventReceived( - const ApplicationLauncherEvents:: - LaunchApplicationByPkgname &event); - virtual void OnEventReceived( - const ApplicationLauncherEvents:: - LaunchApplicationByAppService &event); - - private: - WidgetHandle m_widgetHandle; -}; - -typedef DPL::Singleton ApplicationLauncherSingleton; - -#endif //APPLICATION_LAUNCHER_H diff --git a/src/domain/child_protection/DESCRIPTION b/src/domain/child_protection/DESCRIPTION deleted file mode 100644 index b8a9425..0000000 --- a/src/domain/child_protection/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -Child protection (Parental Mode) diff --git a/src/domain/child_protection/child_protection_agent.cpp b/src/domain/child_protection/child_protection_agent.cpp deleted file mode 100644 index 70db5da..0000000 --- a/src/domain/child_protection/child_protection_agent.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file child_protection_agent.cpp - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief child protection agent - */ - -#include "child_protection_agent.h" -#include -#include -IMPLEMENT_SINGLETON(ChildProtection::Logic) - -namespace ChildProtection -{ - -Logic::Logic() -{ - // TODO: Read protection state from DAO? - - // TODO: Register listener for UI protocol messages? -} - -Logic::~Logic() -{ -} - -bool Logic::IsEnabledFiltering(const WidgetModel *a_widgetModel) const -{ - FREE_LOGIC_LOCK - - Configuration::const_iterator iter = m_widgets.find(a_widgetModel); - - if (iter != m_widgets.end()) { - return iter->second.enabled; - } else { - return false; - } -} - -bool Logic::IsUriForbidden(const WidgetModel */*a_widgetModel*/, - const char *a_url) -const -{ - FREE_LOGIC_LOCK - - LogDebug("Filter URI for child protection" << a_url); - WarpIRI iri; - for (UriFilters::const_iterator iter = m_uriFilters.begin(); - iter != m_uriFilters.end(); ++iter) { - iri.set(a_url, false); - if (iter->isSubDomain(iri)) { - LogDebug("URI forbidden for children"); - return true; - } - } - return false; -} - -void Logic::SetBlackList(const WidgetModel */*a_widgetModel*/, - const WrtDB::ChildProtection::BlackList& a_IriList) -{ - using namespace WrtDB::ChildProtection; - FREE_LOGIC_LOCK - - WarpIRI iri; - for (BlackList::const_iterator iter = a_IriList.begin(); - iter != a_IriList.end(); ++iter) { - iri.set(*iter, true); - if (!iri.isAccessDefinition()) { - Throw(Exception::InvalidFilterDefinition); - } - LogDebug("New rule added to child protection blacklist: " << *iter); - m_uriFilters.push_back(iri); - } -} - -void Logic::Register(const WidgetModel *a_widgetModel, - const WrtDB::ChildProtection::Record& a_record) -{ - FREE_LOGIC_LOCK - - LogInfo("Widget " << a_widgetModel << " registered"); - std::pair result = - m_widgets.insert(std::make_pair(a_widgetModel, a_record)); - Assert(result.second && "Widget has been already added"); -} - -void Logic::Unregister(const WidgetModel *a_widgetModel) -{ - FREE_LOGIC_LOCK - - Configuration::iterator it = m_widgets.find(a_widgetModel); - Assert(it != m_widgets.end() && "Widget hasn't been added"); - m_widgets.erase(it); - m_powderDescriptions.erase(a_widgetModel); -} - -void Logic::SetPowderDescription(const WidgetModel *a_widgetModel, - const WrtDB::Powder::Description& a_description) -{ - FREE_LOGIC_LOCK - - LogInfo("Powder description set for widget " << a_widgetModel); - std::pair result = - m_powderDescriptions.insert(std::make_pair(a_widgetModel, - a_description)); - Assert(result.second && - "Widget description has been already added"); -} - -void Logic::SetPowderRules(const WidgetModel *a_widgetModel, - const WrtDB::ChildProtection::PowderRules& a_rules) -{ - FREE_LOGIC_LOCK - - LogInfo("Powder rules set for widget " << a_widgetModel); - m_rules = a_rules; -} - -bool Logic::IsWidgetAllowed(const WidgetModel *a_widgetModel) const -{ - FREE_LOGIC_LOCK - - LogInfo("Powder processing for widget " << a_widgetModel); - PowderDescriptions::const_iterator descIter = - m_powderDescriptions.find(a_widgetModel); - Assert(descIter != m_powderDescriptions.end()); - WrtDB::ChildProtection::PowderRules::ResultPair result = - m_rules.isDescriptionValid(descIter->second); - if (result.first) { - return true; - } else { - LogWarning("Widget is not allowed for children"); - return false; - } -} -} //namespace ChildProtection - diff --git a/src/domain/child_protection/child_protection_agent.h b/src/domain/child_protection/child_protection_agent.h deleted file mode 100644 index 4a60cc5..0000000 --- a/src/domain/child_protection/child_protection_agent.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file child_protection_agent.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief child protection agent - */ - -#ifndef _CHILD_PROTECTION_AGENT_ -#define _CHILD_PROTECTION_AGENT_ - -#include -#include -#include -#include -#include -#include -#include "widget_model.h" -#include "powder_syntax.h" -#include "dpl/optional_typedefs.h" -#include - -#include - -namespace ChildProtection { -//! Filename used by parental filter -//! All forbidden URLs are replaced with this URL -const char ForbiddenUri[] = "file:///usr/etc/wrt/parental.png"; - -//! Returns true if privacy is rules are not break -//TODO: Implement -bool PowderPrivacyCheck(const Powder::Privacy::Digested::Knowledge& privacy); - -class Logic : public FreeLogic -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, InvalidFilterDefinition) - }; - Logic(); - ~Logic(); - - //Global - bool IsParentalModeActive() const - { - FREE_LOGIC_LOCK - - //TODO: Use static DAO function to check it - return false; - } - void Register(const WidgetModel *a_widgetModel, - const WrtDB::ChildProtection::Record& a_record); - void Unregister(const WidgetModel *a_widgetModel); - - //URI filter - bool IsEnabledFiltering(const WidgetModel *a_widgetModel) const; - bool IsUriForbidden(const WidgetModel *a_widgetModel, - const char *a_url) - const; - void SetBlackList(const WidgetModel *a_widgetModel, - const WrtDB::ChildProtection::BlackList& a_IriList); - - //Powder - void SetPowderDescription(const WidgetModel *a_widgetModel, - const WrtDB::Powder::Description& a_description); - void SetPowderRules(const WidgetModel *a_widgetModel, - const WrtDB::ChildProtection::PowderRules& a_description); - bool IsWidgetAllowed(const WidgetModel *a_widgetModel) const; - - private: - //URI filter - typedef std::map Configuration; - Configuration m_widgets; - typedef std::vector UriFilters; - UriFilters m_uriFilters; - - //Powder - typedef std::map - PowderDescriptions; - PowderDescriptions m_powderDescriptions; - - WrtDB::ChildProtection::PowderRules m_rules; -}; - -typedef DPL::Singleton LogicSingleton; -} //namespace ChildProtection - -#endif //ifndef _CHILD_PROTECTION_AGENT_ - diff --git a/src/domain/common_error.h b/src/domain/common_error.h deleted file mode 100644 index 586a337..0000000 --- a/src/domain/common_error.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file common_error.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for common error definitions - */ -#ifndef COMMON_ERROR_H -#define COMMON_ERROR_H - -namespace CommonError { -enum Type -{ - WrtSuccess, ///< Success - - HandleNotFound, ///< Widget handle was not found - AlreadyRunning, ///< Widget is already running - AlreadyStopped, ///< Widget is already stopped - InvalidLanguage, ///< Widget is invalid in current locales - StillAuthorizing, ///< Widget is still autorizing and has not yet finished it - EarlyKilled, ///< Widget was early killed during launch - AccessDenied, ///< Access denied from ACE - CertificateRevoked, ///< Some certificate was revoked. - /// Widget is not allowed to run. - DatabaseFailure, ///< Wrong database version - NoPath, ///< Required path does not exist - - Unknown ///< Temporary error. Try to not use this. -}; -} - -#endif // COMMON_ERROR_H diff --git a/src/domain/dnet/DESCRIPTION b/src/domain/dnet/DESCRIPTION deleted file mode 100644 index 7366359..0000000 --- a/src/domain/dnet/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -Dnet handling diff --git a/src/domain/dnet/dnet.cpp b/src/domain/dnet/dnet.cpp deleted file mode 100644 index b32412b..0000000 --- a/src/domain/dnet/dnet.cpp +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file dnet.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @author Koeun Choi (koeun.choi@samsung.com) - * @version 1.0 - * @brief dnet support - */ - -#include -#include - -#include "dnet.h" -#include -#include -#include -#include -IMPLEMENT_SINGLETON(Net) - -#ifdef USE_DNET -namespace // anonymous -{ -const char *DNET_CLOSE_RSP_CB = "NetCloseRspCallback"; -const char *DNET_CLOSE_IND_CB = "NetCloseIndCallback"; -} //namespace anonymous -#endif - -Net::Net() -{ -#ifdef USE_DNET - m_connectionStatus = DNET_DISCONNECTED; - m_clientStatus = DNET_CLIENT_NOT_REGISTERED; -#else - -#endif -} - -Net::~Net() -{ -} - -int Net::GetConnectionStatus() const -{ -#ifdef USE_DNET - int status = static_cast(m_connectionStatus); -#else - int status = 0; - vconf_get_int(VCONFKEY_NETWORK_STATUS, &status); -#endif - return status; -} - -#ifdef USE_DNET -NetCMNetworkStatus_t Net::GetNetworkStatus(NetCMNetworkType networkType) -{ - NetCMNetworkStatus_t retStatus = NET_STATUS_UNKNOWN; - NetCMNetworkStatus_t NetStatus; - - int result = net_get_network_status(networkType, &NetStatus); - - if (result == NET_ERR_NONE) { - if (NetStatus == NET_STATUS_UNAVAILABLE) { - LogError("[NET] Service not available"); - } else if (NetStatus == NET_STATUS_AVAILABLE) { - LogDebug("[NET] Service available"); - } else if (NetStatus == NET_STATUS_UNKNOWN) { - LogError("[NET] Service unknown"); - } else { - LogError("[NET] Unknown status"); - } - retStatus = NetStatus; - } else if (result == NET_ERR_INVALID_CLIENT) { - LogError( - "[NET] client is not registered with CM and it cannot use CM services\n"); - } else if (result == NET_ERR_UNKNOWN) { - LogError("[NET] unknown error has occurred"); - } else if (result == NET_ERR_INVALID_PARAM) { - LogError("[NET] parameter value is invalid."); - } else { - LogError("[NET] unknown return type"); - } - - LogDebug("[NET] dnetGetNetworkStatus Interface: " << networkType << - " status is: " << retStatus); - - return retStatus; -} - -void Net::SetConnectionStatus(NetConnectionStatus connStatus) -{ - m_connectionStatus = connStatus; - LogInfo("[NET] 0:discon, 1:trytocon, 2:trytodiscon, 3:CON, 4:conerr"); - LogDebug("[NET] status : " << m_connectionStatus); -} - -int Net::GetClientStatus() const -{ - int status = static_cast(m_clientStatus); - LogInfo("[NET] 0:discon, 1:trytocon, 2:trytodiscon, 3:CON, 4:conerr"); - LogDebug("[NET] status : " << status); - return status; -} - -void Net::SetClientStatus(NetClientStatus connStatus) -{ - m_clientStatus = connStatus; -} - -void Net::NetOpenRspCallback(const NetErr_t error, - const NetDevInfo_t *dev, - int transportErrorCode, - void *userData) -{ - LogDebug( - "[NET] NetOpenRspCallback: error: " << error << - " transportErrorCode: " << - transportErrorCode); - Net *dnetInstance = static_cast(userData); - if (error == NET_ERR_NONE) { - LogInfo("[NET] Successful PDP Activation"); - /************************** getting device info **********************************/ - LogDebug("[NET] = Device name " << dev->DevName); - LogDebug("[NET] = Profile id " << dev->Profileid); - /************* getting proxy value ******************/ - //TODO: ask dnet team if net_get_current_proxy returns string which needs to be duplicated and how long it lives - std::string dnetProxy = net_get_current_proxy(); - LogDebug( - "[NET] = Proxy Addr = [" << dnetProxy << "] will set on webkit"); - ewk_network_proxy_uri_set(dnetProxy.c_str()); - /***************************************************/ - dnetInstance->SetConnectionStatus(DNET_CONNECTED); - } else { - LogError("[NET] dnet connect fail. "); - dnetInstance->SetConnectionStatus(DNET_CONNECT_ERROR); - } - if (dnetInstance->m_dnetOpenCallbackPtr) { - dnetInstance->m_dnetOpenCallbackPtr(dnetInstance->m_open, error); - } -} - -void Net::NetCloseRspCallback(NetErr_t error, - int transportErrorCode, - void *userData) -{ - LogDebug("[NET] NetCloseRspCallback: error: " << error << - " transportErrorCode: " << transportErrorCode); - - Net *dnetInstance = static_cast(userData); - dnetInstance->NetConnectionClosed(DNET_CLOSE_RSP_CB, - userData, - error, - transportErrorCode); -} - -void Net::NetKillRspCallback(NetErr_t error, - int transportErrorCode, - void *userData) -{ - LogDebug("[NET] NetKillRspCallback: error: " << error << - " transportErrorCode: " << transportErrorCode); - Net *dnetInstance = static_cast(userData); - dnetInstance->NetConnectionClosed(DNET_CLOSE_RSP_CB, - userData, - error, - transportErrorCode); -} - -void Net::NetCloseIndCallback(NetErr_t error, - int transportErrorCode, - void *userData) -{ - LogDebug("[NET] NetCloseIndCallback: error: " << error << - " transportErrorCode: " << transportErrorCode); - // dnet is disconnected by some reasons. - Net *dnetInstance = static_cast(userData); - dnetInstance->NetConnectionClosed(DNET_CLOSE_IND_CB, - userData, - error, - transportErrorCode); - //cleaning up network session is needed!!!! for Wifi<->3G switching - ewk_network_session_requests_cancel(); - //dnetInstance->Open(); -} - -void Net::NetNetStatusCallback(NetStatusInfo_t *net_status, - void *userData) -{ - (void)userData; - LogDebug( - "[NET] NetNetStatusCallback transportType: " << - net_status->transportType << - " NwkStatus: " << net_status->NwkStatus << - " PDPStatus: " << net_status->PDPStatus << - " WiFiStatus: " << net_status->WiFiStatus); -} - -void Net::NetIpChangeIndCallback(const NetDevInfo_t *dev, - int transportErrorCode, - void */*userData*/) -{ - LogDebug("[NET] NetIpChangeIndCallback DevName: " << dev->DevName << - " transportErrorCode: " << transportErrorCode); - - // 3g -> wifi automatically set by dnet - //cleaning up network session is needed!!!! for Wifi<->3G switching - ewk_network_session_requests_cancel(); - - /************* getting proxy value ******************/ - //TODO: ask dnet team if net_get_current_proxy returns string which needs to be duplicated and how long it lives - std::string dnetProxy = net_get_current_proxy(); - LogDebug("[NET] = Proxy Addr = [" << dnetProxy << "] will set on webkit"); - ewk_network_proxy_uri_set(dnetProxy.c_str()); - /***************************************************/ -} - -void Net::NetProfileModIndCallback(const NetErr_t error, - int transportErrorCode, - void */*userData*/) -{ - LogDebug("[NET] error: " << error << - ", transportErrorCode: " << transportErrorCode); - - //cleaning up network session is needed!!!! for Wifi<->3G switching - ewk_network_session_requests_cancel(); - - /************* getting proxy value ******************/ - //TODO: ask dnet team if net_get_current_proxy returns string which needs to be duplicated and how long it lives - std::string dnetProxy = net_get_current_proxy(); - LogDebug("[NET] = Proxy Addr = [" << dnetProxy << "] will set on webkit"); - ewk_network_proxy_uri_set(dnetProxy.c_str()); - /***************************************************/ -} - -void Net::NetConnectionClosed(const char* str_callback, - void *userData, - NetErr_t error, - int transportErrorCode) -{ - (void)userData; - LogDebug("[NET] str_callback: " << str_callback << " : error: " << error << - " transportErrorCode: " << transportErrorCode); - SetConnectionStatus(DNET_DISCONNECTED); - if (error == NET_ERR_NONE) { - if (m_dnetCloseCallbackPtr) { - m_dnetCloseCallbackPtr(m_close, error); - } - } -} - -bool Net::Register() -{ - int ret; - - /******** register callbacks *****************/ - struct net_event_callbacks dnet_cm_evt_cb; - dnet_cm_evt_cb.on_open_rsp = NetOpenRspCallback; - dnet_cm_evt_cb.on_close_rsp = NetCloseRspCallback; - dnet_cm_evt_cb.on_kill_rsp = NetKillRspCallback; - dnet_cm_evt_cb.on_close_ind = NetCloseIndCallback; - dnet_cm_evt_cb.on_suspend_ind = NULL; - dnet_cm_evt_cb.on_resume_ind = NULL; - dnet_cm_evt_cb.on_net_status = NetNetStatusCallback; - dnet_cm_evt_cb.on_ip_change = NetIpChangeIndCallback; - dnet_cm_evt_cb.on_tunnel_resp = NULL; - dnet_cm_evt_cb.on_profile_mod_ind = NetProfileModIndCallback; - /***********************************************************/ - - ret = net_register_client(&dnet_cm_evt_cb, this); - if (ret == NET_ERR_NONE) { - SetClientStatus(DNET_CLIENT_REGISTERED); - return true; - } - LogDebug("[NET] Register NetClient: " << ret); - return false; -} - -int Net::Deregister() -{ - int err = -1; - int retVal = 0; - - err = net_deregister_client(); - if (err == NET_ERR_NONE) { - SetClientStatus(DNET_CLIENT_NOT_REGISTERED); - } else { - LogDebug("[NET] dnet Close: error deregistering client: " << err); - retVal = -1; - } - - return retVal = -1; -} - -bool Net::IsConnected() const -{ - if (m_connectionStatus == DNET_CONNECTED) { - return true; - } - return false; -} - -bool Net::Open(OpenCallback openCallbackPtr, - void *data) -{ - int ret = NET_ERR_NONE; - m_dnetOpenCallbackPtr = openCallbackPtr; - m_open = data; - - LogDebug("[NET] dnet connection status : " << m_connectionStatus); - if (m_connectionStatus == DNET_CONNECTED) { - LogDebug("[NET] dnet is already connected"); - return false; - } - - //register is needed only one time. - if (GetClientStatus() == DNET_CLIENT_NOT_REGISTERED) { - LogDebug("[NET] dnet Open : client not registered, registering it"); - if (Register() == false) { - return false; - } - } - - LogDebug("[NET] dnet Open: opening connection"); - SetConnectionStatus(DNET_TRY_TO_CONNECT); - - // NET_DEFAULT_TYPE means that it can be WIFI(if available) or 3G - ret = net_open_connection(NET_DEFAULT_TYPE); - if (ret == NET_ERR_NONE) { - LogDebug("[NET] dnet Open : connection initializes"); - return true; - } else if (ret == NET_ERR_ACTIVE_CONNECTION_EXISTS) { - LogDebug("[NET] dnet Open : aleady connected"); - SetConnectionStatus(DNET_CONNECTED); - return false; - } else { - SetConnectionStatus(DNET_CONNECT_ERROR); - LogDebug("[NET] dnet Open : connection initialize error = " << ret); - return false; - } - return false; -} - -int Net::Close(CloseCallback closeCallbackPtr, - void *data) -{ - int err = NET_ERR_NONE; - m_dnetCloseCallbackPtr = closeCallbackPtr; - m_close = data; - - int retVal = 0; - - /**************** closing connection **************************/ - if (!net_is_connected()) { - LogDebug("[NET] net is not connected.."); - } - - LogDebug("[NET] dnet Close : connection close"); - SetConnectionStatus(DNET_TRY_TO_DISCONNECT); - err = net_close_connection(); - if (err != NET_ERR_NONE) { - LogDebug("[NET] dnet Close: error closing connection: " << err); - retVal = -1; - } - /**************************************************************/ - - return retVal; -} -#else -void Net::RegisterIpChangedCallback() -{ - vconf_notify_key_changed(VCONFKEY_NETWORK_IP, IpChangedCallback, NULL); -} - -void Net::DeregisterIpChangedCallback() -{ - vconf_ignore_key_changed(VCONFKEY_NETWORK_IP, IpChangedCallback); -} -void Net::IpChangedCallback(keynode_t* /*key*/, - void* /*data*/) -{ - LogDebug("[NET] Proxy=[" << vconf_get_str(VCONFKEY_NETWORK_PROXY) << "]"); - ewk_network_proxy_uri_set(vconf_get_str(VCONFKEY_NETWORK_PROXY)); -} - -#endif diff --git a/src/domain/dnet/dnet.h b/src/domain/dnet/dnet.h deleted file mode 100644 index 8ce9050..0000000 --- a/src/domain/dnet/dnet.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file dnet.h - * @author Koeun Choi (koeun.choi@samsung.com) - * @version 1.0 - * @brief net support - */ - -#ifndef NET_H -#define NET_H - -#include -#ifdef USE_DNET -#include -#include -#include -#endif -#include -#include - -class Net -{ -#ifdef USE_DNET - //dnet callback - static void NetOpenRspCallback(const NetErr_t error, - const NetDevInfo_t *dev, - int transportErrorCode, - void *userData); - static void NetCloseRspCallback(NetErr_t error, - int transportErrorCode, - void *userData); - static void NetKillRspCallback(NetErr_t error, - int transportErrorCode, - void *userData); - static void NetCloseIndCallback(NetErr_t error, - int transportErrorCode, - void *userData); - static void NetNetStatusCallback(NetStatusInfo_t *net_status, - void *userData); - static void NetIpChangeIndCallback(const NetDevInfo_t *dev, - int transportErrorCode, - void *userData); - static void NetProfileModIndCallback(const NetErr_t error, - int transportErrorCode, - void *userData); -#else - public: - static void RegisterIpChangedCallback(); - static void DeregisterIpChangedCallback(); - private: - static void IpChangedCallback(keynode_t *key, - void *data); -#endif - -#ifdef USE_DNET - private: - enum NetConnectionStatus - { - DNET_DISCONNECTED, - DNET_TRY_TO_CONNECT, - DNET_TRY_TO_DISCONNECT, - DNET_CONNECTED, - DNET_CONNECT_ERROR - }; - - enum NetClientStatus - { - DNET_CLIENT_NOT_REGISTERED, - DNET_CLIENT_REGISTERED - }; - - NetConnectionStatus m_connectionStatus; - NetClientStatus m_clientStatus; - - //callback - typedef void (*OpenCallback)(void *, int); - typedef void (*CloseCallback)(void *, int); - - typedef void (*NetOpenCallback)(void *, int); - typedef void (*NetCloseCallback)(void *, int); - - bool m_indChanged; - void *m_open; - void *m_close; - - NetOpenCallback m_dnetOpenCallbackPtr; - NetCloseCallback m_dnetCloseCallbackPtr; - - //status - NetCMNetworkStatus_t GetNetworkStatus(NetCMNetworkType networkType); - void SetConnectionStatus(NetConnectionStatus connStatus); - int GetClientStatus() const; - void SetClientStatus(NetClientStatus connStatus); - - void NetConnectionClosed(const char* str_callback, - void *userData, - NetErr_t error, - int transportErrorCode); - - public: - bool IsConnected() const; - - //Register/Deregister - bool Register(); - int Deregister(); - - //Connect/Disconnect - bool Open(OpenCallback openCallbackPtr = 0, - void *data = NULL); - int Close(CloseCallback closeCallbackPtr = 0, - void *data = NULL); -#endif - public: - //Constructor/Destructor - Net(); - ~Net(); - int GetConnectionStatus() const; -}; - -typedef DPL::Singleton NetSingleton; - -#endif /* NET_H_ */ diff --git a/src/domain/efl/AutoSavePopup.cpp b/src/domain/efl/AutoSavePopup.cpp deleted file mode 100644 index 8559652..0000000 --- a/src/domain/efl/AutoSavePopup.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* @file AutoSavePopup.cpp - * @author Soyoung Kim (sy037.kim@samsung.com) - * @version 1.0 - * @brief Implementation of popup for AutoSave - * - */ - -#include -#include -#include "AutoSavePopup.h" -#include - -namespace { -const char AUTOSAVE_ASK_MSG[] = "Do you want to remember the password on "; -const char AUTOSAVE_ASK_TITLE[] = "Ask to save ID, password"; -} - -using namespace WrtDB; - -void AutoSavePopup::checkAutoSave(const DPL::String &url, - const GlobalDAO::AutoSaveData &userdata) -{ - LogDebug("Enter"); - bool answer = PopupInvoker().askYesNo(AUTOSAVE_ASK_TITLE, AUTOSAVE_ASK_MSG); - - if (answer) { - LogDebug("Answer : YES, Regist Id, Password for auto save"); - GlobalDAO::SetAutoSaveIdPasswd(url, userdata); - } else { - LogDebug("Answer : NO, Do not Regist Id, Password"); - } - LogDebug("Exit"); -} diff --git a/src/domain/efl/AutoSavePopup.h b/src/domain/efl/AutoSavePopup.h deleted file mode 100644 index 7ef104f..0000000 --- a/src/domain/efl/AutoSavePopup.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* @file autosavePopup.h - * @author Soyoung Kim (sy037.kim@samsung.com) - * @version 1.0 - * - */ - -#ifndef WRT_SRC_DOMAIN_EFL_AUTOSAVE_POPUP_H_ -#define WRT_SRC_DOMAIN_EFL_AUTOSAVE_POPUP_H_ - -#include -#include -#include - -class AutoSavePopup -{ - public: - void checkAutoSave(const DPL::String &url, - const WrtDB::GlobalDAO::AutoSaveData &userdata); -}; - -#endif //WRT_SRC_DOMAIN_EFL_AUTOSAVE_POPUP_H_ diff --git a/src/domain/efl/CommunicationBox.cpp b/src/domain/efl/CommunicationBox.cpp deleted file mode 100644 index 6ddc84c..0000000 --- a/src/domain/efl/CommunicationBox.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* @file CommunicationBox.cpp - * @author Justyna Mejzner (j.kwiatkowsk@samsung.com) - * @version 1.0 - * - */ -#include "CommunicationBox.h" -#include -#include - -void CommunicationBox::showAsync( - const Prompt::PromptModel::PromptType promptType, - const std::string& mainLabel, - const std::vector& buttonLabels, - const DPL::OptionalString& checkLabel, - ResponseDelegate callback, - void* userdata) -{ - m_callback = callback; - m_userdata = userdata; - m_promptType = promptType; - using namespace DPL::Popup; - - CtrlPopupPtr popup = PopupControllerSingleton::Instance().CreatePopup(); - popup->Append(new PopupObject::Label(mainLabel)); - - if (!!checkLabel) - { - popup->Append(new PopupObject::Check(DPL::ToUTF8String(*checkLabel))); - } - - for (size_t questionIndex = 0; questionIndex < buttonLabels.size(); - ++questionIndex) - { - popup->Append(new PopupObject::Button( - buttonLabels[questionIndex],questionIndex)); - } - - - ListenForAnswer(popup); - - //nested loop is not used here - ShowPopupEvent event(popup, - MakeAnswerCallback( - this, - &CommunicationBox::AnswerCallback), - DPL::Event::UNDEFINED_LOOP_HANDLE); - - CONTROLLER_POST_EVENT(PopupController, - event); -} - -void CommunicationBox::AnswerCallback(const DPL::Popup::AnswerCallbackData &answer) -{ - m_callback(answer.buttonAnswer, answer.chackState, m_userdata); -} - - -Prompt::PromptModel::PromptType CommunicationBox::getPromptType() const -{ - return m_promptType; -} diff --git a/src/domain/efl/CommunicationBox.h b/src/domain/efl/CommunicationBox.h deleted file mode 100644 index 9b8acd9..0000000 --- a/src/domain/efl/CommunicationBox.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* @file CommunicationBox.h - * @author Justyna Mejzner (j.kwiatkowsk@samsung.com) - * @version 1.0 - * - */ - -#ifndef _WRT_SRC_DOMAIN_EFL_COMMUNICATION_BOX_H -#define _WRT_SRC_DOMAIN_EFL_COMMUNICATION_BOX_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class CommunicationBox : - public DPL::Popup::PopupControllerUser -{ - private: - void AnswerCallback(const DPL::Popup::AnswerCallbackData &answer); - - public: - typedef DPL::FastDelegate - ResponseDelegate; - - CommunicationBox() : - m_promptType(Prompt::PromptModel::PROMPT_ONESHOT), - m_callback(NULL), - m_userdata(NULL) - { - } - - void showAsync(const Prompt::PromptModel::PromptType promptType, - const std::string& mainLabel, - const std::vector& buttonLabels, - const DPL::OptionalString& checkLabel, - ResponseDelegate callback, - void* userdata); - - Prompt::PromptModel::PromptType getPromptType() const; - - private: - - Prompt::PromptModel::PromptType m_promptType; - ResponseDelegate m_callback; - void* m_userdata; -}; - -#endif //_WRT_SRC_DOMAIN_EFL_COMMUNICATION_BOX_H diff --git a/src/domain/efl/DESCRIPTION b/src/domain/efl/DESCRIPTION deleted file mode 100644 index 8691da1..0000000 --- a/src/domain/efl/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -EFL UI support diff --git a/src/domain/efl/base_browser_setting.h b/src/domain/efl/base_browser_setting.h deleted file mode 100644 index c470c64..0000000 --- a/src/domain/efl/base_browser_setting.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file base_browser_setting.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Browser setting interface declaration. - */ - -#ifndef WRT_SRC_DOMAIN_EFL_BASEBROWSERSETTING_H_ -#define WRT_SRC_DOMAIN_EFL_BASEBROWSERSETTING_H_ - -#include -#include - -class BaseBrowserSetting -{ - public: - virtual ~BaseBrowserSetting(){}; - virtual void passUserAgentToWebkit() = 0; - protected: - explicit BaseBrowserSetting(Evas_Object *elmWebview) : - m_elmWebview(elmWebview) - { - }; - Evas_Object* m_elmWebview; -}; - - -#endif /* WRT_SRC_DOMAIN_EFL_BASEBROWSERSETTING_H_ */ diff --git a/src/domain/efl/combobox_picker.cpp b/src/domain/efl/combobox_picker.cpp deleted file mode 100644 index 681ee71..0000000 --- a/src/domain/efl/combobox_picker.cpp +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file combobox_picker.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Implementation of picker for combox - */ - -#include -#include - -#include -#include -#include - -namespace { -static const std::string SuccessString("Success"); -static const size_t BUFFER_LENGTH = 100; -static const size_t KEY_LENGTH = 10; -} - -//This class is to not include ui-gagdet in header file -class ComboboxPickerCB -{ - public: - static void pickerLayoutCb(ui_gadget *ug, - ug_mode mode, - void *priv); - static void pickerResultCb(ui_gadget *ug, - bundle *result, - void *priv); - static void pickerDestroyCb(ui_gadget *ug, - void *priv); -}; - -ComboboxPicker::ComboboxPicker(Evas_Object * win, - Evas_Object * navigation, - Evas_Object * layout_main) : - m_win(win), - m_navigation(navigation), - m_layout_main(layout_main), - m_comboboxPicker(NULL), - m_comboboxCallback(NULL), - m_calledCallback(true), - m_pickerUg(NULL), - m_userdata(NULL) -{ - LogInfo("Create ComboboxPicker"); - m_comboboxPicker = elm_box_add(m_navigation); - elm_box_horizontal_set(m_comboboxPicker, EINA_TRUE); - elm_box_homogeneous_set(m_comboboxPicker, EINA_TRUE); - - elm_layout_content_set(m_layout_main, - "elm.swallow.comboboxPicker", - m_comboboxPicker); - // evas_object_size_hint_weight_set(comboboxPicker, EVAS_HINT_EXPAND, - //EVAS_HINT_EXPAND); - evas_object_show(m_comboboxPicker); -} - -ComboboxPicker::~ComboboxPicker() -{ - HideComboboxPicker(); - evas_object_del(m_comboboxPicker); -} - -void ComboboxPicker::HideComboboxPicker() -{ - if (m_calledCallback == false) { - m_calledCallback = true; - if (m_comboboxCallback != NULL) { - CallCallback(m_userdata, DPL::OptionalInt::Null); - } - LogDebug("Hiding combobox picker"); - edje_object_signal_emit(elm_layout_edje_get( - m_layout_main), "hide,comboboxPicker", ""); - ug_destroy(m_pickerUg); - m_pickerUg = NULL; - } -} - -void ComboboxPicker::CallCallback(void* userdata, - const DPL::OptionalInt& index) -{ - if (m_calledCallback == true) { - LogDebug("Last callback already called"); - return; - } else { - if (m_comboboxCallback != NULL) { - if (!index) { - LogDebug("This is last callback called"); - HideComboboxPicker(); - } - LogDebug("Calling combobx calback"); - m_comboboxCallback(index, userdata); - } else { - m_calledCallback = true; - } - } -} - -void ComboboxPicker::ShowComboboxPicker(int length, - char const * const * const option, - ComboboxPickerCallback callback, - void * userdata) -{ - if (m_pickerUg != NULL) { - HideComboboxPicker(); - } - - m_comboboxCallback = callback; - m_userdata = userdata; - - m_calledCallback = false; - - bundle *b; - struct ug_cbs cbs = {0, 0, 0, 0}; - - b = bundle_create(); - if (b == NULL) { - LogError("Failed to create bundle"); - return; - } - - char buf[BUFFER_LENGTH]; - snprintf(buf, sizeof(buf), "%d", length); - - LogDebug("Add buf to Bundle "); - if (bundle_add(b, "Count", buf)) { - LogError("Bundle_add failed"); - //we silently assume that bundle_free will cleanup - //although error has occured - //just like Browser team does - } - - char key[KEY_LENGTH] = ""; - const size_t lengthSize = length * (sizeof(option) / sizeof(*option)); - - for (size_t i = 0; i < lengthSize; ++i) { - LogDebug("key[" << i << "]=" << option[i]); - snprintf(key, sizeof(key), "%d", i); - if (bundle_add(b, key, option[i])) { - LogError("bundle_add has failed."); - } - } - - cbs.layout_cb = ComboboxPickerCB::pickerLayoutCb; - cbs.result_cb = ComboboxPickerCB::pickerResultCb; - cbs.destroy_cb = ComboboxPickerCB::pickerDestroyCb; - cbs.priv = this; - - LogInfo("Create ug"); - m_pickerUg = ug_create(NULL, - "picker-efl", - UG_MODE_FRAMEVIEW, - b, - &cbs); - - if (m_pickerUg == NULL) { - LogError("Creating UG failed"); - } - - if (bundle_free(b)) { - LogError("bundle_free has failed"); - } - - LogInfo("Emitting signal show,comboboxPicker"); - edje_object_signal_emit(elm_layout_edje_get( - m_layout_main), "show,comboboxPicker", ""); -} - -void ComboboxPickerCB::pickerResultCb(ui_gadget *ug, - bundle *result, - void *priv) -{ - LogInfo("pickerResultCb"); - - ComboboxPicker * picker = static_cast(priv); - - if (result) { - const char *rst = bundle_get_val(result, "Result"); - if (rst) { - if (!strncmp(rst, SuccessString.c_str(), SuccessString.length())) { - LogInfo("Done selecting"); - picker->CallCallback(picker->m_userdata, - DPL::OptionalInt::Null); - ug = NULL; - } - } - const char *index = bundle_get_val(result, "Index"); - if (index) { - if (atoi(index) >= 0) { - LogInfo("Selected index number: " << atoi(index)); - picker->CallCallback(picker->m_userdata, - DPL::OptionalInt(atoi(index))); - } else { - LogWarning("Couldn't convert index to integer"); - picker->CallCallback(picker->m_userdata, - DPL::OptionalInt::Null); - } - - ug = NULL; - } - } -} - -void ComboboxPickerCB::pickerDestroyCb(ui_gadget *ug, - void *priv) -{ - (void) ug; - (void) priv; - LogInfo("pickerDestroyCb"); -} - -void ComboboxPickerCB::pickerLayoutCb(ui_gadget *ug, - ug_mode mode, - void *priv) -{ - LogInfo("pickerLayoutCb"); - - Evas_Object *base; - ComboboxPicker * picker = static_cast(priv); - - if (picker == NULL) { - LogError("No priv data"); - return; - } - - base = static_cast(ug_get_layout(ug)); - if (base == NULL) { - LogError("Base is NULL"); - return; - } - switch (mode) { - case UG_MODE_FRAMEVIEW: - elm_layout_content_set(picker->m_layout_main, - "elm.swallow.comboboxPicker", - base); - break; - default: - LogWarning( - "Combobox layout callback was called in other UG_MODE then"\ - "UG_MODE_FRAMEVIEW"); - Assert( - false && - "Combobox layout callback was called in other UG_MODE then"\ - "UG_MODE_FRAMEVIEW"); - break; - } -} diff --git a/src/domain/efl/combobox_picker.h b/src/domain/efl/combobox_picker.h deleted file mode 100644 index 8e39893..0000000 --- a/src/domain/efl/combobox_picker.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file combobox_picker.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Header of picker for combox - */ - -#ifndef COMBOBOX_PICKER_H_ -#define COMBOBOX_PICKER_H_ - -#include - -#include - -/* - * example usage: - * - * void picker_callback(void* userdata, DPL::Optional index) - * { - * if(!index.IsNull()) - * { - * LogDebug("Index is " << *index); - * } - * - * else - * { - * LogInfo("Picking element from combobox failed"); - * } - **} - * - * std::vector options; - * options.push_back(std::string("hello")); - * options.push_back(std::string("goodbye")); - * show_combobox_picker(ad, options, picker_callback, NULL); - * - */ - -struct ui_gadget; //FORWARD DECLARATION -class ComboboxPickerCB; //FORWARD DECLARATION - -class ComboboxPicker -{ - public: - typedef void (*ComboboxPickerCallback)(const DPL::OptionalInt& index, - void* userdata); - - ComboboxPicker(Evas_Object * win, - Evas_Object * navigation, - Evas_Object * layout_main); - virtual ~ComboboxPicker(); - - void CallCallback(void* userdata, - const DPL::OptionalInt& index); - - void ShowComboboxPicker(int length, - char const * const * const table, - ComboboxPickerCallback callback, - void* userdata); - - void HideComboboxPicker(); - private: - - Evas_Object * m_win; - - //navigationbar created with elm_navigationbar_add() - Evas_Object * m_navigation; - - // m_layout_main reacts on "hide,comboboxPicker" / "show,comboboxPicker" - Evas_Object * m_layout_main; - - Evas_Object * m_comboboxPicker; - - ComboboxPickerCallback m_comboboxCallback; - bool m_calledCallback; - - ui_gadget * m_pickerUg; - void* m_userdata; - - friend class ComboboxPickerCB; -}; - -#endif /*COMBOBOX_PICKER_H_*/ diff --git a/src/domain/efl/evas_object.cpp b/src/domain/efl/evas_object.cpp deleted file mode 100644 index 087f99d..0000000 --- a/src/domain/efl/evas_object.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file evas_object.cpp - * @author Lukasz Wrzosek (l.wrzosel@samsung.com) - * @version 1.0 - * @brief This file is the implementation for Evas_Object wrapper from Efl. - */ - -#include "evas_object.h" -#include - -Evas_Object* EvasObject::IConnection::GetEvasObject() -{ - return m_object->GetObject(); -} - -void EvasObject::IConnection::Disconnect() -{ - m_object->DisconnectCallback(this); -} - -EvasObject::IConnection::IConnection(EvasObject::EvasObjectShared* object) : - m_object(object) -{ -} - -void EvasObject::IConnection::SmartCallbackWrapper(void* data, - Evas_Object* /*object*/, - void* event_info) -{ - Assert(data); - IConnection* Calle = static_cast(data); - Calle->Call(event_info); -} - -void EvasObject::IConnection::EvasCallbackWrapper(void* data, - Evas* /*evas*/, - Evas_Object* /*object*/, - void* event_info) -{ - Assert(data); - IConnection* Calle = static_cast(data); - Calle->Call(event_info); -} - -Evas_Object* EvasObject::EvasObjectShared::GetObject() -{ - return m_object; -} - -EvasObject::EvasObjectShared::SmartConnectionBase::SmartConnectionBase( - const std::string& name, - EvasObject::EvasObjectShared* object) : - IConnection(object), - m_callbackName(name) -{ -} - -void EvasObject::EvasObjectShared::SmartConnectionBase::ConnectPrv() -{ - evas_object_smart_callback_add(GetEvasObject(), - m_callbackName.c_str(), - &IConnection::SmartCallbackWrapper, this); -} - -void EvasObject::EvasObjectShared::SmartConnectionBase::DisconnectPrv() -{ - evas_object_smart_callback_del(GetEvasObject(), - m_callbackName.c_str(), - &IConnection::SmartCallbackWrapper); -} - -EvasObject::EvasObjectShared::EvasConnectionBase::EvasConnectionBase( - Evas_Callback_Type type, - EvasObject::EvasObjectShared* object) : - IConnection(object), - m_callbackType(type) -{ -} - -void EvasObject::EvasObjectShared::EvasConnectionBase::ConnectPrv() -{ - evas_object_event_callback_add( - GetEvasObject(), m_callbackType, &IConnection::EvasCallbackWrapper, - this); -} - -void EvasObject::EvasObjectShared::EvasConnectionBase::DisconnectPrv() -{ - evas_object_event_callback_del_full( - GetEvasObject(), m_callbackType, &IConnection::EvasCallbackWrapper, - this); -} - -EvasObject::EvasObjectShared::EvasObjectShared() : - m_object(NULL) -{ -} - -EvasObject::EvasObjectShared::EvasObjectShared(Evas_Object* object) : - m_object(object) -{ - Assert(m_object); - evas_object_event_callback_add(m_object, - EVAS_CALLBACK_DEL, - &StaticOnDelEvent, - this); -} - -void EvasObject::EvasObjectShared::SetObject(Evas_Object* object) -{ - Assert(m_object == NULL); - Assert(object != NULL); - m_object = object; - evas_object_event_callback_add(m_object, - EVAS_CALLBACK_DEL, - &StaticOnDelEvent, - this); -} - -EvasObject::EvasObjectShared::~EvasObjectShared() -{ - if (m_object) { - DisconnectAll(); - evas_object_event_callback_del(m_object, - EVAS_CALLBACK_DEL, - &StaticOnDelEvent); - m_object = NULL; - } -} - -bool EvasObject::EvasObjectShared::DisconnectCallback(IConnection* connection) -{ - IConnectionsSet::iterator it = m_connections.find(connection); - if (it != m_connections.end()) { - (*it)->DisconnectPrv(); - delete connection; - m_connections.erase(it); - return true; - } - return false; -} - -void EvasObject::EvasObjectShared::DisconnectAll() -{ - FOREACH(it, m_connections) - { - (*it)->DisconnectPrv(); - delete *it; - } - m_connections.clear(); -} - -void EvasObject::EvasObjectShared::StaticOnDelEvent(void* data, - Evas* /*e*/, - Evas_Object* /*o*/, - void* /*ev*/) -{ - Assert(data); - EvasObjectShared* This = static_cast(data); - if (This->m_object) { - evas_object_event_callback_del(This->m_object, - EVAS_CALLBACK_DEL, - &StaticOnDelEvent); - This->DisconnectAll(); - This->m_object = NULL; - } -} - -EvasObject::EvasObject() : - m_object(new EvasObjectShared()) -{ -} - -EvasObject::EvasObject(Evas_Object* object) : - m_object(new EvasObjectShared(object)) -{ -} - -EvasObject::EvasObject(const EvasObject& other) : - m_object(other.m_object) -{ -} - -//this destructor must be here to let pimpl with shared_ptr work without warning -EvasObject::~EvasObject() -{ -} - -EvasObject& EvasObject::operator=(const EvasObject& other) -{ - Assert(m_object); - m_object = other.m_object; - return *this; -} - -EvasObject* EvasObject::operator=(Evas_Object* object) -{ - Assert(m_object); - m_object->SetObject(object); - return this; -} - -bool EvasObject::DisconnectCallback(IConnection* connection) -{ - Assert(m_object); - return m_object->DisconnectCallback(connection); -} - -void EvasObject::DisconnectAll() -{ - Assert(m_object); - m_object->DisconnectAll(); -} - -EvasObject::operator Evas_Object *() -{ - Assert(m_object); - return m_object->GetObject(); -} diff --git a/src/domain/efl/evas_object.h b/src/domain/efl/evas_object.h deleted file mode 100644 index df25a2f..0000000 --- a/src/domain/efl/evas_object.h +++ /dev/null @@ -1,654 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file evas_object.h - * @author Lukasz Wrzosek (l.wrzosel@samsung.com) - * @version 1.0 - * @brief This file is the header for Evas_Object wrapper from Efl. - */ -#ifndef WRT_SRC_DOMAIN_EFL_EVAS_OBJECT_H -#define WRT_SRC_DOMAIN_EFL_EVAS_OBJECT_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class EvasObject -{ - class EvasObjectShared; - typedef DPL::SharedPtr EvasObjectSharedPtr; - - public: - class IConnection - { - public: - Evas_Object* GetEvasObject(); - void Disconnect(); - - private: - IConnection(EvasObjectShared* object); - virtual ~IConnection() - { - } - virtual void Call(void* /*event_info*/) = 0; - - static void SmartCallbackWrapper(void* data, - Evas_Object* /*object*/, - void* event_info); - static void EvasCallbackWrapper(void* data, - Evas* /*evas*/, - Evas_Object* /*object*/, - void* event_info); - - virtual void ConnectPrv() = 0; - virtual void DisconnectPrv() = 0; - - friend class EvasObjectShared; - - EvasObjectShared* m_object; - }; - - private: - class EvasObjectShared : DPL::Noncopyable - { - public: - friend class IConnection; - Evas_Object* GetObject(); - - typedef std::set IConnectionsSet; - - class SmartConnectionBase : public IConnection - { - public: - SmartConnectionBase(const std::string& name, - EvasObjectShared* object); - - virtual void ConnectPrv(); - virtual void DisconnectPrv(); - std::string m_callbackName; - }; - - template - class SmartConnection : public SmartConnectionBase - { - public: - typedef void (*CbType)(IConnection* connection, - void* event_info, - Args ... args); - - SmartConnection(const std::string& name, - CbType callback, - EvasObjectShared* object, - Args ... args) : - SmartConnectionBase(name, object), - m_callback(callback), - m_args(args ...) - { - } - - virtual ~SmartConnection() - { - } - - virtual void Call(void* event_info) - { - DPL::Apply(m_callback, - m_args, - this, - event_info); - } - - private: - CbType m_callback; - std::tuple m_args; - }; - - template - class SmartMemberConnection1 : public SmartConnectionBase - { - public: - typedef void (ThisType::*CbType)(IConnection* connection, - void* event_info, ArgType1 *arg1); - - SmartMemberConnection1(const std::string& name, - CbType callback, - ThisType* callee, - ArgType1* arg1, - EvasObjectShared* object) : - SmartConnectionBase(name, object), - m_callback(callback), - m_callee(callee), - m_arg1(arg1) - { - } - - virtual ~SmartMemberConnection1() - { - } - - virtual void Call(void* event_info) - { - (m_callee->*m_callback)(this, event_info, m_arg1); - } - - private: - CbType m_callback; - ThisType* m_callee; - ArgType1* m_arg1; - }; - - template - class SmartMemberConnection2 : public SmartConnectionBase - { - public: - typedef void (ThisType::*CbType)(IConnection* connection, - void* event_info, ArgType1 *arg1, - ArgType2* arg2); - - SmartMemberConnection2(const std::string& name, - CbType callback, - ThisType* callee, - ArgType1* arg1, - ArgType2* arg2, - EvasObjectShared* object) : - SmartConnectionBase(name, object), - m_callback(callback), - m_callee(callee), - m_arg1(arg1), - m_arg2(arg2) - { - } - - virtual ~SmartMemberConnection2() - { - } - - virtual void Call(void* event_info) - { - (m_callee->*m_callback)(this, event_info, m_arg1, m_arg2); - } - - private: - CbType m_callback; - ThisType* m_callee; - ArgType1* m_arg1; - ArgType2* m_arg2; - }; - - class EvasConnectionBase : public IConnection - { - public: - EvasConnectionBase(Evas_Callback_Type type, - EvasObjectShared* object); - - virtual void ConnectPrv(); - virtual void DisconnectPrv(); - - Evas_Callback_Type m_callbackType; - }; - - template - class EvasConnection1 : public EvasConnectionBase - { - public: - typedef void (*CbType)(IConnection* connection, void* event_info, - ArgType1 *arg1); - - EvasConnection1(Evas_Callback_Type type, - CbType callback, - ArgType1* arg1, - EvasObjectShared* object) : - EvasConnectionBase(type, object), - m_callback(callback), - m_arg1(arg1) - { - } - - virtual ~EvasConnection1() - { - } - - virtual void Call(void* event_info) - { - m_callback(this, event_info, m_arg1); - } - - private: - CbType m_callback; - ArgType1* m_arg1; - }; - - template - class EvasConnection2 : public EvasConnectionBase - { - public: - typedef void (*CbType)(IConnection* connection, void* event_info, - ArgType1 *arg1, ArgType2 *arg2); - - EvasConnection2(Evas_Callback_Type type, - CbType callback, - ArgType1* arg1, - ArgType2* arg2, - EvasObjectShared* object) : - EvasConnectionBase(type, object), - m_callback(callback), - m_arg1(arg1), - m_arg2(arg2) - { - } - - virtual ~EvasConnection2() - { - } - - virtual void Call(void* event_info) - { - m_callback(this, event_info, m_arg1, m_arg2); - } - - private: - CbType m_callback; - ArgType1* m_arg1; - ArgType2* m_arg2; - }; - - template - class EvasMemberConnection1 : public EvasConnectionBase - { - public: - typedef void (ThisType::*CbType)(IConnection* connection, - void* event_info, ArgType1 *arg1); - - EvasMemberConnection1(Evas_Callback_Type type, - CbType callback, - ThisType* callee, - ArgType1* arg1, - EvasObjectShared* object) : - EvasConnectionBase(type, object), - m_callback(callback), - m_callee(callee), - m_arg1(arg1) - { - } - - virtual ~EvasMemberConnection1() - { - } - - virtual void Call(void* event_info) - { - (m_callee->*m_callback)(this, event_info, m_arg1); - } - - private: - CbType m_callback; - ThisType* m_callee; - ArgType1* m_arg1; - }; - - template - class EvasMemberConnection2 : public EvasConnectionBase - { - public: - typedef void (ThisType::*CbType)(IConnection* connection, - void* event_info, ArgType1* arg1, - ArgType2* arg2); - - EvasMemberConnection2(Evas_Callback_Type type, - CbType callback, - ThisType* callee, - ArgType1* arg1, - ArgType2* arg2, - EvasObjectShared* object) : - EvasConnectionBase(type, object), - m_callback(callback), - m_callee(callee), - m_arg1(arg1), - m_arg2(arg2) - { - } - - virtual ~EvasMemberConnection2() - { - } - - virtual void Call(void* event_info) - { - (m_callee->*m_callback)(this, event_info, m_arg1, m_arg2); - } - - private: - CbType m_callback; - ThisType* m_callee; - ArgType1* m_arg1; - ArgType2* m_arg2; - }; - - EvasObjectShared(); - explicit EvasObjectShared(Evas_Object* object); - void SetObject(Evas_Object* object); - ~EvasObjectShared(); - - template - IConnection* ConnectSmartCallback(const char* callbackName, - typename SmartConnection::CbType callback, - Args ... args) - { - Assert(m_object); - Assert(callbackName); - Assert(callback); - IConnection* connection = new SmartConnection( - callbackName, - callback, - this, - args ...); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - template - IConnection* ConnectMemberSmartCallback( - const char* callbackName, - typename SmartMemberConnection2::CbType callback, - ThisType* callee, - ArgType1* arg1, - ArgType2* arg2) - { - Assert(m_object); - Assert(callee); - Assert(callbackName); - Assert(callback); - IConnection* connection = - new SmartMemberConnection2( - callbackName, - callback, - callee, - arg1, - arg2, - this); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - template - IConnection* ConnectMemberSmartCallback( - const char* callbackName, - typename SmartMemberConnection1::CbType callback, - ThisType* callee, - ArgType1* arg1) - { - Assert(m_object); - Assert(callee); - Assert(callbackName); - Assert(callback); - IConnection* connection = - new SmartMemberConnection1(callbackName, - callback, - callee, - arg1, - this); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - template - IConnection* ConnectEvasCallback(Evas_Callback_Type callbackType, - typename EvasConnection2::CbType callback, - ArgType1* arg1, - ArgType2* arg2) - { - Assert(m_object); - Assert(callbackType); - Assert(callback); - IConnection* connection = new EvasConnection2( - callbackType, - callback, - arg1, - arg2, - this); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - template - IConnection* ConnectEvasCallback(Evas_Callback_Type callbackType, - typename EvasConnection1::CbType callback, - ArgType1* arg1) - { - Assert(m_object); - Assert(callbackType); - Assert(callback); - IConnection* connection = new EvasConnection1( - callbackType, - callback, - arg1, - this); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - template - IConnection* ConnectMemberEvasCallback( - Evas_Callback_Type callbackType, - typename EvasMemberConnection2::CbType callback, - ThisType* callee, - ArgType1* arg1, - ArgType2* arg2) - { - Assert(m_object); - Assert(callee); - Assert(callbackType); - Assert(callback); - IConnection* connection = - new EvasMemberConnection2( - callbackType, - callback, - callee, - arg1, - arg2, - this); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - template - IConnection* ConnectMemberEvasCallback( - Evas_Callback_Type callbackType, - typename EvasMemberConnection1::CbType callback, - ThisType* callee, - ArgType1* arg1) - { - Assert(m_object); - Assert(callee); - Assert(callbackType); - Assert(callback); - IConnection* connection = - new EvasMemberConnection1(callbackType, - callback, - callee, - arg1, - this); - m_connections.insert(connection); - connection->ConnectPrv(); - return connection; - } - - bool DisconnectCallback(IConnection* connection); - void DisconnectAll(); - - static void StaticOnDelEvent(void* data, - Evas* /*e*/, - Evas_Object* /*o*/, - void* /*ev*/); - - IConnectionsSet m_connections; - Evas_Object* m_object; - }; - - public: - EvasObject(); - explicit EvasObject(Evas_Object* object); - EvasObject(const EvasObject& other); - ~EvasObject(); - - EvasObject& operator=(const EvasObject& other); - EvasObject* operator=(Evas_Object* object); - - operator Evas_Object *(); - - bool IsValid() const - { - Assert(m_object); - return m_object->GetObject() != NULL; - } - - bool DisconnectCallback(IConnection* connection); - void DisconnectAll(); - - template - IConnection* ConnectSmartCallback( - const char* callbackName, - typename EvasObjectShared::SmartConnection::CbType - callback, - Args ... args) - { - Assert(m_object); - return m_object->ConnectSmartCallback(callbackName, callback, args ...); - } - - template - IConnection* ConnectMemberSmartCallback( - const char* callbackName, - typename EvasObjectShared::SmartMemberConnection2::CbType - callback, - ThisType* callee, - ArgType1* arg1, - ArgType2* arg2) - { - Assert(m_object); - Assert(callee); - Assert(callback); - return m_object->ConnectMemberSmartCallback(callbackName, - callback, - callee, - arg1, - arg2); - } - - template - IConnection* ConnectMemberSmartCallback( - const char* callbackName, - typename EvasObjectShared::SmartMemberConnection1::CbType - callback, - ThisType* callee, - ArgType1* arg1) - { - Assert(m_object); - Assert(callee); - Assert(callback); - return m_object->ConnectMemberSmartCallback(callbackName, - callback, - callee, - arg1); - } - - template - IConnection* ConnectEvasCallback( - Evas_Callback_Type callbackType, - typename EvasObjectShared::EvasConnection1::CbType - callback, - ArgType1* arg1, - ArgType2* arg2) - { - Assert(m_object); - return m_object->ConnectEvasCallback(callbackType, callback, arg1, arg2); - } - - template - IConnection* ConnectEvasCallback( - Evas_Callback_Type callbackType, - typename EvasObjectShared::EvasConnection1::CbType - callback, - ArgType1* arg1) - { - Assert(m_object); - return m_object->ConnectEvasCallback(callbackType, callback, arg1); - } - - template - IConnection* ConnectMemberEvasCallback( - Evas_Callback_Type callbackType, - typename EvasObjectShared::EvasMemberConnection1::CbType - callback, - ThisType* callee, - ArgType1* arg1) - { - Assert(m_object); - Assert(callee); - Assert(callback); - return m_object->ConnectMemberEvasCallback(callbackType, - callback, - callee, - arg1); - } - - template - IConnection* ConnectMemberEvasCallback( - Evas_Callback_Type callbackType, - typename EvasObjectShared::EvasMemberConnection2::CbType - callback, - ThisType* callee, - ArgType1* arg1, - ArgType2* arg2) - { - Assert(m_object); - Assert(callee); - Assert(callback); - return m_object->ConnectMemberEvasCallback(callbackType, - callback, - callee, - arg1, - arg2); - } - - private: - EvasObjectSharedPtr m_object; -}; - -#endif //WRT_SRC_DOMAIN_EFL_EVAS_OBJECT_H - diff --git a/src/domain/efl/regular_browser_setting.cpp b/src/domain/efl/regular_browser_setting.cpp deleted file mode 100644 index 477411c..0000000 --- a/src/domain/efl/regular_browser_setting.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file regular_browser_setting.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Implementation of final browser setting class. - */ - -#include -#include - -#include -#include -#include "user_agent_profile.h" - -RegularBrowserSetting::RegularBrowserSetting(Evas_Object *elmWebview) : - BaseBrowserSetting(elmWebview) -{ - passUserAgentToWebkit(); -} - -void RegularBrowserSetting::passUserAgentToWebkit() -{ - // Custom User Agent - // WR-4200: (deviceVendor-model/version) - // layoutEngine/version WRTVendor-name/version - Evas_Object *webview = elm_webview_webkit_get(m_elmWebview); - std::string userAgent; - userAgent += "(Samsung-TIZEN/1.0)"; - userAgent += " WebKit"; - //userAgent += "/TODO_no_API_to_get_this"; - userAgent += " Samsung-WRT/"; - userAgent += WRT_ENGINE_VERSION; - ewk_view_setting_user_agent_set(webview, userAgent.c_str()); - - std::string xWapProfileDiff = UserAgentProfile::GetProfileDiff(); - - //FIXME couldn't find X_WAP_PROFILE_URL (j.osmanski@samsung.com) - //ewk_view_setting_custom_header_add(webview, - // "x-Wap-Profile", X_WAP_PROFILE_URL); - //ewk_view_setting_custom_header_add(webview, - // "x-Wap-Profile-Diff", - // xWapProfileDiff.c_str()); -} diff --git a/src/domain/efl/regular_browser_setting.h b/src/domain/efl/regular_browser_setting.h deleted file mode 100644 index a2e41f6..0000000 --- a/src/domain/efl/regular_browser_setting.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file regular_browser_setting.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Declaration of final browser setting class. - */ - -#ifndef WRT_SRC_DOMAIN_EFL_REGULAR_BROWSER_SETTING_H_ -#define WRT_SRC_DOMAIN_EFL_REGULAR_BROWSER_SETTING_H_ - -#include -#include - - -class RegularBrowserSetting : public BaseBrowserSetting -{ - public: - explicit RegularBrowserSetting(Evas_Object *elmWebview); - virtual void passUserAgentToWebkit(); -}; - -#endif /* WRT_SRC_DOMAIN_EFL_REGULAR_BROWSER_SETTING_H_ */ diff --git a/src/domain/efl/roaming_agent.cpp b/src/domain/efl/roaming_agent.cpp deleted file mode 100755 index a54c920..0000000 --- a/src/domain/efl/roaming_agent.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file roaming_agent.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @author Lukasz Marek (l.marek@samsung.com) - * @version 1.0 - * @brief roaming agent - */ - -#include "roaming_agent.h" -#include -#include -#include -#include -#include - -IMPLEMENT_SINGLETON(RoamingAgent) - -namespace { -const char* CONNECTING_ROAMING_NETWORK = "Connecting to Roaming Network"; -const char* CONNECTING_HOME_NETWORK = "Connecting to Home Network"; -const char* CONNECTION_WARNING = - "Your terminal is going online.
" - "Be aware that data charges might apply!
" - "Do you want to continue?"; - -const char* KEEP_CONNECTION_WARNING = - "Notwork type changed.
" - "Do you want to keep active connections?"; -} // anonymous - -RoamingAgent::RoamingAgent() -{ - if (!IsControlEnabled()) { - return; - } - //setting say if we are using roaming network or home network - int result = 0; - if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &result) != 0) { - LogError("Cannot get current roaming status"); - } else { - bool type = (result == VCONFKEY_TELEPHONY_SVC_ROAM_ON); - m_networkType = type ? ROAMING : HOME; - LogInfo("Network type is " << (type ? "ROAMING" : "HOME")); - } - //setting says if roaming is enabled at all - if (vconf_get_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, - &result) == -1) { - LogError("Cannot get current network setting"); - } else { - m_roamingNetworkEnabled = result; - LogInfo("Roaming is " << (result ? "ENABLED" : "DISABLED")); - } - - GlobalModel *globalModel = - GlobalLogicSingleton::Instance().GetGlobalModel(); - - //read current home network access setting - SaveNetworkAccessMode(HOME, globalModel->HomeNetworkAccess.Get()); - //read current roaming network access setting - SaveNetworkAccessMode(ROAMING, globalModel->RoamingNetworkAccess.Get()); - - LogInfo("Roaming network setting " << m_networkOption.Option(ROAMING)); - LogInfo("Home network network setting " << m_networkOption.Option(HOME)); - - globalModel->HomeNetworkAccess.AddListener(DPL::MakeDelegate(this, - &RoamingAgent - :: - OnHomeNetworkAccessModeChanged)); - globalModel->RoamingNetworkAccess.AddListener(DPL::MakeDelegate(this, - & - RoamingAgent - :: - OnRoamingNetworkAccessModeChanged)); - DPL::Event::EventDeliverySystem::AddListener< - DPL::Event::EventMessages::RoamingChanged>(this); - DPL::Event::EventDeliverySystem::AddListener< - DPL::Event::EventMessages::NetworkTypeChanged>(this); - if (vconf_notify_key_changed( - VCONFKEY_NETWORK_WIFI_STATE, - vConfChagedCallback, this) < 0) - { - LogError("Cannot add vconf callback [" << - VCONFKEY_NETWORK_WIFI_STATE << "]"); - } -} - -RoamingAgent::~RoamingAgent() -{ - if (!IsControlEnabled()) { - return; - } - - GlobalModel *globalModel = - GlobalLogicSingleton::Instance().GetGlobalModel(); - globalModel->HomeNetworkAccess.RemoveListener(DPL::MakeDelegate(this, - & - RoamingAgent - :: - OnHomeNetworkAccessModeChanged)); - globalModel->RoamingNetworkAccess.RemoveListener(DPL::MakeDelegate(this, - & - RoamingAgent - :: - OnRoamingNetworkAccessModeChanged)); - - DPL::Event::EventDeliverySystem::RemoveListener< - DPL::Event::EventMessages::RoamingChanged>(this); - DPL::Event::EventDeliverySystem::RemoveListener< - DPL::Event::EventMessages::NetworkTypeChanged>(this); -} - -bool RoamingAgent::IsControlEnabled() -{ - static const char* var = getenv("WRT_ROAMING_CONTROL_ENABLED"); - static const bool ret = (var != NULL ? 0 == !strcmp("0", var) : true); - LogDebug("control enabled status " << ret); - return ret; -} - -bool RoamingAgent::CheckAccess() -{ - if (!IsControlEnabled()) { - return true; - } - - //Don't allow to use network when global phone setting doesn't allow it - if (m_networkType == ROAMING && !m_roamingNetworkEnabled) { - LogInfo("global phone setting turned off roaming usage"); - return false; - } - - return AskUser(CONNECTION_WARNING); -} - -bool RoamingAgent::AskUser(const std::string &label) -{ - // If current network uses wifi, pass the roaming check - int wifiState = VCONFKEY_NETWORK_WIFI_OFF; - if (vconf_get_int(VCONFKEY_NETWORK_WIFI_STATE, &wifiState) < 0) { - LogError("Fail to get wifi state"); - } else { - if (VCONFKEY_NETWORK_WIFI_CONNECTED == wifiState) { - LogInfo("Current network uses WIFI"); - return true; - } - } - - NetworkOptionType &option = m_networkOption.Option(m_networkType); - - switch (option) { - case NEVER_CONNECT: - LogInfo("Network option: never connect"); - return false; - case CONNECT_AUTO: - LogInfo("Network option: connect automatically"); - return true; - case ALWAYS_ASK: - LogInfo("Network option: always ask"); - if (!(m_userAnswer.Answer(m_networkType).IsNull())) { - return *m_userAnswer.Answer(m_networkType); - } - //create popup and ask user - { - std::string title(m_networkType == ROAMING ? - CONNECTING_ROAMING_NETWORK : - CONNECTING_HOME_NETWORK); - - bool response = PopupInvoker().askYesNo(title, label); - - LogDebug("Answer: " << response); - - m_userAnswer.Answer(m_networkType) = response; - return response; - } - } - return false; -} - -void RoamingAgent::Disconnect() -{ - LogInfo("disconnecting connections"); - ewk_network_session_requests_cancel(); -} - -void RoamingAgent::HandleDisconnection() -{ - if (!AskUser(KEEP_CONNECTION_WARNING)) { - Disconnect(); - } -} - -void RoamingAgent::OnEventReceived( - const DPL::Event::EventMessages::RoamingChanged &event) -{ - if (!IsControlEnabled()) { - return; - } - LogInfo("Network is now " << (event.GetEnabled() ? "ENABLED" : "DISABLED")); - if (m_roamingNetworkEnabled != event.GetEnabled()) { - m_roamingNetworkEnabled = event.GetEnabled(); - HandleDisconnection(); - } -} - -void RoamingAgent::OnEventReceived( - const DPL::Event::EventMessages::NetworkTypeChanged &event) -{ - if (!IsControlEnabled()) { - return; - } - NetworkType temp = event.IsRoaming() ? ROAMING : HOME; - if (temp != m_networkType) { - m_networkType = temp; - LogInfo("Network type changed into " << - (event.IsHomeNetwork() ? "Home network" : "Roaming")); - HandleDisconnection(); - } -} - -void RoamingAgent::NetworkAccessModeChanged(NetworkType networkType, - GlobalModel::NetworkAccessMode mode) -{ - if (!IsControlEnabled()) { - return; - } - SaveNetworkAccessMode(networkType, mode); - HandleDisconnection(); -} - -void RoamingAgent::vConfChagedCallback(keynode_t *keyNode, void *data) -{ - LogInfo("RoamingAgent::vConfChagedCallback "); - char *key = vconf_keynode_get_name(keyNode); - - if (NULL == key) { - LogWarning("vconf key is null."); - return; - } - std::string keyString = key; - // wifi setting - if (VCONFKEY_NETWORK_WIFI_STATE == keyString) { - RoamingAgent *roam = static_cast(data); - roam->HandleDisconnection(); - } - return; -} - -void RoamingAgent::SaveNetworkAccessMode(NetworkType networkType, - GlobalModel::NetworkAccessMode mode) -{ - LogDebug("SaveNetworkAccessMode"); - switch (mode) { - case GlobalModel::NEVER_CONNECT: - m_networkOption.Option(networkType) = NEVER_CONNECT; - break; - case GlobalModel::CONNECT_AUTOMATICALLY: - m_networkOption.Option(networkType) = CONNECT_AUTO; - break; - case GlobalModel::ALWAYS_ASK: - m_networkOption.Option(networkType) = ALWAYS_ASK; - break; - default: - LogWarning("Invalid network access, using default"); - m_networkOption.Option(networkType) = ALWAYS_ASK; - break; - } -} - -void RoamingAgent::OnHomeNetworkAccessModeChanged( - const DPL::Event::PropertyEvent &event) -{ - LogInfo("home network access type: " << event.value); - NetworkAccessModeChanged(HOME, event.value); -} - -void RoamingAgent::OnRoamingNetworkAccessModeChanged( - const DPL::Event::PropertyEvent &event) -{ - LogInfo("roaming network access type: " << event.value); - NetworkAccessModeChanged(ROAMING, event.value); -} diff --git a/src/domain/efl/roaming_agent.h b/src/domain/efl/roaming_agent.h deleted file mode 100755 index 9394b7d..0000000 --- a/src/domain/efl/roaming_agent.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file roaming_agent.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief roaming agent - */ - -#ifndef ROAMING_AGENT_H_ -#define ROAMING_AGENT_H_ - -#include -#include -#include -#include -#include -#include -#include - -class RoamingAgent : - private DPL::Event::EventListener, - private DPL::Event::EventListener -{ - public: - bool CheckAccess(); - bool IsControlEnabled(); - bool IsRoamingOn() const - { - return m_networkType == ROAMING; - } - - private: - enum NetworkType {ROAMING, HOME}; - enum NetworkOptionType {NEVER_CONNECT, ALWAYS_ASK, CONNECT_AUTO}; - - NetworkType m_networkType; - bool m_roamingNetworkEnabled; - - class NetworkOption - { - public: - NetworkOption() : - m_roaming(ALWAYS_ASK), - m_home(ALWAYS_ASK) - { - } - - NetworkOption(NetworkOptionType aroaming, - NetworkOptionType ahome) : - m_roaming(aroaming), - m_home(ahome) - { - } - - ~NetworkOption() - { - } - - NetworkOptionType &Option(NetworkType astate) - { - return astate == ROAMING ? m_roaming : m_home; - } - - private: - NetworkOptionType m_roaming; - NetworkOptionType m_home; - }; - - class UserAnswer - { - public: - UserAnswer() : - m_roaming(DPL::OptionalBool::Null), - m_home(DPL::OptionalBool::Null) - { - } - - UserAnswer(bool aroam, - bool ahome) : - m_roaming(aroam), - m_home(ahome) - { - } - - ~UserAnswer() - { - } - - DPL::OptionalBool &Answer(NetworkType astate) - { - return astate == ROAMING ? m_roaming : m_home; - } - - void ResetAnswer(NetworkType astate) - { - DPL::OptionalBool &answer = astate == ROAMING ? m_roaming : m_home; - answer = DPL::OptionalBool::Null; - } - - private: - DPL::OptionalBool m_roaming; - DPL::OptionalBool m_home; - }; - - NetworkOption m_networkOption; - - UserAnswer m_userAnswer; - - RoamingAgent(); - virtual ~RoamingAgent(); - - bool AskUser(const std::string &label); - void Disconnect(); - void HandleDisconnection(); - void SaveNetworkAccessMode(NetworkType networkType, - GlobalModel::NetworkAccessMode mode); - void NetworkAccessModeChanged(NetworkType networkType, - GlobalModel::NetworkAccessMode mode); - static void vConfChagedCallback(keynode_t *keyNode, void *userParam); - virtual void OnEventReceived( - const DPL::Event::EventMessages::RoamingChanged &event); - virtual void OnEventReceived( - const DPL::Event::EventMessages::NetworkTypeChanged &event); - virtual void OnHomeNetworkAccessModeChanged( - const DPL::Event::PropertyEvent &event); - virtual void OnRoamingNetworkAccessModeChanged( - const DPL::Event::PropertyEvent &event); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton RoamingAgentSingleton; - -#endif /* ROAMING_AGENT_H_ */ diff --git a/src/domain/efl/vconf_browser_setting.cpp b/src/domain/efl/vconf_browser_setting.cpp deleted file mode 100644 index 623af3d..0000000 --- a/src/domain/efl/vconf_browser_setting.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file vconf_browser_setting.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Implementation of temporary, vconf based, browser setting class. - */ - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace { -// TODO: remove this after ua is fixed... -const std::string SETTING_VCONF_PREFIX = "db/browsersetting/"; -const std::string USERAGENT_KEY = SETTING_VCONF_PREFIX + "UserAgent"; - -const std::vector BROWSER_SETTINGS = { - USERAGENT_KEY, -}; - -const char FLASH_MIME_TYPE[] = "application/x-shockwave-flash"; - -} // end of namespace anonymous - -VconfBrowserSetting::VconfBrowserSetting(Evas_Object *elmWebview, - WidgetViewDataStruct *viewData) : - BaseBrowserSetting(elmWebview), - m_viewData(viewData) -{ - //fixme unregister callbacks - LogInfo("Starting VConf browser setting"); - passUserAgentToWebkit(); -} - -void VconfBrowserSetting::passUserAgentToWebkit() -{ - std::for_each(BROWSER_SETTINGS.begin(), BROWSER_SETTINGS.end(), - [this](const std::string& key) - { - passSettingToElmWebview(key); - }); -} - -void VconfBrowserSetting::passSettingToElmWebview(const std::string& key) -{ - using namespace WrtDB; - LogDebug("Get key:: " << key); - - Evas_Object *webview = elm_webview_webkit_get(m_elmWebview); - - if (key == USERAGENT_KEY) { - char* vconfValue = vconf_get_str(key.c_str()); - std::string userAgentName; - - if (!vconfValue) { - userAgentName = "Tizen"; - } else { - userAgentName = vconfValue; - } - - DPL::String value = - GlobalDAO::GetUserAgentValue(DPL::FromUTF8String(userAgentName)); - std::string userAgent = DPL::ToUTF8String(value); - if (!userAgent.empty()) { - if (!ewk_view_setting_user_agent_set(webview, userAgent.c_str())) { - LogError("Cannot set user agent [" << userAgentName << "]"); - return; - } - } - LogDebug("UA:[" << userAgentName << "] UA string:[" << userAgent); - free(vconfValue); - } -} diff --git a/src/domain/efl/vconf_browser_setting.h b/src/domain/efl/vconf_browser_setting.h deleted file mode 100644 index cab37eb..0000000 --- a/src/domain/efl/vconf_browser_setting.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file vconf_browser_setting.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Declaration of temporary, vconf based, browser setting class. - */ - -#ifndef WRT_SRC_DOMAIN_EFL_VCONF_BROWSER_SETTING_H_ -#define WRT_SRC_DOMAIN_EFL_VCONF_BROWSER_SETTING_H_ - -#include -#include - -struct WidgetViewDataStruct; - -class VconfBrowserSetting : public BaseBrowserSetting -{ - public: - explicit VconfBrowserSetting(Evas_Object *elmWebview, - WidgetViewDataStruct *viewData); - - virtual void passUserAgentToWebkit(); - virtual void passSettingToElmWebview(const std::string& key); - private: - WidgetViewDataStruct *m_viewData; -}; - -#endif /* WRT_SRC_DOMAIN_EFL_VCONF_BROWSER_SETTING_H_ */ diff --git a/src/domain/efl/view_logic.cpp b/src/domain/efl/view_logic.cpp deleted file mode 100644 index 2db06b3..0000000 --- a/src/domain/efl/view_logic.cpp +++ /dev/null @@ -1,2053 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file have been implemented in compliance with W3C WARP SPEC. - * but there are some patent issue between W3C WARP SPEC and APPLE. - * so if you want to use this file, refer to the README file in root directory - */ -/** - * @file view_logic.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Koeun Choi (koeun.choi@samsung.com) - * @version 1.0 - * @brief Implementation file for view logic for EFL - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include "attribute_facade.h" -#include "user_agent_profile.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -IMPLEMENT_SAFE_SINGLETON(ViewLogic) -//TODO to be removed (bin headers should not be used here) -#include -#include - -namespace { -// ewk callback -const char *EVAS_SMART_CALLBACK_STARTED = "load,started"; -const char *EVAS_SMART_CALLBACK_PROGRESS = "load,progress"; -const char *EVAS_SMART_CALLBACK_FINISHED = "load,finished"; -const char *EVAS_SMART_CALLBACK_URI_CHANGED = "uri,changed"; -const char *EVAS_SMART_CALLBACK_LINK_HOVER_IN = "link,hover,in"; -const char *EVAS_SMART_CALLBACK_LINK_HOVER_OUT = "link,hover,out"; -const char *EVAS_SMART_CALLBACK_WEBVIEW_RESIZE = "webView,resize"; -const char *EVAS_SMART_CALLBACK_CREATE_WEBVIEW = "create,webview"; -const char *EVAS_SMART_CALLBACK_WINDOW_CLOSE = "window,close"; -const char *EVAS_SMART_CALLBACK_SHOULD_ALLOW_OPEN = "should,allow,open"; -const char *EVAS_SMART_CALLBACK_FRAME_CREATED = "frame,created"; -const char *EVAS_SMART_CALLBACK_ONE_SINGLE_TAP = "one,single,tap"; -const char *EVAS_SMART_CALLBACK_DOWNLOAD_REQUEST = "download,request"; -const char *EVAS_SMART_CALLBACK_HTML5_VIDEO_REQUEST = "html5video,request"; -// ewk frame callback -const char *EVAS_SMART_CALLBACK_CONTENT_SIZE_CHANGED = "contents,size,changed"; -const char *EVAS_SMART_CALLBACK_RESOURCE_REQUEST_WILL_SEND - = "resource,request,willsend"; -const char *EVAS_SMART_CALLBACK_SUBMIT_CLICKED = "submit,clicked"; -// elm-webview callback -const char *EVAS_SMART_CALLBACK_PANNING_STARTED = "pan,started"; -const char *EVAS_SMART_CALLBACK_PANNING_FINISHED = "pan,finished"; -// common callback -const char *EVAS_SMART_CALLBACK_CLICKED = "clicked"; - -// window signal callback -const char *EDJE_SHOW_BACKWARD_SIGNAL = "show,backward,signal"; -//const char *EDJE_HIDE_BACKWARD_SIGNAL = "hide,backward,signal"; - -// view-mode - only support fullscreen & maximized -//const std::string VIEWMODE_TYPE_WINDOWED = "windowed"; -//const std::string VIEWMODE_TYPE_FLOATING = "floating"; -const std::string VIEWMODE_TYPE_FULLSCREEN = "fullscreen"; -const std::string VIEWMODE_TYPE_MAXIMIZED = "maximized"; -//const std::string VIEWMODE_TYPE_MINIMIZED = "minimized"; - -// const for threshold -const double PROGRESS_STOP_LOADING_PERCENT = 0.7f; -const int PROGRESS_STOP_LOADING_TIME_THRESHOLD = 3; -const int SUSPEND_WAIT_TIME_THRESHOLD = 5; - -// Only scheme and path parts are required. -const char* PATTERN_URI_CHANGE = "^(([^:/\\?#]+)://[^\\?#]*)"; - -// for flash plugin on -const char FLASH_MIME_TYPE[] = "application/x-shockwave-flash"; -} // namespace anonymous - -ViewLogic::ViewLogic() : - m_widgetView(NULL), - m_appsSupport(new ViewModule::AppsSupport()) -{ -#ifndef USE_DNET - NetSingleton::Instance().RegisterIpChangedCallback(); -#endif -} - -ViewLogic::~ViewLogic() -{ -#ifdef USE_DNET - if (NetSingleton::Instance().IsConnected()) { - LogInfo("[NET] connection closing"); - NetSingleton::Instance().Close(); - } -#else - NetSingleton::Instance().DeregisterIpChangedCallback(); -#endif -} - -void ViewLogic::initialize() -{ - LogInfo("ViewLogic Initialization...."); - -#ifdef WEBKIT_SOUP_CACHE - LogDebug("Initializing WebKit SOUP cache..."); - // If cache should be shared between more than one instance of WebKit - // then 2nd argument should be set to EINA_TRUE. - if (EINA_FALSE == ewk_cache_init(WEBKIT_SOUP_CACHE_DIR, EINA_FALSE)) { - LogError("Couldn't initialize WebKit cache"); - } - if (EINA_FALSE == ewk_cache_load()) { - LogError("Couldn't load WebKit cache"); - } -#endif -} - -void ViewLogic::terminate() -{ - LogInfo("ViewLogic termination...."); - - if (m_widgetView) { - WidgetModel *widgetModel = m_widgetView->getWidgetModel(); - hideWidget(widgetModel); - widgetModel->State.Set(WidgetState_Stopped); - } - -#ifdef WEBKIT_SOUP_CACHE - LogDebug("Deinitializing WebKit SOUP cache..."); - if (EINA_FALSE == ewk_cache_flush()) { - LogError("Couldn't flush WebKit cache"); - } - if (EINA_FALSE == ewk_cache_dump()) { - LogError("Couldn't dump WebKit cache"); - } -#endif -} - -void ViewLogic::prepareView(WidgetModel* widgetModel, - const WidgetLaunchStruct& widgetLaunchStruct) -{ - using namespace WrtDB; - - ADD_PROFILING_POINT("PrepareView", "start"); - LogInfo("Launching widget model view..." << widgetModel->Handle.Get()); - // Check for developer errors - Assert(m_widgetView == NULL); - - // Register new widget model in pool - m_widgetView = new WidgetViewDataStruct(widgetModel, this); - - ADD_PROFILING_POINT("CreateWindow", "start"); - unsigned long context = - *static_cast(widgetLaunchStruct.launchContext); - m_widgetView->m_windowData = new WindowData(context, NULL); - ADD_PROFILING_POINT("CreateWindow", "stop"); - - // Register view mode - setViewMode(m_widgetView); - // Checking view mode & create title/indicator - bool indicator = true; - bool backbutton = false; - if (widgetModel->Type.Get().appType == APP_TYPE_TIZENWEBAPP) { - indicator - = (widgetModel->SettingList.Get().getIndicatorPresence() - == Indicator_Enable) ? true : false; - backbutton - = (widgetModel->SettingList.Get().getBackButtonPresence() - == BackButton_Enable) ? true : false; - } - - if (m_widgetView->m_viewMode == EWK_VIEW_MODE_MAXIMIZED) { - std::string name = ""; - if (!(widgetModel->Name.Get().IsNull())) { - name = DPL::ToUTF8String(*(widgetModel->Name.Get())); - } - m_widgetView->m_windowData->setViewModeMaximized( - name.c_str(), indicator, backbutton); - } else { - m_widgetView->m_windowData->setViewModeFullScreen( - indicator, backbutton); - } - setDebugMode(m_widgetView, widgetLaunchStruct); - - // Create new webkkit object - m_widgetView->m_elmWidget = m_widgetView->m_windowData->m_win; - m_widgetView->m_view = evas_object_evas_get(m_widgetView->m_elmWidget); - - m_widgetView->m_widgetHandle = widgetModel->Handle.Get(); - - // get value of ELM_SCALE - m_widgetView->m_elmScale = elm_scale_get(); - LogInfo("ELM_SCALE :" << m_widgetView->m_elmScale); - - // initialize value - m_widgetView->m_firstUriChanged = false; - m_widgetView->m_firstUriLoadFinished = false; - // create webview and set callback - createWebview(m_widgetView); - connectCallbacks(m_widgetView->m_widgetModel, widgetLaunchStruct); - - m_widgetView->m_firstPageLoaded = false; - - m_appsSupport->initialize(widgetModel); - ViewModule::StorageSupport::initializeStorage(widgetModel); - - ADD_PROFILING_POINT("PrepareView", "stop"); -} - -void ViewLogic::showWidget(WidgetModel *widgetModel, - const WidgetLaunchStruct &widgetLaunchStruct) -{ - ADD_PROFILING_POINT("ShowWidget", "start"); - - if (!m_widgetView) { - POST_USER_CALLBACK( - new LaunchFinishedCallbackCall( - widgetLaunchStruct.launchFinishedCallback, - NULL, - widgetModel->Handle.Get(), - CommonError::Unknown, - NULL, - widgetLaunchStruct.userParam)); - return; - } - WidgetViewDataStruct* widgetView = m_widgetView; - - - widgetView->m_currentUri = - ViewModule::UriSupport::getUri( - widgetLaunchStruct.widgetArg, - widgetModel); - - // Set proper window size - WidgetSize size = widgetModel->PreferredSize.Get(); - - evas_object_resize(EVAS_ELM_WEBVIEW(widgetView), - !size.width.IsNull() ? *size.width : 1, - !size.height.IsNull() ? *size.height : 1); - -#if USE_DNET - if (!NetSingleton::Instance().IsConnected()) { - LogInfo("[NET] try to open dnet"); - if (NetSingleton::Instance().Open(netOpenRsrcRequestCallback, - widgetView) == true) - { - LogInfo("[NET] REALLY OPEN DNET!!!!"); - } else { - LogInfo("[NET] do not need to open"); - elm_webview_uri_set(EVAS_ELM_WEBVIEW(widgetView), - widgetView->m_currentUri.c_str()); - ewk_view_reload(EVAS_WEBVIEW(widgetView)); - widgetView->m_firstPageLoaded = true; - } - } else { - LogInfo("[NET] dnet is already connected : not need to reconnect..."); - elm_webview_uri_set(EVAS_ELM_WEBVIEW(widgetView), - widgetView->m_currentUri.c_str()); - ewk_view_reload(EVAS_WEBVIEW(widgetView)); - widgetView->m_firstPageLoaded = true; - } -#else - // proxy server setting - char *proxyAddress = vconf_get_str(VCONFKEY_NETWORK_PROXY); - - if ((!proxyAddress) || (strlen(proxyAddress) == 0) - || (strstr(proxyAddress, "0.0.0.0"))) - { - LogInfo("proxy address is empty"); - ewk_network_proxy_uri_set(NULL); - } else { - LogInfo("proxy address [" << proxyAddress << "]"); - ewk_network_proxy_uri_set(vconf_get_str(VCONFKEY_NETWORK_PROXY)); - } - - if (proxyAddress) { - free(proxyAddress); - proxyAddress = NULL; - } - - elm_webview_uri_set(EVAS_ELM_WEBVIEW(widgetView), - widgetView->m_currentUri.c_str()); - ewk_view_reload(EVAS_WEBVIEW(widgetView)); - widgetView->m_firstPageLoaded = true; -#endif - - widgetView->m_windowData->setEvasObjectForLayout( - EVAS_ELM_WEBVIEW(widgetView)); - evas_object_show(EVAS_ELM_WEBVIEW(widgetView)); - evas_object_show(widgetView->m_elmWidget); - - ADD_PROFILING_POINT("ShowWidget", "stop"); - -} - -void ViewLogic::hideWidget(WidgetModel *widgetModel) -{ - LogInfo("Killing widget model view..."); - - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - if (!widgetView) { - LogError("Invalid widget model passed!"); - return; - } - - m_appsSupport->deinitialize(); - ViewModule::StorageSupport::deinitializeStorage(widgetModel); - - // Remove webkit callbacks - disconnectCallbacks(widgetModel); - FOREACH(it, widgetView->m_evasStructList) { - disconnectViewCallbacks(widgetView, *it); - } - - // Disable Plugins - ewk_view_setting_enable_plugins_set(EVAS_WEBVIEW(widgetView), 0); - - if (widgetView->imContext != NULL && - (ecore_imf_context_input_panel_state_get(widgetView->imContext) - == ECORE_IMF_INPUT_PANEL_STATE_SHOW)) - { - ecore_imf_context_input_panel_hide(widgetView->imContext); - widgetView->imContext = NULL; - } - - LogInfo("Stop session"); - // Unload plugins - PluginLogicSingleton::Instance().stopSession(); - - LogInfo("webkit del"); - FOREACH(it, widgetView->m_evasStructList) { - EvasStruct* evasStruct = *it; - // remove EvasObject - evas_object_del(evasStruct->m_elmWebView); - evas_object_del(evasStruct->m_webView); - delete evasStruct; - } - widgetView->m_evasStructList.clear(); - - LogInfo("remove widgetView"); - // Erase from known widget models - - delete widgetView->m_windowData; - delete widgetView; - m_widgetView = NULL; - - LogInfo("Widget model view killed."); -} - -void ViewLogic::connectCallbacks(WidgetModel *widgetModel, - const WidgetLaunchStruct &widgetLaunchStruct) -{ - Assert(widgetModel != NULL); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - Assert(widgetView); - WidgetLaunchStruct* launchStruct = - new WidgetLaunchStruct(widgetLaunchStruct); - - // key - m_widgetView->m_eventHandlerDown = ecore_event_handler_add( - ECORE_EVENT_KEY_DOWN, - &ViewLogic::keydownEvent, - widgetView); - m_widgetView->m_eventHandlerUp = ecore_event_handler_add( - ECORE_EVENT_KEY_UP, - &ViewLogic::keyupEvent, - widgetView); - - // add callback to relate window - if (widgetModel->Type.Get().appType == WrtDB::APP_TYPE_TIZENWEBAPP) { - if (widgetModel->SettingList.Get().getBackButtonPresence() == - BackButton_Enable) - { - widgetView->m_windowData->addFloatBackButtonCallback( - EVAS_SMART_CALLBACK_CLICKED, - &ViewLogic::backKeyCallback, - widgetView); - } - - WidgetSettingRotationLock rotationValue = - widgetModel->SettingList.Get().getRotationValue(); - if (rotationValue == Rotation_Portrait) { - elm_win_rotation_with_resize_set(widgetView->m_elmWidget, 0); - } else if (rotationValue == Rotation_Landscape) { - elm_win_rotation_with_resize_set(widgetView->m_elmWidget, 270); - } - } - - widgetView->m_windowData->userlayoutCallbackAdd( - EVAS_CALLBACK_RESIZE, - resizeUserlayoutCallback, - widgetView); - if (!widgetView->m_firstUriChanged) { - EVAS_WEBVIEW(widgetView).ConnectSmartCallback( - EVAS_SMART_CALLBACK_FINISHED, - &finishedCallback, - launchStruct, - widgetView); - } -} - -void ViewLogic::disconnectCallbacks(WidgetModel *widgetModel) -{ - Assert(widgetModel); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - Assert(widgetView); - LogDebug("Disconnecting callbacks ..."); - - // key - ecore_event_handler_del(widgetView->m_eventHandlerDown); - ecore_event_handler_del(widgetView->m_eventHandlerUp); - - if (widgetModel->Type.Get().appType == WrtDB::APP_TYPE_TIZENWEBAPP) { - if (widgetModel->SettingList.Get().getBackButtonPresence() == - BackButton_Enable) - { - widgetView->m_windowData->delFloatBackButtonCallback( - EVAS_SMART_CALLBACK_CLICKED, - &ViewLogic::backKeyCallback); - } - } - - widgetView->m_windowData->userlayoutCallbackDel( - EVAS_CALLBACK_RESIZE, - resizeUserlayoutCallback); - LogDebug("Disconnecting callbacks done"); -} - -void ViewLogic::connectViewCallbacks(WidgetViewDataStruct *widgetView, - EvasStruct* evasStruct) -{ - using namespace ViewModule::SchemeSupport; - - LogDebug("connectViewCallbacks"); - Assert(widgetView); - Assert(widgetView->m_currentEvasStruct); - - EvasObject elmWebView = evasStruct->m_elmWebView; - EvasObject webView = evasStruct->m_webView; - EvasObject webViewFrame = evasStruct->m_webViewFrame; - - // connection callback to ewk - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_STARTED, - &startedCallback, - widgetView->m_widgetModel->Type.Get(), - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_PROGRESS, - &progressCallback, - widgetView); - if (widgetView->m_firstUriChanged) { - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_FINISHED, - &finishedCallback, - static_cast(NULL), - widgetView); - } - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_URI_CHANGED, - &uriChangedCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_LINK_HOVER_IN, - &linkHoverInCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_LINK_HOVER_OUT, - &linkHoverOutCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_WEBVIEW_RESIZE, - &webviewResizeCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_CREATE_WEBVIEW, - &createWebviewCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_WINDOW_CLOSE, - &windowCloseCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_SHOULD_ALLOW_OPEN, - &shouldAllowOpenCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_FRAME_CREATED, - &frameCreatedCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_ONE_SINGLE_TAP, - &oneSingleTapCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_DOWNLOAD_REQUEST, - &downloadRequestCallback, - widgetView); - webView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_HTML5_VIDEO_REQUEST, - &html5VideoRequestCallback, - widgetView); - - // We shall connect to size change event because we need actual size for - // widget preferences - widgetView->m_contentSizeChangedConnection = webViewFrame. - ConnectSmartCallback(EVAS_SMART_CALLBACK_CONTENT_SIZE_CHANGED, - &contentResizeCallback, - widgetView); - webViewFrame.ConnectSmartCallback( - EVAS_SMART_CALLBACK_RESOURCE_REQUEST_WILL_SEND, - &resourceRequestWillSendCallback, - widgetView); - webViewFrame.ConnectSmartCallback( - EVAS_SMART_CALLBACK_SUBMIT_CLICKED, - &submitClickedCallback, - widgetView); - - // connection callback to elm-webview - elmWebView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_PANNING_STARTED, - &panningStartedCallback, - widgetView); - elmWebView.ConnectSmartCallback( - EVAS_SMART_CALLBACK_PANNING_FINISHED, - &panningFinishedCallback, - widgetView); - - std::string prefix = DPL::ToUTF8String( - m_widgetView->m_widgetModel->PrefixURL.Get()); - elm_webview_scheme_callback_set( - elmWebView, prefix.c_str(), &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_FILE, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_HTTPS, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_HTTP, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_MMSTO, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_MAILTO, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_TEL, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_DATA, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_SMS, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_WIDGET, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_YOUTUBE, &schemeCallback); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_RTSP, &schemeCallback); -} - -void ViewLogic::disconnectViewCallbacks(WidgetViewDataStruct *widgetView, - EvasStruct* evasStruct) -{ - using namespace ViewModule::SchemeSupport; - - LogDebug("disconnectViewCallbacks callbacks ..."); - Assert(widgetView != NULL); - Assert(evasStruct != NULL); - - EvasObject elmWebView = evasStruct->m_elmWebView; - EvasObject webView = evasStruct->m_webView; - EvasObject webViewFrame = evasStruct->m_webViewFrame; - - if (widgetView->m_contentSizeChangedConnection) { - webViewFrame.DisconnectCallback( - widgetView->m_contentSizeChangedConnection); - widgetView->m_contentSizeChangedConnection = NULL; - } - webView.DisconnectAll(); - webViewFrame.DisconnectAll(); - elmWebView.DisconnectAll(); - - std::string prefix = DPL::ToUTF8String( - m_widgetView->m_widgetModel->PrefixURL.Get()); - elm_webview_scheme_callback_set( - elmWebView, prefix.c_str(), NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_FILE, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_HTTPS, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_HTTP, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_MMSTO, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_MAILTO, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_TEL, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_DATA, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_SMS, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_WIDGET, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_YOUTUBE, NULL); - elm_webview_scheme_callback_set( - elmWebView, SCHEME_TYPE_RTSP, NULL); - - LogDebug("disconnectViewCallbacks callbacks done"); -} - -void ViewLogic::suspendWidget(WidgetModel *widgetModel, - const OperationStatusStruct &operationStatus) -{ - LogInfo("Pausing widget"); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - - if (!widgetView) { - LogError("Invalid widget model passed!"); - return; - } - - suspendWebkit(widgetView); - - // Inform listeners - POST_USER_CALLBACK( - new OperationStatusCallbackCall( - operationStatus.operationStatusCallback, - widgetModel->Handle.Get(), - CommonError::WrtSuccess, - operationStatus.userParam)); -} - -void ViewLogic::resumeWidget(WidgetModel *widgetModel, - const OperationStatusStruct &operationStatus) -{ - LogInfo("Resume widget"); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - - if (!widgetView) { - LogError("Invalid widget model passed!"); - return; - } - resumeWebkit(widgetView); - elm_win_activate(widgetView->m_elmWidget); - // Inform listeners - POST_USER_CALLBACK( - new OperationStatusCallbackCall( - operationStatus.operationStatusCallback, - widgetModel->Handle.Get(), - CommonError::WrtSuccess, - operationStatus.userParam)); -} - -void ViewLogic::widgetWebkitReset(WidgetModel *widgetModel, - std::string appService) -{ - LogInfo("widgetWebkitReset"); - LogInfo("appService = " << appService); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - - if (!widgetView || !EVAS_WEBVIEW(widgetView)) { - LogError("Invalid widget model passed!"); - return; - } - - // stop and destory current webview - ewk_view_stop(EVAS_WEBVIEW(widgetView)); - evas_object_hide(EVAS_WEBVIEW(widgetView)); - widgetView->m_windowData->unsetEvasObjectForLayout(); - widgetView->m_viewLogic->removeWebview(widgetView); - // remove all webview in the list - FOREACH(it, widgetView->m_evasStructList) { - widgetView->m_currentEvasStruct = *it; - evas_object_del(EVAS_ELM_WEBVIEW(widgetView)); - evas_object_del(EVAS_WEBVIEW(widgetView)); - } - widgetView->m_evasStructList.clear(); - // create new webview - widgetView->m_viewLogic->createWebview(widgetView); - - widgetView->m_currentUri = - ViewModule::UriSupport::getUri(appService, widgetModel); - - elm_webview_uri_set(EVAS_ELM_WEBVIEW(widgetView), - widgetView->m_currentUri.c_str()); - setLayoutIdlerCallback(widgetView); -} - -std::string ViewLogic::getWidgetUAValue(WidgetModel *widgetModel) -{ - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - - if (!widgetView || !EVAS_WEBVIEW(widgetView)) { - return "USER_AGENT_DATA"; - } - std::string ret; - ret = ewk_view_setting_user_agent_get(EVAS_WEBVIEW(widgetView)); - return ret; -} - -void ViewLogic::javaScriptSuspend(WidgetModel *widgetModel) -{ - //TODO REMOVE - LogInfo("Pausing widget"); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - - if (!widgetView) { - LogError("Invalid widget model passed!"); - return; - } - - ewk_view_javascript_suspend(EVAS_WEBVIEW(widgetView)); -} - -void ViewLogic::javaScriptResume(WidgetModel *widgetModel) -{ - //TODO REMOVE - LogInfo("Resume widget"); - WidgetViewDataStruct *widgetView = findWidgetView(widgetModel); - - if (!widgetView) { - LogError("Invalid widget model passed!"); - return; - } - - ewk_view_javascript_resume(EVAS_WEBVIEW(widgetView)); -} - -EvasObject ViewLogic::getViewForHandle(WidgetHandle handle) const -{ - EvasObject evas; - WidgetViewDataStruct* widgetView = findWidgetViewForHandle(handle); - if (!widgetView) { - LogError("View for handle doesn't exist"); - return evas; - } - evas = EVAS_WEBVIEW(widgetView); - return evas; -} - -void ViewLogic::prepareWebview(WidgetViewDataStruct* widgetView) -{ - ADD_PROFILING_POINT("prepareWebview", "start"); - LogInfo("Launching widget model view..." << widgetView->m_widgetHandle); - - // Create ELM WebView - ADD_PROFILING_POINT("CreateElmWebView", "start"); - EVAS_ELM_WEBVIEW(widgetView) = - elm_webview_add(widgetView->m_elmWidget, EINA_TRUE); - ADD_PROFILING_POINT("CreateElmWebView", "stop"); - - // Retrieve underlying ewk view - EVAS_WEBVIEW(widgetView) = elm_webview_webkit_get( - EVAS_ELM_WEBVIEW(widgetView)); - EVAS_WEBVIEW_FRAME(widgetView) = ewk_view_frame_main_get( - EVAS_WEBVIEW(widgetView)); - - // Touch processor - elm_webview_enable_default_touch_set( - EVAS_ELM_WEBVIEW(widgetView), - EINA_TRUE); - - WrtDB::WidgetDAOReadOnly dao(widgetView->m_widgetHandle); - - LogInfo("ELM-WEBVIEW ENABLED"); - if (dao.getWebkitPluginsRequired()) { - LogDebug("Webkit Plugins ENABLED"); - // Enable Plugins - ewk_view_setting_enable_plugins_set(EVAS_WEBVIEW(widgetView), 1); - } else { - LogDebug("Webkit Plugins DISABLED"); - } - - ewk_view_mode_set(EVAS_WEBVIEW(widgetView), widgetView->m_viewMode); - // AC is always off - ewk_view_setting_accelerated_compositing_enable_set( - EVAS_WEBVIEW(widgetView), EINA_FALSE); - // External viedeo player is almost off - Eina_Bool bExternalVideoplayer = EINA_FALSE; - // Magnifier is almost off - Eina_Bool bMagnifier = EINA_FALSE; - if (widgetView->m_widgetModel->Type.Get().appType == - WrtDB::APP_TYPE_TIZENWEBAPP) - { - if (widgetView->m_widgetModel-> - SettingList.Get().getExternalVideoplayer() - == ExternalVideoplayer_Enable) - { - bExternalVideoplayer = EINA_TRUE; - } - if (widgetView->m_widgetModel->SettingList.Get().getMagnifier() == - Magnifier_On) - { - bMagnifier = EINA_TRUE; - } - } - widgetView->initializeBrowserSettings(); - - ewk_view_setting_enable_scripts_set( - EVAS_WEBVIEW(widgetView), EINA_TRUE); - ewk_view_setting_auto_load_images_set( - EVAS_WEBVIEW(widgetView), EINA_TRUE); - ewk_view_setting_enable_plugins_set( - EVAS_WEBVIEW(widgetView), EINA_TRUE); - ewk_view_setting_enable_specified_plugin_set( - EVAS_WEBVIEW(widgetView), EINA_TRUE, FLASH_MIME_TYPE); - ewk_view_setting_html5video_external_player_enable_set( - EVAS_WEBVIEW(widgetView), bExternalVideoplayer); - elm_webview_show_magnifier_set( - EVAS_ELM_WEBVIEW(widgetView), bMagnifier); - - if (widgetView->m_widgetModel->Type.Get().appType == - WrtDB::APP_TYPE_TIZENWEBAPP) - { - if (!((widgetView->m_widgetModel->SettingList.Get().getUserAgent()) - .empty())) - { - ewk_view_setting_user_agent_set( - EVAS_WEBVIEW(widgetView), - (widgetView->m_widgetModel->SettingList.Get().getUserAgent()) - .c_str()); - } - } - - elm_webview_auto_fitting_set(EVAS_ELM_WEBVIEW(widgetView), EINA_FALSE); - // disable zoom option when user click the input field - // this option is useful with the normal website - // for the make user friendly, disable auto zoom in the webapp - elm_webview_input_field_zoom_set(EVAS_ELM_WEBVIEW(widgetView), EINA_FALSE); - // set visibility to WebCore. This value will be used for html5. - // also, this value will be changed in the suspend, resume - // or create window, close window. - ewk_view_visibility_state_set( - EVAS_WEBVIEW(widgetView), - EWK_PAGE_VISIBILITY_STATE_VISIBLE, EINA_TRUE); - - // set cookie database path - if (!ewk_cookies_file_set(dao.getCookieDatabasePath().c_str())) { - LogError("Fail to set Cookie path"); - } - - // set local stroage database path - if (!ewk_view_setting_local_storage_database_path_set( - EVAS_WEBVIEW(widgetView), - dao.getPrivateLocalStoragePath().c_str())) - { - LogError("Fail to set Local stroage path"); - } - - // Load all needed plugins - ADD_PROFILING_POINT("LoadingPluginsIntoSession", "start"); - PluginLogicSingleton::Instance().startSession( - widgetView->m_widgetModel->Handle.Get(), - EVAS_WEBVIEW(widgetView), - DEFAULT_ENGINE_INTERFACE, - widgetView->m_elmScale); - ADD_PROFILING_POINT("LoadingPluginsIntoSession", "stop"); - - ADD_PROFILING_POINT("prepareWebview", "stop"); -} - -void ViewLogic::createWebview(WidgetViewDataStruct* widgetView) -{ - LogInfo("createWebview called"); - Assert(widgetView); - // create EvasStruct - EvasStruct *evasStruct = new EvasStruct(); - widgetView->m_currentEvasStruct = evasStruct; - // set webview - widgetView->m_viewLogic->prepareWebview(widgetView); - widgetView->m_evasStructList.push_back(evasStruct); - // register callback - widgetView->m_viewLogic->connectViewCallbacks( - widgetView, - widgetView->m_currentEvasStruct); - return; -} - -void ViewLogic::removeWebview(WidgetViewDataStruct* widgetView) -{ - LogInfo("removeWebview called"); - Assert(widgetView); - Assert(1 <= widgetView->m_evasStructList.size()); - // unregister plugin session - PluginLogicSingleton::Instance().stopSession(); - JSGlobalContextRef jsGlobalContext = - ewk_view_get_global_context(EVAS_WEBVIEW(widgetView)); - JSGarbageCollect(jsGlobalContext); - // unregister callback - widgetView->m_viewLogic->disconnectViewCallbacks( - widgetView, - widgetView->m_currentEvasStruct); - // suspend NPAPI plugin - ewk_view_pause_or_resume_plugins(EVAS_WEBVIEW(widgetView), EINA_TRUE); - // release data strucutre - widgetView->m_evasStructList.remove(widgetView->m_currentEvasStruct); - evas_object_del(EVAS_ELM_WEBVIEW(widgetView)); - evas_object_del(EVAS_WEBVIEW(widgetView)); - delete widgetView->m_currentEvasStruct; - return; -} - -void ViewLogic::resumeWebview(WidgetViewDataStruct* widgetView) -{ - LogInfo("resumeWebview called"); - Assert(widgetView); - Assert(1 <= widgetView->m_evasStructList.size()); - // resume previous webview - widgetView->m_currentEvasStruct = widgetView->m_evasStructList.back(); - // register callback - widgetView->m_viewLogic->connectViewCallbacks( - widgetView, - widgetView->m_currentEvasStruct); - // resume webkit - widgetView->m_viewLogic->resumeWebkit(widgetView); - // Add plugin - PluginLogicSingleton::Instance().startSession( - widgetView->m_widgetModel->Handle.Get(), - EVAS_WEBVIEW(widgetView), - DEFAULT_ENGINE_INTERFACE, - widgetView->m_elmScale); - LogInfo("Finished windowCloseIdlerCallback"); - return; -} - -void ViewLogic::suspendWebview(WidgetViewDataStruct* widgetView) -{ - LogInfo("suspendWebview called"); - // remove plugin - PluginLogicSingleton::Instance().stopSession(); - JSGlobalContextRef jsGlobalContext = - ewk_view_get_global_context(EVAS_WEBVIEW(widgetView)); - JSGarbageCollect(jsGlobalContext); - // remove callback - widgetView->m_viewLogic->disconnectViewCallbacks( - widgetView, - widgetView->m_currentEvasStruct); - // suspend webkit - widgetView->m_viewLogic->suspendWebkit(widgetView); - return; -} - -void ViewLogic::resumeWebkit(WidgetViewDataStruct* widgetView) -{ - LogDebug("resumeWebkit"); - // check if suspend timer was expired - if (widgetView->m_suspendTimer != NULL) { - ecore_timer_del(widgetView->m_suspendTimer); - widgetView->m_suspendTimer = NULL; - } - - // resume NPAPI plugin - ewk_view_pause_or_resume_plugins(EVAS_WEBVIEW(widgetView), EINA_FALSE); - ewk_view_javascript_resume(EVAS_WEBVIEW(widgetView)); - ewk_view_enable_render(EVAS_WEBVIEW(widgetView)); - ewk_view_reduce_plugins_frame_rate(EVAS_WEBVIEW(widgetView), EINA_FALSE); - ewk_view_resume_request(EVAS_WEBVIEW(widgetView)); - ewk_view_visibility_state_set( - EVAS_WEBVIEW(widgetView), - EWK_PAGE_VISIBILITY_STATE_VISIBLE, EINA_FALSE); - - return; -} - -void ViewLogic::suspendWebkit(WidgetViewDataStruct* widgetView) -{ - LogDebug("suspendWebkit"); - - // suspend immediately - ewk_view_pause_or_resume_plugins(EVAS_WEBVIEW(widgetView), EINA_TRUE); - - // send visibility event to webpage - ewk_view_visibility_state_set( - EVAS_WEBVIEW(widgetView), - EWK_PAGE_VISIBILITY_STATE_HIDDEN, EINA_FALSE); - - // set a timer to be used to wait for SUSPEND_WAIT_TIME_THRESHOLD - widgetView->m_needSuspendWebview = EVAS_WEBVIEW(widgetView); - widgetView->m_suspendTimer = - ecore_timer_add(SUSPEND_WAIT_TIME_THRESHOLD, - suspendTimerCallback, widgetView); - return; -} - -WidgetViewDataStruct* -ViewLogic::findWidgetView(WidgetModel */*widgetModel*/) const -{ - return m_widgetView; -} - -WidgetViewDataStruct *ViewLogic::findWidgetViewForHandle( - WidgetHandle widgetHandle) const -{ - LogDebug("findWidgetViewForHandle"); - WidgetModel* widgetModel = m_widgetView->getWidgetModel(); - if (widgetModel != NULL) { - if (widgetModel->Handle.Get() == widgetHandle) { - return m_widgetView; - } else { - LogDebug("WidgetHandle wrong"); - return NULL; - } - } else { - LogDebug("widgetModel is null"); - return NULL; - } -} - -void ViewLogic::backKeyCallback(void * data, - Evas_Object * /*obj*/, - void * /*event_info*/) -{ - LogInfo("BackKeyCallback called"); - - WidgetViewDataStruct *widgetView = - static_cast(data); - - if (!widgetView) { - LogError("Required object(widgetView) is NULL!!"); - return; - } - - if (ewk_view_back_possible(EVAS_WEBVIEW(widgetView))) { - if (!ewk_view_back(EVAS_WEBVIEW(widgetView))) { - LogError("ewk_view_back is failed"); - } - } else { - int webview_count = widgetView->m_evasStructList.size(); - LogInfo("Current number of webview " << webview_count); - - if (1 >= webview_count) { - // If there is no previous page, widget move to backgroud. - LogInfo("Widget move to backgroud"); - elm_win_lower(widgetView->m_elmWidget); - } else { - // Back to previous webview - LogInfo("Widget move to previous webview"); - ecore_idler_add(windowCloseIdlerCallback, widgetView); - } - } -} - -void ViewLogic::resizeUserlayoutCallback(void* data, - Evas* /* evas */, - Evas_Object* /* userlayout */, - void* /* event_info */) -{ - LogInfo("resizeWebviewElm called"); - WidgetViewDataStruct *widgetView = - static_cast(data); - Assert(widgetView && "widgetView is NULL"); - - widgetView->m_windowData->moveProgress(); -} - -Eina_Bool ViewLogic::keydownEvent(void *data, int /*type*/, void *event) -{ - using namespace ViewModule::KeysSupport; - - LogDebug("keydownEvent called"); - Ecore_Event_Key *ev = static_cast(event); - WidgetViewDataStruct *widgetView = - static_cast(data); - - if (!ev || - !widgetView || - !widgetView->m_widgetModel) - { - return ECORE_CALLBACK_RENEW; - } - - Ecore_Evas *ee = ecore_evas_ecore_evas_get(widgetView->m_view); - Ecore_Window myWin = ecore_evas_window_get(ee); - if (myWin != ev->event_window) { - return ECORE_CALLBACK_RENEW; - } - - if (widgetView->m_widgetModel->BackSupported.Get()) { - // We should send this signal back to webkit - if (!strcmp(ev->keyname, KEYS_END)) { - LogDebug("Send to Webkit"); - Evas_Event_Key_Down evas_event = - getEvasFromEcoreKey( - widgetView->m_view, - ev); - - //after setting focus the key event shows in webkit,but not - //on first time evas_object_focus_set(EVAS_WEBVIEW(widgetView), - //EINA_TRUE); - ewk_frame_feed_key_down( - EVAS_WEBVIEW_FRAME(widgetView), - &evas_event); - } - return ECORE_CALLBACK_CANCEL; - } else { - // We should send this to close widget - if (!strcmp(ev->keyname, KEYS_END)) { - LogDebug("Send back key to daemon peer"); - evas_object_smart_callback_call(//TODO is it still correct? - widgetView->m_elmWidget, - WinKeyEvent, - event); - return ECORE_CALLBACK_CANCEL; - } - } - return ECORE_CALLBACK_RENEW; -} - -Eina_Bool ViewLogic::keyupEvent(void *data, int /*type*/, void *event) -{ - using namespace ViewModule::KeysSupport; - - LogDebug("keyupEvent called"); - Ecore_Event_Key *ev = static_cast(event); - WidgetViewDataStruct *widgetView = - static_cast(data); - - if (!ev || - !widgetView || - !widgetView->m_widgetModel) - { - return ECORE_CALLBACK_RENEW; - } - - Ecore_Evas *ee = ecore_evas_ecore_evas_get(widgetView->m_view); - Ecore_Window myWin = ecore_evas_window_get(ee); - if (myWin != ev->event_window) { - return ECORE_CALLBACK_RENEW; - } - - if (widgetView->m_widgetModel->BackSupported.Get()) { - if (!strcmp(ev->keyname, KEYS_END)) { - LogDebug("Entered keyup event"); - Evas_Event_Key_Up evas_event = - getEvasFromEcoreKey( - widgetView->m_view, - ev); - //after setting focus the key event shows in webkit,but not on - //first time evas_object_focus_set(EVAS_WEBVIEW(widgetView), - //EINA_TRUE); - ewk_frame_feed_key_up( - EVAS_WEBVIEW_FRAME(widgetView), - &evas_event); - return ECORE_CALLBACK_CANCEL; - } - } else { - LogInfo("We don't send keyup to daemon peer"); - } - return ECORE_CALLBACK_RENEW; -} - -void ViewLogic::startedCallback(EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WrtDB::WidgetType widgetType, - WidgetViewDataStruct* widgetView) -{ - LogDebug("StartedCallback called"); - widgetView->m_windowData->loadingOn(); - // This value will be used in the "resource,request,willsend" and - // "uri,changed". It will be used skip WARP checking in the - // "resource,request,willsend" callback. Then uri will be checked - // WARP in the "uri,changed". If there in no permission for - // WARP, uri will be opened in the External Browser - if (widgetType.appType == WrtDB::APP_TYPE_TIZENWEBAPP) { - widgetView->m_isMainResource = true; - } -} - -void ViewLogic::progressCallback(EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WidgetViewDataStruct* widgetView) -{ - double progress = ewk_view_load_progress_get(EVAS_WEBVIEW(widgetView)); - - LogDebug("ProgressCallback called % = [" << progress << "]"); - - if (progress > PROGRESS_STOP_LOADING_PERCENT) { - if (widgetView->m_progressTimer) { - ecore_timer_del(widgetView->m_progressTimer); - widgetView->m_progressTimer = NULL; - } - - widgetView->m_progressTimer = - ecore_timer_add( - PROGRESS_STOP_LOADING_TIME_THRESHOLD, - progressTimerCallback, widgetView); - } -} - -void ViewLogic::finishedCallback(EvasObject::IConnection* connection, - void* /*event_info*/, - WidgetLaunchStruct* widgetLaunchStruct, - WidgetViewDataStruct* widgetView) -{ - LogDebug("finishedCallback called"); - if (widgetView->m_progressTimer) { - ecore_timer_del(widgetView->m_progressTimer); - widgetView->m_progressTimer = NULL; - } - widgetView->m_windowData->loadingOff(); - if (widgetView->m_viewMode == EWK_VIEW_MODE_FULLSCREEN - || widgetView->m_viewMode == EWK_VIEW_MODE_MAXIMIZED) - { - widgetView->m_windowData->emitSignalForUserLayout( - EDJE_SHOW_BACKWARD_SIGNAL, ""); - } - - DPL::Optional autoData - = ViewModule::PasswordSupport::getAutoFillData( - widgetView->m_currentUri.c_str()); - if (!autoData.IsNull()) { - ewk_view_autofill_personal_data( - EVAS_WEBVIEW(widgetView), - DPL::ToUTF8String(autoData->userId).c_str(), - DPL::ToUTF8String(autoData->passwd).c_str()); - } - - if (!widgetView->m_firstUriLoadFinished) { - LogInfo("Widget model view launched. Posting resulting" - " callback to user callback controller."); - LaunchFinishedCallbackCall* cb = - new LaunchFinishedCallbackCall( - widgetLaunchStruct->launchFinishedCallback, - static_cast(EVAS_ELM_WEBVIEW(widgetView)), - widgetView->m_widgetHandle, - CommonError::WrtSuccess, - _("IDS_BR_POP_MIDP_SUCCESS"), - widgetLaunchStruct->userParam); - widgetView->m_firstUriLoadFinished = true; - POST_USER_CALLBACK(cb); - - //disconnect from this callback - connection->Disconnect(); - // define temp argument - WidgetLaunchStruct* launchStruct = NULL; - //Add callback again without widgetLaunchStruct. - //WidgetLaunchStruct used for post LaunchFinishedCallbackCall. - EVAS_WEBVIEW(widgetView).ConnectSmartCallback( - EVAS_SMART_CALLBACK_FINISHED, - &finishedCallback, - launchStruct, - widgetView); - delete widgetLaunchStruct; - } -} - -void ViewLogic::uriChangedCallback(EvasObject::IConnection* /*connection*/, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - const char *uri = static_cast(event_info); - - // If current uri doesn't have permission for opening in the main window, - // uri open in the external browser - if (widgetView->m_isMainResource) { - widgetView->m_isMainResource = false; - if (!ViewModule::SecuritySupport::checkWARP( - uri, - widgetView->m_widgetModel)) - { - LogDebug("Request was blocked by WARP: " << uri); - ViewModule::SchemeSupport::handleURIByScheme( - ViewModule::SchemeSupport::SCHEME_TYPE_HTTP, - uri); - if (ewk_view_back_possible(EVAS_WEBVIEW(widgetView))) { - if (!ewk_view_back(EVAS_WEBVIEW(widgetView))) { - LogError("ewk_view_back is failed"); - } - } else { - if (!ewk_view_stop(EVAS_WEBVIEW(widgetView))) { - LogError("ewk_view_stop is failed.\n"); - } - LogInfo("Widget move to previous webview"); - ecore_idler_add(windowCloseIdlerCallback, widgetView); - } - return; - } - } - - if (!widgetView->m_firstUriChanged) { - LogInfo("First UriChanged occured! Uri: " << uri); - widgetView->m_firstUriChanged = true; - widgetView->m_currentUri = uri; - return; - } - - std::string matchedScheme; - std::string matchedUri; - if (pcrecpp::RE(PATTERN_URI_CHANGE).PartialMatch(uri, - &matchedUri, - &matchedScheme)) - { - LogDebug("Scheme: " << matchedScheme << ", Uri: " << matchedUri); - if (widgetView->m_currentUri == matchedUri) { - return; - } - widgetView->m_currentUri = matchedUri; - } - - LogInfo("Next UriChanged occured! Uri: " << uri); - LogInfo("Stop session"); - // Unload plugins - PluginLogicSingleton::Instance().stopSession(); - - // This callback is called for ONLY http, https, file, widget scheme. - // uri with file/widget scheme has wrt plugin objects - // unconditionally for WAC/Tizen. - // But WRT should check uri with http, https scheme for Tizen - // if the uri with the scheme are included in white list, or not. - // TODO how about 'ftp' scheme? - if (ViewModule::SchemeSupport::SCHEME_TYPE_HTTP == matchedScheme - || ViewModule::SchemeSupport::SCHEME_TYPE_HTTPS == matchedScheme) - { - if (widgetView->m_widgetModel->Type.Get().appType - == WrtDB::APP_TYPE_TIZENWEBAPP) - { - if (!ViewModule::SecuritySupport::checkWhitelist(uri)) { - LogInfo("This uri is not included in white document list"); - return; - } - LogInfo("This is URI included in WhiteList"); - } else { - // For WAC, WRT should block access of device api - // for external documents - return; - } - } - - LogInfo("Start Session"); - JSGlobalContextRef jsGlobalContext = - ewk_view_get_global_context(EVAS_WEBVIEW(widgetView)); - JSGarbageCollect(jsGlobalContext); - PluginLogicSingleton::Instance().startSession( - widgetView->m_widgetModel->Handle.Get(), - EVAS_WEBVIEW(widgetView), - DEFAULT_ENGINE_INTERFACE, - widgetView->m_elmScale); -} - -void ViewLogic::linkHoverInCallback(EvasObject::IConnection* /*conn*/, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - LogDebug("Called"); - Assert(widgetView); - - // link[0] is a links href, link[1] is a link title - const char** link = static_cast(event_info); - if (!link || !link[0]) { - LogError("No link passed"); - return; - } - widgetView->hoveredLink = DPL::FromUTF8String(link[0]); -} - -void ViewLogic::linkHoverOutCallback (EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WidgetViewDataStruct* widgetView) -{ - LogDebug("Called"); - Assert(widgetView); - widgetView->hoveredLink = DPL::FromUTF8String(""); -} - -void ViewLogic::webviewResizeCallback(EvasObject::IConnection* /*conn*/, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - Evas_Point* point = static_cast(event_info); - widgetView->webviewMaxWidth = point->x; - widgetView->webviewMaxHeight = point->y; - LogDebug("WebView max size hint: " << point->x << " " << point->y); - - ViewLogic *This = widgetView->m_viewLogic; - This->doContentResize(widgetView); -} - -void ViewLogic::createWebviewCallback(EvasObject::IConnection* /*conn*/, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - LogInfo("createWebviewCallback called"); - Elm_WebView_Create_Webview_Data *createWebviewData = - static_cast(event_info); - // ToDo : investigate cases which are using "navigation_action" - LogInfo("navigation_action [" << - createWebviewData->navigation_action << "]"); - LogInfo("frame_name [" << createWebviewData->frame_name << "]"); - LogInfo("isMobile [" << (bool)createWebviewData->isMobile << "]"); - LogInfo("javascript [" << (bool)createWebviewData->javascript << "]"); -/* -typedef enum { - WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED, - WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED, - WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD, - WEBKIT_WEB_NAVIGATION_REASON_RELOAD, - WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED, - WEBKIT_WEB_NAVIGATION_REASON_OTHER, -} WebKitWebNavigationReason; -*/ - widgetView->m_viewLogic->suspendWebview(widgetView); - evas_object_hide(EVAS_ELM_WEBVIEW(widgetView)); - widgetView->m_viewLogic->createWebview(widgetView); - createWebviewData->webview = EVAS_WEBVIEW(widgetView); - widgetView->m_windowData->unsetEvasObjectForLayout(); - widgetView->m_windowData->setEvasObjectForLayout( - EVAS_ELM_WEBVIEW(widgetView)); - evas_object_show(EVAS_ELM_WEBVIEW(widgetView)); - return; -} - -void ViewLogic::windowCloseCallback(EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WidgetViewDataStruct *widgetView) -{ - LogInfo("WindowCloseCallback called"); - ecore_idle_enterer_before_add(windowCloseIdlerCallback, widgetView); -} - -void ViewLogic::shouldAllowOpenCallback(EvasObject::IConnection* /*conn*/, - void* eventInfo, - WidgetViewDataStruct* widgetView) -{ - LogInfo("shouldAllowOpenCallback called"); - Ewk_Should_Allow_Open_Uri_Return* ret = - static_cast(eventInfo); - if (!ret) { - LogError("Ewk callback failed"); - return; - } - Assert(widgetView); - ret->ret = - ViewModule::SchemeSupport::shouldAllowOpen( - ret->uri, - widgetView->m_widgetModel); -} - -void ViewLogic::frameCreatedCallback(EvasObject::IConnection* /*data*/, - void* /*obj*/, - WidgetViewDataStruct */*widgetView*/) -{ - PluginLogicSingleton::Instance().loadPluginsIntoIframes(); -} - -void ViewLogic::oneSingleTapCallback(EvasObject::IConnection* connection, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - LogInfo("oneSingleTapCallback"); - ViewLogic *This = widgetView->m_viewLogic; - This->setCombobox(connection->GetEvasObject(), event_info, widgetView); -} - -void ViewLogic::downloadRequestCallback(EvasObject::IConnection* /*conn*/, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - LogInfo("downloadRequestCallback called"); - Assert(event_info); - Ewk_Download *download = static_cast(event_info); - - if (NULL == download->url) { - LogError("url is null"); - return; - } - widgetView->m_viewLogic->m_appsSupport->downloadRequest( - download->url, download->mime_type, download->user_param); -} - -void ViewLogic::html5VideoRequestCallback(EvasObject::IConnection* /*conn*/, - void* event_info, - WidgetViewDataStruct* widgetView) -{ - LogInfo("html5VideoRequestCallback called"); - Assert(event_info); - widgetView->m_viewLogic->m_appsSupport->html5VideoRequest(event_info); -} - -void ViewLogic::contentResizeCallback(EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WidgetViewDataStruct* widgetView) -{ - ViewLogic *This = widgetView->m_viewLogic; - This->doContentResize(widgetView); -} - -void ViewLogic::resourceRequestWillSendCallback( - EvasObject::IConnection* /*connection*/, - void* eventInfo, - WidgetViewDataStruct* widgetView) -{ - Assert(widgetView); - ViewLogic *This = widgetView->m_viewLogic; - Assert(This); - Ewk_Frame_Resource_Request *resourceRequest = - static_cast(eventInfo); - - if (!resourceRequest || !(resourceRequest->url)) { - LogDebug("Request is [NULL]."); - return; - } - - LogDebug("Request " << resourceRequest->url); - - This->resourceRequestWillSend(resourceRequest); -} - -void ViewLogic::submitClickedCallback(EvasObject::IConnection* /*conn*/, - void* event_info, - WidgetViewDataStruct* /*widgetView*/) -{ - LogDebug("submitClickedCallback called"); - Assert(event_info); - ViewModule::PasswordSupport::submitClicked(static_cast(event_info)); -} - -void ViewLogic::panningStartedCallback(EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WidgetViewDataStruct* widgetView) -{ - ViewLogic *This = widgetView->m_viewLogic; - This->setSelectiveRendering(EVAS_WEBVIEW(widgetView), EINA_TRUE); -} - -void ViewLogic::panningFinishedCallback(EvasObject::IConnection* /*conn*/, - void* /*event_info*/, - WidgetViewDataStruct* widgetView) -{ - ViewLogic *This = widgetView->m_viewLogic; - This->setSelectiveRendering(EVAS_WEBVIEW(widgetView), EINA_FALSE); -} - -Eina_Bool ViewLogic::schemeCallback(Evas_Object* /*object*/, - const char* uri) -{ - LogDebug("elm-schemeCallback called"); - return ViewModule::SchemeSupport::elmSchemeHandle(uri); -} - -Eina_Bool ViewLogic::progressTimerCallback(void* data) -{ - LogDebug("ProgressTimerCallback"); - WidgetViewDataStruct *widgetView = - static_cast(data); - - ecore_timer_del(widgetView->m_progressTimer); - widgetView->m_progressTimer = NULL; - widgetView->m_windowData->loadingOff(); - - return ECORE_CALLBACK_CANCEL; -} - -Eina_Bool ViewLogic::suspendTimerCallback(void* data) -{ - LogDebug("suspendTimerCallback"); - WidgetViewDataStruct *widgetView = - static_cast(data); - - // stop UI - EvasObject needSuspentWebview = widgetView->m_needSuspendWebview; - ewk_view_javascript_suspend(needSuspentWebview); - ewk_view_disable_render(needSuspentWebview); - ewk_view_pre_render_cancel(needSuspentWebview); - if (ewk_view_setting_enable_plugins_get(needSuspentWebview)) { - ewk_view_reduce_plugins_frame_rate(needSuspentWebview, EINA_TRUE); - } - ewk_view_suspend_request(needSuspentWebview); - - // stop the timer to be used to wait for suspend - widgetView->m_suspendTimer = NULL; - return ECORE_CALLBACK_CANCEL; -} - -Eina_Bool ViewLogic::setLayoutIdlerCallback(void *data) -{ - LogDebug("setLayoutIdlerCallback"); - WidgetViewDataStruct *widgetView = - static_cast(data); - widgetView->m_windowData->unsetEvasObjectForLayout(); - widgetView->m_windowData->setEvasObjectForLayout( - EVAS_ELM_WEBVIEW(widgetView)); - evas_object_show(EVAS_ELM_WEBVIEW(widgetView)); - return ECORE_CALLBACK_CANCEL; -} - -Eina_Bool ViewLogic::windowCloseIdlerCallback(void *data) -{ - LogDebug("windowCloseIdlerCallback"); - WidgetViewDataStruct *widgetView = - static_cast(data); - widgetView->m_viewLogic->windowClose(widgetView); - return ECORE_CALLBACK_CANCEL; -} - -void ViewLogic::setCombobox( - Evas_Object* /*obj*/, - void *event_info, - WidgetViewDataStruct* widgetView) -{ - LogInfo("setCombobox call"); - - Assert(widgetView && "Invalid data passed!"); - Assert(event_info && "Invalid data passed!"); - - Evas_Point *point = static_cast(event_info); - Eina_Rectangle rect; - bool prev, next; - int viewY; - int unzoomedX = 0; - int unzoomedY = 0; - double zoom = 0; - - EvasObject webView = - widgetView->m_currentEvasStruct->m_webView; - - zoom = ewk_view_zoom_get(webView); - evas_object_geometry_get(webView, NULL, &viewY, NULL, NULL); - unzoomedX = point->x / zoom; - unzoomedY = (point->y - viewY) / zoom; - - WidgetViewDataStruct::ComboboxDataStruct *combo = - &(widgetView->combo); - - combo->comboboxOptions = - ewk_page_dropdown_get_options(webView, - unzoomedX, - unzoomedY, - &(combo->comboboxOptionsSize), - &(combo->comboboxOptionSelected), - &rect, - &prev, - &next); - - - if (combo->comboboxOptions != NULL) { - combo->clickPosX = unzoomedX; - combo->clickPosY = unzoomedY; - - WindowLogic::showComboboxCallback( - combo->comboboxOptionsSize, - combo->comboboxOptions, - widgetView, - &comboboxResponseCallback, - widgetView->m_elmWidget); - } -} - -void ViewLogic::comboboxResponseCallback( - int selected_index, - void* data) -{ - WidgetViewDataStruct *widgetView = - static_cast(data); - - LogDebug("Combobox response: " << selected_index); - if (selected_index < 0) { - LogInfo("Combobox has been destroyed"); - } else { - ewk_page_dropdown_set_current_index( - widgetView->m_currentEvasStruct->m_webView, - selected_index); - } -} - -void ViewLogic::resourceRequestWillSend( - Ewk_Frame_Resource_Request* resourceRequest) -{ - using namespace ViewModule::SecuritySupport; - - bool allocated = localizeURL(resourceRequest); - - // skip main resource for checking WARP in the 'uri,changed' callback - if (m_widgetView->m_isMainResource == false && - !checkWARP(resourceRequest->url, m_widgetView->m_widgetModel)) - { - LogDebug("Request was blocked by WARP: " << resourceRequest->url); - blockRequest(resourceRequest, allocated, WARP_ERROR_MSG, true); - return; - } - - if (!checkACE(resourceRequest)) { - LogDebug("Request was blocked by ACE: " << resourceRequest->url); - blockRequest(resourceRequest, allocated, NULL, true); - return; - } - - bool usingNet = true; - for (size_t i = 0; WITHOUT_NETWORK_SCHEMA[i]; ++i) { - if (0 == strncmp(resourceRequest->url, - WITHOUT_NETWORK_SCHEMA[i], - strlen(WITHOUT_NETWORK_SCHEMA[i]))) - { - usingNet = false; - LogDebug("Without Network!!"); - break; - } - } - - #if 0 /* temporary patch. MUST update!! */ - if (usingNet) { - if (!RoamingAgentSingleton::Instance().CheckAccess()) { - LogDebug("Request was blocked by roaming settings: " << - resourceRequest->url); - blockRequest(resourceRequest, allocated, ROAMING_ERROR_MSG); - return; - } - } - #endif - - if (!checkChildProtection(resourceRequest->url, - m_widgetView->m_widgetModel)) - { - LogDebug("Request was blocked by child protection: " << - resourceRequest->url); - blockRequest( - resourceRequest, allocated, ChildProtection::ForbiddenUri); - return; - } - -#if USE_DNET - if (checkUriRequiredNet(resourceRequest->url) && - !NetSingleton::Instance().IsConnected()) - { - LogInfo("open dnet : suspend request and open dnet"); - NetSingleton::Instance().Open(netOpenRsrcRequestCallback, - m_widgetView); - ewk_view_suspend_request(EVAS_WEBVIEW(m_widgetView)); - } else { - LogDebug("requested uri : [" << resourceRequest->url << - "] file protocol is not needed to open dnet"); - } -#endif -} - -void ViewLogic::blockRequest( - Ewk_Frame_Resource_Request *resourceRequest, - bool allocated, - const char *uriMessage, - bool securityError) -{ - resourceRequest->security_error = securityError; - if (allocated) { - free(const_cast(resourceRequest->url)); - } - if (uriMessage && WrtDB::GlobalDAOReadOnly::GetDeveloperMode()) { - resourceRequest->url = strdup(uriMessage); - } else { - resourceRequest->url = NULL; - } -} - -bool ViewLogic::localizeURL(Ewk_Frame_Resource_Request *request) -{ - WidgetModel *model = m_widgetView->m_widgetModel; - - const char *end = strstr(request->url, ":"); - if (!end) { - // lack of schema - return false; - } - std::string scheme(request->url, end); - - if (scheme != ViewModule::SchemeSupport::SCHEME_TYPE_WIDGET - && scheme != ViewModule::SchemeSupport::SCHEME_TYPE_FILE) - { - // schema unsupported - return false; - } - - //remove application service information - std::string reqUri(request->url); - std::string appService; - - if (reqUri.find("?") != std::string::npos) { - appService = reqUri.c_str() + int(reqUri.find("?")); - reqUri.erase(reqUri.begin() + int(reqUri.find("?")),reqUri.end()); - } - - DPL::Optional found = - W3CFileLocalization::getFilePathInWidgetPackageFromUrl( - model->Handle.Get(), - model->LanguageTags.Get(), - DPL::FromUTF8String(reqUri)); - - if (!!found) { - std::string uri("file://" + DPL::ToUTF8String(*found)); - if (!appService.empty()) { - // append application service information - uri += appService; - } - LogDebug("Will load resource: " << *found); - LogDebug("uri " << uri); - // we mustn't free memory under resourceRequest->url - request->url = strdup(uri.c_str()); - return true; - } - - LogDebug("Path not found within current locale in current widget"); - return false; -} - -bool ViewLogic::checkACE(Ewk_Frame_Resource_Request *request) -{ - using namespace ViewModule::SecuritySupport; - - WidgetModel *model = m_widgetView->m_widgetModel; - - if (request->url) { - for (size_t i = 0; ACE_IGNORED_SCHEMA[i]; ++i) { - if (0 == strncmp(request->url, - ACE_IGNORED_SCHEMA[i], - strlen(ACE_IGNORED_SCHEMA[i]))) - { - return true; - } - } - } - - const char *devCapNamesMarkup[] = {"externalNetworkAccess"}; - const char *devCapNamesXHR[] = {"XMLHttpRequest"}; - - AceClient::AceRequest aceRequest; - - aceRequest.widgetHandle = model->Handle.Get(); - - // TODO! We should get session id from somewhere (outside Widget Process) - AceClient::AceSessionId session; - - aceRequest.sessionId = session; - - if (request->requester_is_script) { - aceRequest.deviceCapabilities.devcapsCount = - sizeof(devCapNamesXHR)/sizeof(devCapNamesXHR[0]); - aceRequest.deviceCapabilities.devCapNames = devCapNamesXHR; - } else { - aceRequest.deviceCapabilities.devcapsCount = - sizeof(devCapNamesMarkup)/sizeof(devCapNamesMarkup[0]); - aceRequest.deviceCapabilities.devCapNames = devCapNamesMarkup; - } - - AceClient::AceParam aceParams[] = - {AceClient::AceParam(PARAM_URL, request->url)}; - - AceClient::AceParamList aceParamList; - aceParamList.count = sizeof(aceParams)/sizeof(aceParams[0]); - aceParamList.param = aceParams; - aceRequest.deviceCapabilities.params = &aceParamList; - - LogInfo("Pausing widget"); - ewk_view_javascript_suspend(EVAS_WEBVIEW(m_widgetView)); - - bool result = - AceClient::AceThinClientSingleton::Instance(). - checkFunctionCall(aceRequest); - - LogInfo("Resuming widget"); - ewk_view_javascript_resume(EVAS_WEBVIEW(m_widgetView)); - - return result; -} - -void ViewLogic::setSelectiveRendering(Evas_Object *webview, - Eina_Bool setValue) -{ - if (ewk_view_selective_rendering_is_enabled(webview) != setValue) { - ewk_view_selective_rendering_set(webview, setValue); - } -} - -void ViewLogic::doContentResize(WidgetViewDataStruct* widgetView) -{ - int w, h; - ewk_frame_contents_size_get(EVAS_WEBVIEW_FRAME(widgetView), &w, &h); - - WidgetModel *widgetModel = widgetView->m_widgetModel; - - widgetModel->ActualSize.Set(WidgetSize(w, h)); -} - -void ViewLogic::setViewMode(WidgetViewDataStruct* widgetView) -{ - LogDebug("SetViewMode"); - - WidgetModel *widgetModel = widgetView->m_widgetModel; - WrtDB::WindowModeList windowModes = widgetModel->WindowModes.Get(); - - FOREACH(it, windowModes) - { - LogDebug("Window mode : " << (*it)); - - std::string viewMode = DPL::ToUTF8String(*it); - - // If there is unsupported view-mode, - // set to default view-mode, EWK_VIEW_MODE_MAXIMIZED. - if (viewMode == VIEWMODE_TYPE_FULLSCREEN) { - widgetView->m_viewMode = EWK_VIEW_MODE_FULLSCREEN; - return; - } else if (viewMode == VIEWMODE_TYPE_MAXIMIZED) { - widgetView->m_viewMode = EWK_VIEW_MODE_MAXIMIZED; - return; - } else { - LogError("Unknown Window mode passed: " << viewMode); - } - } - - LogDebug("Set default view-mode"); - widgetView->m_viewMode = EWK_VIEW_MODE_MAXIMIZED; - - return; -} - -#ifdef USE_DNET -void ViewLogic::netOpenRsrcRequestCallback(void *data, - int status) -{ - if (status == 0) { - LogInfo("[NET] Network opened successfully."); - } else { - LogInfo("[NET] Failed to open network."); - } - - WidgetViewDataStruct *widgetView = - static_cast(data); - - if (widgetView->m_firstPageLoaded == false) { - LogInfo("[NET] open rsrc request callback... load uri!!!"); - elm_webview_uri_set(EVAS_ELM_WEBVIEW(widgetView), - widgetView->m_currentUri.c_str()); - ewk_view_reload(EVAS_WEBVIEW(widgetView)); - widgetView->m_firstPageLoaded = true; - } else { - ewk_view_javascript_resume(EVAS_WEBVIEW(widgetView)); - ewk_view_resume_request(EVAS_WEBVIEW(widgetView)); - } -} -#endif - -void ViewLogic::setDebugMode(WidgetViewDataStruct *view, - const WidgetLaunchStruct& widgetLaunchStruct) -{ - LogDebug("Connecting to ViewModule Debugger Support"); - Assert(view && "Passed view is NULL!"); - - ApiCallbacksTranslate::APIWidgetLaunchStruct *userParam_temp = - static_cast - (widgetLaunchStruct.userParam); - WrtClientUserData *userData = static_cast - (userParam_temp->userdata); - - bool debugMode = userData->debugMode; - - LogInfo("[DEBUG_MODE] Widget is launched in " << - (debugMode ? "DEBUG" : "RETAIL") << - " mode."); - - if (debugMode == true) { - // In WAC widget, only test widgets can use web inspector. - // In TIZEN widget, - // every launched widgets as debug mode can use it. - if (view->m_widgetModel->Type.Get().appType == - WrtDB::APP_TYPE_WAC20 || - view->m_widgetModel->Type.Get().appType == - WrtDB::APP_TYPE_WAC10) - { - bool developerMode = - GlobalLogicSingleton::Instance().GetGlobalModel() - ->DeveloperMode.Get(); - //This code will be activated - //after WAC test certificate is used by SDK - //bool isTestWidget = view->m_widgetModel->IsTestWidget.Get(); - //if(!isTestWidget) - //{ - // LogInfo("This is not WAC Test Widget"); - // break; - //} - if (!developerMode) { - LogInfo("This is not WAC Developer Mode"); - return; - } - } - - userData->portnum = ewk_view_inspector_server_start(0); - if (userData->portnum == 0) { - LogWarning("Failed to get portnum"); - } else { - LogInfo("Assigned port number for inspector : " - << userData->portnum); - } - } -} - -void ViewLogic::windowClose(WidgetViewDataStruct* widgetView) -{ - LogDebug("windowClose called"); - - if (1 >= widgetView->m_evasStructList.size()) { - if (widgetView && widgetView->m_viewLogic) { - LogInfo("Calling temrinate!"); - wrt_shutdown(); - } else { - LogError("Required object not found! Could not call terminate function!"); - } - elm_exit(); - } else { - // disable evas view - evas_object_hide(EVAS_WEBVIEW(widgetView)); - widgetView->m_windowData->unsetEvasObjectForLayout(); - - widgetView->m_viewLogic->removeWebview(widgetView); - widgetView->m_viewLogic->resumeWebview(widgetView); - - // Show previous webview - evas_object_show(EVAS_ELM_WEBVIEW(widgetView)); - widgetView->m_windowData->setEvasObjectForLayout( - EVAS_ELM_WEBVIEW(widgetView)); - } -} - diff --git a/src/domain/efl/view_logic.h b/src/domain/efl/view_logic.h deleted file mode 100644 index fb27802..0000000 --- a/src/domain/efl/view_logic.h +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for view logic for EFL - */ -#ifndef VIEW_LOGIC_H -#define VIEW_LOGIC_H - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include "evas_object.h" - -#include - -namespace ViewModule { -class AppsSupport; -} //Forward declarations - -// TODO rename it to View::Logic -class ViewLogic : private DPL::Noncopyable -{ - public: - virtual ~ViewLogic(); - - void initialize(); - void terminate(); - - void prepareView(WidgetModel* widgetModel, - const WidgetLaunchStruct& launchStruct); - - /** - * This method is show widget's webkit - * @param[in] widgetModel widgetData - * @param[in] launchstruct - * @return none - */ - void showWidget(WidgetModel *widgetModel, - const WidgetLaunchStruct &launchStruct); - - /** - * This method is used to hide widget (by disabling webkit) - * @param[in] widgetModel widgetData - * @return none - */ - void hideWidget(WidgetModel *widgetModel); - - /** - * This method is used to suspend widget (by suspending javascript) - * @param[in] widgetModel widgetData - * @return none - */ - void suspendWidget(WidgetModel *widgetModel, - const OperationStatusStruct &operationStatus); - - /** - * This method is used to resume widget (by resuming javascript) - * @param[in] widgetModel widgetData - * @return none - */ - void resumeWidget(WidgetModel *widgetModel, - const OperationStatusStruct &operationStatus); - - void widgetWebkitReset(WidgetModel *widgetModel, - std::string bundleData); - - /** - * This method returns UserAgent value - * @param[in] widgetModel widgetData - * @return UserAgent value - */ - std::string getWidgetUAValue(WidgetModel *widgetModel); - - //FIXME THESE FUNCTIONS SHOULD BE REMOVED WHEN - //plugin_api.cpp::plugin_api_check_access(..) function will be removed - // (this function is DEPRECATED) - void javaScriptSuspend(WidgetModel *widgetModel); - void javaScriptResume(WidgetModel *widgetModel); - - EvasObject getViewForHandle(WidgetHandle handle) const; - - private: - WidgetViewDataStruct* m_widgetView; - - void prepareWebview(WidgetViewDataStruct* widgetView); - void createWebview(WidgetViewDataStruct* widgetView); - void removeWebview(WidgetViewDataStruct* widgetView); - void resumeWebview(WidgetViewDataStruct* widgetView); - void suspendWebview(WidgetViewDataStruct* widgetView); - - void resumeWebkit(WidgetViewDataStruct* widgetView); - void suspendWebkit(WidgetViewDataStruct* widgetView); - - WidgetViewDataStruct *findWidgetView(WidgetModel* model) const; - WidgetViewDataStruct *findWidgetViewForHandle(WidgetHandle widgetHandle) - const; - - // Callback - void connectCallbacks(WidgetModel *widgetModel, - const WidgetLaunchStruct &widgetLaunchStruct); - void disconnectCallbacks(WidgetModel *widgetModel); - void connectViewCallbacks( - WidgetViewDataStruct *widgetView, - EvasStruct* evasStruct); - void disconnectViewCallbacks( - WidgetViewDataStruct *widgetView, - EvasStruct* evasStruct); - - // window callback - static void backKeyCallback( - void *data, - Evas_Object * obj, - void* event_info); - static void resizeUserlayoutCallback( - void* data, - Evas* evas, - Evas_Object* userLayout, - void* event_info); - - // Key - static Eina_Bool keydownEvent( - void *data, - int type, - void *event); - static Eina_Bool keyupEvent( - void *data, - int type, - void *event); - - // ewk callback - static void startedCallback( - EvasObject::IConnection* conn, - void* event_info, - WrtDB::WidgetType widgetType, - WidgetViewDataStruct* widgetView); - static void progressCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void finishedCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetLaunchStruct* widgetLaunchStruct, - WidgetViewDataStruct* widgetView); - static void uriChangedCallback(//TODO This will be also moved to UriSupport - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void linkHoverInCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void linkHoverOutCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void webviewResizeCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void createWebviewCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void windowCloseCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void shouldAllowOpenCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void frameCreatedCallback( - EvasObject::IConnection *conn, - void *event_info, - WidgetViewDataStruct *widgetView); - static void oneSingleTapCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void downloadRequestCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void html5VideoRequestCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - - // ewk frame callback - static void contentResizeCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void resourceRequestWillSendCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void submitClickedCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - - // elm-webview callback - static void panningStartedCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static void panningFinishedCallback( - EvasObject::IConnection* conn, - void* event_info, - WidgetViewDataStruct* widgetView); - static Eina_Bool schemeCallback( - Evas_Object* o, - const char* uri); - - // timer callback - static Eina_Bool progressTimerCallback(void* data); - static Eina_Bool suspendTimerCallback(void* data); - - // idler callback - static Eina_Bool setLayoutIdlerCallback(void* data); - static Eina_Bool windowCloseIdlerCallback(void* data); - - // Combo box - void setCombobox( - Evas_Object* object, - void *event_info, - WidgetViewDataStruct* widgetView); - static void comboboxResponseCallback( - int selected_index, - void* userdata); - - // security - void resourceRequestWillSend( - Ewk_Frame_Resource_Request* resourceRequest); - void blockRequest( - Ewk_Frame_Resource_Request *resourceRequest, - bool allocated, - const char *uriMessage, - bool securityError = false); - bool localizeURL(Ewk_Frame_Resource_Request *request); - bool checkACE(Ewk_Frame_Resource_Request *request); - - // rendering - void setSelectiveRendering(Evas_Object *webview, - Eina_Bool setValue); - void doContentResize(WidgetViewDataStruct* widgetView); - void setViewMode(WidgetViewDataStruct* widgetView); - - // network -#ifdef USE_DNET - static void netOpenRsrcRequestCallback(void *data, - int status); -#endif - - // Debug - void setDebugMode(WidgetViewDataStruct *view, - const WidgetLaunchStruct& widgetLaunchStruct); - - // window - void windowClose(WidgetViewDataStruct* widgetView); - - private: - ViewLogic(); - - friend class DPL::Singleton; - - std::unique_ptr m_appsSupport; -}; - -typedef DPL::Singleton ViewLogicSingleton; - -#endif // VIEW_LOGIC_H diff --git a/src/domain/efl/view_logic_apps_support.cpp b/src/domain/efl/view_logic_apps_support.cpp deleted file mode 100644 index ab84d55..0000000 --- a/src/domain/efl/view_logic_apps_support.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_apps_support.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file of AppsSupport class used by ViewLogic - */ - -#include "view_logic_apps_support.h" -#include -#include -#include -#include -#include - -namespace ViewModule -{ - -namespace -{//anonymous -const char *SCHEME_TYPE_HTML5_VIDEO = "html5video"; -} - -//Implementation class -class AppsSupportImplementation -{ -private: - WidgetModel *m_widgetModel; - bool m_initialized; - - struct HTML5Video { - const char* path; - const char* cookie; - }; - -public: - AppsSupportImplementation() : - m_widgetModel(NULL), - m_initialized(false) - { - } - - ~AppsSupportImplementation() - { - Assert(!m_initialized && - "AppsSupport has to be deinitialized prior destroying!"); - } - - void initialize(WidgetModel *widgetModel) - { - Assert(!m_initialized && "Already initialized!"); - - LogDebug("Initializing Apps Support"); - Assert(widgetModel && "Passed widgetModel is NULL!"); - m_widgetModel = widgetModel; - - ApplicationLauncherSingleton::Instance().setWidgetHandle( - m_widgetModel->Handle.Get()); - - LogDebug("Initialized"); - m_initialized = true; - } - - void deinitialize() - { - Assert(m_initialized && "Not initialized!"); - LogDebug("Deinitialized"); - m_widgetModel = NULL; - m_initialized = false; - } - - bool httpMultimediaRequest(std::string mimeType, std::string uri) - { - LogInfo("httpMultimediaRequest called"); - - if ("null" == mimeType || "null" == uri) { - LogError("uri/mimeType is null"); - return false; - } - - bundle *args = NULL; - args = bundle_create(); - void *userData = NULL; - appsvc_res_fn responseCallback = NULL; - - // ignore case match of string of mime type - // if needed, define appsvc response callback and its user data per mimetype - if(!strcasecmp(mimeType.c_str(), HTTP_STREAMING_APPLE_MIMETYPE) || - !strcasecmp(mimeType.c_str(), HTTP_STREAMING_MPEG_MIMETYPE)) - { - appsvc_set_operation(args, APPSVC_OPERATION_VIEW); - appsvc_set_mime(args, mimeType.c_str()); - appsvc_set_uri(args, uri.c_str()); - } else { - LogInfo("Not Supported MIME type in WRT"); - return false; - } - - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByAppService( - args, - responseCallback, - userData)); - - return true; - } - - void downloadRequest(const char *url, - const char *mimeType, - const char *userParam) - { - LogInfo("Download info : " << url << "(" << - mimeType << ", " << userParam <<")"); - - // ignore case match of string of mime type - int isAppServiceable = httpMultimediaRequest( - mimeType ? std::string(mimeType) : "null", - url ? std::string(url) : "null"); - - if(isAppServiceable) - { - LogInfo("Application Service start"); - return; - } - - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByPkgname( - ApplicationLauncherPkgname::PKG_NAME_DOWNLOAD_PROVIDER, - url ? std::string(url) : "null", - mimeType ? mimeType : "null", - userParam ? userParam : "null")); - } - - void html5VideoRequest(void* event_info) - { - LogInfo("html5VideoRequestCallback called"); - Assert(event_info); - HTML5Video* video = static_cast(event_info); - - LogDebug("video->path : " << video->path); - LogDebug("video->cookie : " << video->cookie); - if (NULL == video->path) { - LogError("path is null"); - return; - } - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByPkgname( - ApplicationLauncherPkgname::PKG_NAME_VIDEO_PLAYER, - SCHEME_TYPE_HTML5_VIDEO, - video->path ? video->path : "null", - video->cookie ? video->cookie : "null")); - } -}; - -AppsSupport::AppsSupport(): m_impl(new AppsSupportImplementation) -{ -} - -AppsSupport::~AppsSupport() -{ -} - -void AppsSupport::initialize(WidgetModel *widgetModel) -{ - m_impl->initialize(widgetModel); -} - -void AppsSupport::deinitialize() -{ - m_impl->deinitialize(); -} - -void AppsSupport::html5VideoRequest(void* event_info) -{ - m_impl->html5VideoRequest(event_info); -} - -void AppsSupport::downloadRequest(const char *url, - const char *mimeType, - const char *userParam) -{ - m_impl->downloadRequest(url, mimeType, userParam); -} - -}//namespace diff --git a/src/domain/efl/view_logic_apps_support.h b/src/domain/efl/view_logic_apps_support.h deleted file mode 100644 index 888efe0..0000000 --- a/src/domain/efl/view_logic_apps_support.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_apps_support.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file of AppsSupport class used by ViewLogic - */ - -#ifndef VIEW_LOGIC_APPS_SUPPORT_H_ -#define VIEW_LOGIC_APPS_SUPPORT_H_ - -#include -#include -#include - -#define HTTP_STREAMING_APPLE_MIMETYPE "application/vnd.apple.mpegurl" -#define HTTP_STREAMING_MPEG_MIMETYPE "application/x-mpegurl" - -namespace ViewModule -{ - -class AppsSupportImplementation; //Forward declaration - -class AppsSupport -{ -public: - AppsSupport(); - virtual ~AppsSupport(); - - void initialize(WidgetModel *); - void deinitialize(); - void html5VideoRequest(void* event_info); - void downloadRequest( - const char *url, - const char *mimeType, - const char *userParam); - -private: - std::unique_ptr m_impl; -}; - -} //namespace - -#endif /* VIEW_LOGIC_APPS_SUPPORT_H_ */ diff --git a/src/domain/efl/view_logic_keys_support.cpp b/src/domain/efl/view_logic_keys_support.cpp deleted file mode 100644 index 2544059..0000000 --- a/src/domain/efl/view_logic_keys_support.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_keys_support.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file of KeySupport API used by ViewLogic - */ - -#include "view_logic_keys_support.h" - -namespace ViewModule { -namespace KeysSupport { - -} // namespace ViewModule -} // namespace KeysSupport \ No newline at end of file diff --git a/src/domain/efl/view_logic_keys_support.h b/src/domain/efl/view_logic_keys_support.h deleted file mode 100644 index 35a7c81..0000000 --- a/src/domain/efl/view_logic_keys_support.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_keys_support.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file of KeySupport API used by ViewLogic - */ - -#ifndef VIEW_LOGIC_KEYS_SUPPORT_H_ -#define VIEW_LOGIC_KEYS_SUPPORT_H_ - -#include - -namespace ViewModule { -namespace KeysSupport { - -char const * const WinKeyEvent = "WinKeyDown"; -char const * const KEYS_END = "XF86Stop"; -char const * const KEY_WEBKIT_RETURN = "Escape"; - -template -T getEvasFromEcoreKey(Evas *e, Ecore_Event_Key *ecore_ev) -{ - T ev = T(); - - ev.dev = NULL; - ev.keyname = const_cast(KEY_WEBKIT_RETURN); - ev.data = NULL; - ev.modifiers = const_cast(evas_key_modifier_get(e)); - ev.locks = const_cast(evas_key_lock_get(e)); - ev.key = KEY_WEBKIT_RETURN; //ecore_ev->key; - ev.string = ecore_ev->string; - ev.compose = ecore_ev->compose; - ev.timestamp = ecore_ev->timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; - - return ev; -}; - -} // namespace KeysSupport -} // namespace ViewModule - -#endif /* VIEW_LOGIC_KEYS_SUPPORT_H_ */ diff --git a/src/domain/efl/view_logic_password_support.cpp b/src/domain/efl/view_logic_password_support.cpp deleted file mode 100644 index d2ee124..0000000 --- a/src/domain/efl/view_logic_password_support.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_password_support.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file of PasswordSupport API used by ViewLogic - */ -#include "view_logic_password_support.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace ViewModule { -namespace PasswordSupport { - -namespace -{ //anonymous -const char *AUTOSAVEIDPASS_OFF = "Off"; -const char *AUTOSAVEIDPASS_ON = "On"; -const char *AUTOSAVEIDPASS_ALWAYS_ASK = "Always ask"; -const std::string SETTING_VCONF_PREFIX = "db/browsersetting/"; -const std::string AUTOSAVEIDPASS_KEY = -SETTING_VCONF_PREFIX + "AutoSaveIDPassword"; -} - -DPL::Optional - getAutoFillData(const char *uri) -{ - LogDebug("getAutoFillData called"); - using namespace WrtDB; - - Assert(uri); - const char* const autoSaveIDPass = - vconf_get_str(AUTOSAVEIDPASS_KEY.c_str()); - DPL::Optional autoData; - - if (NULL == autoSaveIDPass) { - LogDebug("Did not find vconf about AUTOSAVEIDPASS_KEY "); - } else if (strcmp(autoSaveIDPass, AUTOSAVEIDPASS_OFF)) { - DPL::ScopedPtr iri( - iri_parse(uri)); - - if (iri.Get() && NULL != iri->host) { - autoData = GlobalDAO::GetAutoSaveIdPasswd( - DPL::FromASCIIString(std::string(iri->host))); - } - } - return autoData; -} - -void submitClicked(char ** personalData) -{ - LogDebug("submitClicked called"); - Assert(personalData); - - using namespace WrtDB; - - const char* autoSaveStatus = vconf_get_str(AUTOSAVEIDPASS_KEY.c_str()); - - Assert(autoSaveStatus); - Assert(personalData[0] && personalData[1] && personalData[2]); - - std::string userId = personalData[0]; - std::string userPasswd = personalData[1]; - std::string currentUri = personalData[2]; - - if (!strcmp(autoSaveStatus, AUTOSAVEIDPASS_OFF)) { - LogDebug("AutoSaveStatus is AUTOSAVEIDPASS_ALWAYS_OFF"); - return; - } else if (!strcmp(autoSaveStatus, AUTOSAVEIDPASS_ON)) { - LogDebug("AutoSaveStatus is AUTOSAVEIDPASS_ALWAYS_ON"); - GlobalDAO::AutoSaveData saveData; - saveData.userId = DPL::FromUTF8String(userId); - saveData.passwd = DPL::FromUTF8String(userPasswd); - DPL::ScopedPtr iri(iri_parse(currentUri.c_str())); - if (iri.Get() && NULL != iri->host) { - GlobalDAO::SetAutoSaveIdPasswd( - DPL::FromASCIIString(std::string(iri->host)), saveData); - } - } else if (!strcmp(autoSaveStatus, AUTOSAVEIDPASS_ALWAYS_ASK)) { - LogDebug("AutoSaveStatus is AUTOSAVEIDPASS_ALWAYS_ASK"); - DPL::Optional autoData; - DPL::ScopedPtr iri(iri_parse(currentUri.c_str())); - if (iri.Get() && NULL != iri->host) { - DPL::String host = DPL::FromASCIIString(std::string(iri->host)); - autoData = GlobalDAO::GetAutoSaveIdPasswd(host); - if (!autoData.IsNull()) { - std::string tempid = DPL::ToUTF8String(autoData->userId); - std::string temppass = DPL::ToUTF8String(autoData->passwd); - - if (!userId.compare(tempid) && - !userPasswd.compare(temppass)) - { - return; - } - } - GlobalDAO::AutoSaveData saveData; - saveData.userId = DPL::FromUTF8String(userId); - saveData.passwd = DPL::FromUTF8String(userPasswd); - - DPL::ScopedPtr autoPopup(new AutoSavePopup); - autoPopup->checkAutoSave(host, saveData); - } - } -} - -} // namespaec PasswordSupport -} // namespaec ViewModule diff --git a/src/domain/efl/view_logic_password_support.h b/src/domain/efl/view_logic_password_support.h deleted file mode 100644 index 4e5fc54..0000000 --- a/src/domain/efl/view_logic_password_support.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_password_support.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file of PasswordSupport API used by ViewLogic - */ - -#ifndef VIEW_LOGIC_PASSWORD_SUPPORT_H_ -#define VIEW_LOGIC_PASSWORD_SUPPORT_H_ - -#include - -namespace ViewModule { -namespace PasswordSupport { - -DPL::Optional - getAutoFillData(const char *url); -void submitClicked(char ** personalData); - -} // namespace PasswordSupport -} // namespace ViewModule - -#endif /* VIEW_LOGIC_PASSWORD_SUPPORT_H_ */ diff --git a/src/domain/efl/view_logic_scheme_support.cpp b/src/domain/efl/view_logic_scheme_support.cpp deleted file mode 100644 index bfd03af..0000000 --- a/src/domain/efl/view_logic_scheme_support.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_scheme_support.cpp - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file for scheme handler - */ - -#include "view_logic_scheme_support.h" -#include -#include -#include -#include - -#include -#include -#include - -namespace ViewModule { -namespace SchemeSupport { - -bool handleURIByScheme(const char *scheme, - const char* uri) -{ - if (!uri || !scheme) { - LogError("schemeHandleByUri -wrong arguments passed"); - return false; - } - LogDebug("scheme = [" << scheme << "]"); - LogDebug("uri = [" << uri << "]"); - - switch (scheme[0]) { - case 'w': { - if (scheme == SCHEME_TYPE_WIDGET) { - return true; - } - break; } - case 'h': { - // For blocking launch browser in scheme callback. - // "_target" tag call the 'should,allow,open' callback. - if (scheme == SCHEME_TYPE_HTTP) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } else if (scheme == SCHEME_TYPE_HTTPS) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } - break; } - case 'f': { - if (scheme == SCHEME_TYPE_FILE) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } - break; } - case 't': { - if (scheme == SCHEME_TYPE_TEL) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } - break; } - case 'm': { - if (scheme == SCHEME_TYPE_MMSTO || scheme == SCHEME_TYPE_MAILTO) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } - break; } - case 's': { - if (scheme == SCHEME_TYPE_SMS) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } - break; } - case 'd': { - if (scheme == SCHEME_TYPE_DATA) { - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByURI( - DPL::FromUTF8String(uri))); - return false; - } - break; } - case 'v': { - if (scheme == SCHEME_TYPE_YOUTUBE) { - std::string youtubeUri = uri; - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByPkgname( - ApplicationLauncherPkgname::PKG_NAME_VIDEO_PLAYER, - scheme, - youtubeUri, - "null")); - return false; - } - break; } - case 'r': { - if (scheme == SCHEME_TYPE_RTSP) { - std::string youtubeUri = uri; - LogDebug("scheme: " << scheme); - LogDebug("youtubeUri: " << youtubeUri); - CONTROLLER_POST_EVENT( - ApplicationLauncher, - ApplicationLauncherEvents::LaunchApplicationByPkgname( - ApplicationLauncherPkgname::PKG_NAME_VIDEO_PLAYER, - scheme, - youtubeUri, - "null")); - return false; - } - break; } - default: - LogError("Unknown scheme passed: " << scheme); - Assert(false && "Unknown scheme passed"); - return false; - } - - LogError("Unknown scheme passed: " << scheme); - Assert(false && "Unknown scheme passed"); - return false; -} - -Eina_Bool elmSchemeHandle(const char* uri) -{ - if (!uri) { - LogError("ElmWebview callback - wrong arguments passed"); - return EINA_FALSE; - } - LogDebug("Scheme being checked: " << uri); - - const char *end = strstr(uri, ":"); - if (!end) { - LogError("Lack of scheme - ignoring"); - return EINA_FALSE; - } - std::string scheme(uri, end); - - switch (scheme[0]) { - case 'w': { - if (scheme == SCHEME_TYPE_WIDGET) { - return EINA_TRUE; - } - break; } - case 'h': { - // For blocking launch browser in scheme callback. - // "_target" tag call the 'should,allow,open' callback. - if (scheme == SCHEME_TYPE_HTTP) { - return EINA_TRUE; - } else if (scheme == SCHEME_TYPE_HTTPS) { - return EINA_TRUE; - } - break; } - case 'f': { - if (scheme == SCHEME_TYPE_FILE) { - return EINA_TRUE; - } - break; } - case 't': { - if (scheme == SCHEME_TYPE_TEL) { - if(handleURIByScheme(scheme.c_str(), uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } - break; } - case 'm': { - if (scheme == SCHEME_TYPE_MMSTO || scheme == SCHEME_TYPE_MAILTO) { - if(handleURIByScheme(scheme.c_str(), uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } - break; } - case 's': { - if (scheme == SCHEME_TYPE_SMS) { - if(handleURIByScheme(scheme.c_str(), uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } - break; } - case 'd': { - if (scheme == SCHEME_TYPE_DATA) { - if(handleURIByScheme(scheme.c_str(), uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } - break; } - case 'v': { - if (scheme == SCHEME_TYPE_YOUTUBE) { - std::string youtubeUri = uri; - if(handleURIByScheme(scheme.c_str(), uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } - break; } - case 'r': { - if (scheme == SCHEME_TYPE_RTSP) { - std::string youtubeUri = uri; - if(handleURIByScheme(scheme.c_str(), uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } - break; } - default: - LogError("Unknown scheme passed: " << scheme); - Assert(false && "Unknown scheme passed"); - return EINA_FALSE; - } - - LogError("Unknown scheme passed: " << scheme); - Assert(false && "Unknown scheme passed"); - return EINA_FALSE; -} - -Eina_Bool shouldAllowOpen(const char* uri, WidgetModel *widgetModel) -{ - if (widgetModel->Type.Get().appType - == WrtDB::APP_TYPE_TIZENWEBAPP) - { - // Multi window is supported by tizen web app - return EINA_TRUE; - } else { - // WS-1502 - // If new window shall be opended with target = _blank and scheme is http/s - // then we shall forward this request to external browser - if (strstr(uri, SCHEME_TYPE_HTTP) == uri) { - if(handleURIByScheme(SCHEME_TYPE_HTTP, uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } else if (strstr(uri, SCHEME_TYPE_HTTPS) == uri) { - if(handleURIByScheme(SCHEME_TYPE_HTTPS, uri)) { - return EINA_TRUE; - } else { - return EINA_FALSE; - } - } else { - return EINA_TRUE; - } - } - return EINA_TRUE; -} - -} // namespace SchemeSupport -} // namespace ViewModule diff --git a/src/domain/efl/view_logic_scheme_support.h b/src/domain/efl/view_logic_scheme_support.h deleted file mode 100644 index 02b9d33..0000000 --- a/src/domain/efl/view_logic_scheme_support.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_scheme_support.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file for scheme handler - */ - -#ifndef WRT_SRC_DOMAIN_SCHEME_SUPPORT_H -#define WRT_SRC_DOMAIN_SCHEME_SUPPORT_H - -#include -#include - -namespace ViewModule { -namespace SchemeSupport { - -char const * const SCHEME_TYPE_FILE = "file"; -char const * const SCHEME_TYPE_SMS = "sms"; -char const * const SCHEME_TYPE_MMSTO = "mmsto"; -char const * const SCHEME_TYPE_MAILTO = "mailto"; -char const * const SCHEME_TYPE_DATA = "data"; -char const * const SCHEME_TYPE_TEL = "tel"; -char const * const SCHEME_TYPE_HTTP = "http"; -char const * const SCHEME_TYPE_HTTPS = "https"; -char const * const SCHEME_TYPE_WIDGET = "widget"; -char const * const SCHEME_TYPE_YOUTUBE = "vnd.youtube"; -char const * const SCHEME_TYPE_RTSP = "rtsp"; - -bool handleURIByScheme(const char *scheme, const char* uri); -Eina_Bool elmSchemeHandle(const char* uri); -Eina_Bool shouldAllowOpen(const char* uri, WidgetModel *widgetModel); - -} // namespace SchemeSupport -} // namespace ViewModule - -#endif //WRT_SRC_DOMAIN_SCHEME_HANDLER_H diff --git a/src/domain/efl/view_logic_security_support.cpp b/src/domain/efl/view_logic_security_support.cpp deleted file mode 100644 index 1924797..0000000 --- a/src/domain/efl/view_logic_security_support.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_keys_support.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file of SecuritySupport API used by ViewLogic - */ - -#include "view_logic_security_support.h" -#include -#include -#include - -#include -#include - -namespace ViewModule { -namespace SecuritySupport { - -namespace { -const char *SCHEME_TYPE_HTTP = "http"; -const char *SCHEME_TYPE_HTTPS = "https"; -} //TODO copied from view_logic.cpp - -bool checkWARP(const char *url, WidgetModel *widgetModel) -{ - const char *val = getenv("DISABLE_WARP"); - if (val != NULL && strcmp(val, "1") == 0) { - return true; - } - - if (WarpIRI::isIRISchemaIgnored(url)) { - // scheme is not supported by WARP - return true; - } - - // access tag in config.xml file is mandatory in wac 1.0 - // if (model->Standard.Get() == WidgetStandard_Wac10) { - // LogError("Widget wac 1.0"); - // access tag was set to false - access to network is forbidden - // if (model->AccessNetwork.Get() == false) { return false; } - // - // // access tag was set to true and no warp definition was found - // if (model->WarpDefinitionEmpty.Get()) { return true; } - // } - return widgetModel->AccessList.Get().isRequiredIRI( - DPL::FromUTF8String(std::string(url))); -} - -bool checkWhitelist(const char *url) -{ - LogInfo("Check WhiteList"); - // White List should be checked in only case of Tizen widget - if (WarpIRI::isIRISchemaIgnored(url)) { - // scheme is not supported by WARP - return true; - } - - WidgetAccessList whiteURIList(WrtDB::GlobalDAOReadOnly::GetWhiteURIList()); - return whiteURIList.isRequiredIRI(DPL::FromUTF8String(std::string(url))); -} - -bool checkChildProtection(const char *url, WidgetModel *widgetModel) -{ - ChildProtection::Logic& instance = - ChildProtection::LogicSingleton::Instance(); - return !(instance.IsParentalModeActive() && - instance.IsEnabledFiltering(widgetModel) && - instance.IsUriForbidden(widgetModel, url)); -} - -bool checkUriRequiredNet(const std::string &uri) -{ - if (strstr(uri.c_str(), SCHEME_TYPE_HTTP) == uri.c_str() || - strstr(uri.c_str(), SCHEME_TYPE_HTTPS) == uri.c_str()) - { - return true; - } else { - return false; - } -} - -} // namespace SecuritySupport -} //namespace ViewModule diff --git a/src/domain/efl/view_logic_security_support.h b/src/domain/efl/view_logic_security_support.h deleted file mode 100644 index 5f40929..0000000 --- a/src/domain/efl/view_logic_security_support.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_security_support.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file of SecuritySupport API used by ViewLogic - */ - -#ifndef VIEW_LOGIC_SECURITY_SUPPORT_H_ -#define VIEW_LOGIC_SECURITY_SUPPORT_H_ - -#include - -namespace ViewModule { -namespace SecuritySupport { - -char const * const WARP_ERROR_MSG = - "file:///usr/etc/wrt/warp_security_error.msg"; -//char const * const ROAMING_ERROR_MSG = "file:///usr/etc/wrt/roaming_error.msg"; -char const * const WITHOUT_NETWORK_SCHEMA[] = { "file://", "widget://", "data:", 0 }; -char const * const PARAM_URL = "param:url"; -char const * const ACE_IGNORED_SCHEMA[] = { "file://", "widget://", "data:", - "tel:", "sms:", "mmsto:", "mailto:", 0 }; - -bool checkWARP(const char *url, WidgetModel *widgetModel); -bool checkWhitelist(const char *url); -bool checkChildProtection(const char *url, WidgetModel *widgetModel); -bool checkUriRequiredNet(const std::string &uri); - -} // namespace SecuritySupport -} // namespace ViewModule - -#endif /* VIEW_LOGIC_SECURITY_SUPPORT_H_ */ diff --git a/src/domain/efl/view_logic_storage_support.cpp b/src/domain/efl/view_logic_storage_support.cpp deleted file mode 100644 index cfeebb5..0000000 --- a/src/domain/efl/view_logic_storage_support.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_storage_support.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file of StorageSupport API used by ViewLogic - */ -#include "view_logic_storage_support.h" - -#include -#include -#include -#include -#include - -namespace ViewModule { -namespace StorageSupport { - -namespace -{ //anonymous -const mode_t TEMPORARY_STORAGE_MODE = 0700; -} - -void initializeStorage(WidgetModel *widgetModel) -{ - LogDebug("initializeStorage"); - Assert(widgetModel && "Passed widgetModel is NULL!"); - - // create temporary storage - std::string path = - DPL::ToUTF8String( - widgetModel->TemporaryStoragePath.Get()); - FileUtils::MakePath(path, TEMPORARY_STORAGE_MODE); -} - -void deinitializeStorage(WidgetModel *widgetModel) -{ - LogDebug("deinitializeStorage"); - Assert(widgetModel && "Passed widgetModel is NULL!"); - - // remove temporary storage - std::string path = - DPL::ToUTF8String( - widgetModel->TemporaryStoragePath.Get()); - FileUtils::RemoveDir(path); -} - -} // namespace StorageSupport -} // namespace ViewModule diff --git a/src/domain/efl/view_logic_storage_support.h b/src/domain/efl/view_logic_storage_support.h deleted file mode 100644 index fc8a9e0..0000000 --- a/src/domain/efl/view_logic_storage_support.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_storage_support.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file of StorageSupport API used by ViewLogic - */ - -#ifndef VIEW_LOGIC_STORAGE_SUPPORT_H_ -#define VIEW_LOGIC_STORAGE_SUPPORT_H_ - -#include - -namespace ViewModule { -namespace StorageSupport { - -void initializeStorage(WidgetModel *widgetModel); -void deinitializeStorage(WidgetModel *widgetModel); - -} // namespace StorageSupport -} // namespace ViewModule - -#endif /* VIEW_LOGIC_STORAGE_SUPPORT_H_ */ diff --git a/src/domain/efl/view_logic_uri_support.cpp b/src/domain/efl/view_logic_uri_support.cpp deleted file mode 100644 index f04b965..0000000 --- a/src/domain/efl/view_logic_uri_support.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_uri_support.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Implementation file of UriSupport API used by ViewLogic - */ - -#include "view_logic_uri_support.h" -#include -#include -#include -#include - -namespace ViewModule { -namespace UriSupport { - -namespace -{//anonymous -const char *APP_SERVICE_OPERATION = "__APP_SVC_OP_TYPE__"; -const char *APP_SERVICE_SCHEME = "__APP_SVC_URI__"; -const char *APP_SERVICE_MIMETYPE = "__APP_SVC_MIME_TYPE__"; -} - -std::string getAppServiceValue(const std::string &data, - const std::string &key) -{ - std::string orgin = data; - - if (orgin.find(key + "=") != std::string::npos) { - // erase in front of 'key' - orgin.erase( - orgin.begin(), - orgin.begin() + - orgin.find(key + "=") + - std::string(key + "=").length()); - // erase behind of 'value' - if (orgin.find("&") != std::string::npos) { - orgin.erase( - orgin.begin()+int(orgin.find_first_of("&")), orgin.end()); - } - } else { - return std::string(""); - } - return orgin; -} - -std::string getAppServiceUri(const std::string &originData, WidgetModel *widgetModel) -{ - WidgetApplicationServiceList appServiceList = - widgetModel->AppServiceList.Get(); - std::string operation = - getAppServiceValue(originData, std::string(APP_SERVICE_OPERATION)); - std::string scheme = - getAppServiceValue(originData, std::string(APP_SERVICE_SCHEME)); - std::string mime = - getAppServiceValue(originData, std::string(APP_SERVICE_MIMETYPE)); - - FOREACH(appServiceIt, appServiceList) { - if (DPL::ToUTF8String(appServiceIt->operation) == operation && - (DPL::ToUTF8String(appServiceIt->scheme) == scheme || - DPL::ToUTF8String(appServiceIt->scheme) == "*/*") && - (DPL::ToUTF8String(appServiceIt->mime) == mime || - DPL::ToUTF8String(appServiceIt->mime) == "*/*")) - { - return DPL::ToUTF8String(appServiceIt->src); - } - } - LogDebug("no matching result"); - return std::string(""); -} - -std::string getUri(const std::string &appService, WidgetModel *widgetModel) -{ - DPL::String uri; - std::string startUri; - - // search application service - if (appService != "") { - LogInfo("application service information = " << appService); - startUri = getAppServiceUri(appService, widgetModel).c_str(); - LogInfo("application service start uri is " << startUri); - if (startUri == "") { - LogInfo("application service doesn't have matched data"); - startUri = DPL::ToUTF8String( - *(widgetModel->RunningStartURL.Get())); - } - } else { - startUri = DPL::ToUTF8String( - *(widgetModel->RunningStartURL.Get())); - } - // insert prefix path - if (strstr(startUri.c_str(), "http") == startUri.c_str()) { - uri = DPL::FromUTF8String(startUri); - } else { - uri = widgetModel->PrefixURL.Get() + - DPL::FromUTF8String(startUri); - } - // append application service information - uri += DPL::FromUTF8String(appService); - - return DPL::ToUTF8String(uri).c_str(); -} - -} // namespace UriSupportImplementation -} // namespace ViewModule diff --git a/src/domain/efl/view_logic_uri_support.h b/src/domain/efl/view_logic_uri_support.h deleted file mode 100644 index 08c367e..0000000 --- a/src/domain/efl/view_logic_uri_support.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file view_logic_uri_support.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @brief Header file of UriSupport API used by ViewLogic - */ - -#ifndef VIEW_LOGIC_URI_SUPPORT_H_ -#define VIEW_LOGIC_URI_SUPPORT_H_ - -#include -#include - -namespace ViewModule { -namespace UriSupport { - -std::string getUri(const std::string &appService, WidgetModel *widgetModel); - - -} // namespace UriSupportImplementation -} // namespace ViewModule - -#endif /* VIEW_LOGIC_URI_SUPPORT_H_ */ diff --git a/src/domain/efl/widget_view.h b/src/domain/efl/widget_view.h deleted file mode 100644 index 7144572..0000000 --- a/src/domain/efl/widget_view.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file widget_view.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Declaration of private structure with efl view data. - */ - -#ifndef WRT_SRC_DOMAIN_EFL_WIDGETVIEW_H_ -#define WRT_SRC_DOMAIN_EFL_WIDGETVIEW_H_ - -#include -#include -#include -#include - -#include "framework_efl.h" -#include -#include "widget_model.h" - -#include -#include -#include - -// forward declaration -class WindowData; -class ViewLogic; - -enum Mode -{ - Mode_Normal, - Mode_Scroll -}; - -struct EvasStruct -{ - EvasObject m_elmWebView; - EvasObject m_webView; - EvasObject m_webViewFrame; -}; -typedef std::list EvasStructList; - -#define EVAS_ELM_WEBVIEW(widgetView) \ -widgetView->m_currentEvasStruct->m_elmWebView -#define EVAS_WEBVIEW(widgetView) \ -widgetView->m_currentEvasStruct->m_webView -#define EVAS_WEBVIEW_FRAME(widgetView) \ -widgetView->m_currentEvasStruct->m_webViewFrame - -/** - * Private structure that contains efl view data of specific widgetModel - */ -struct WidgetViewDataStruct : private DPL::Noncopyable -{ - WindowData *m_windowData; - Evas* m_view; - Evas_Object* m_elmWidget; - EvasStruct* m_currentEvasStruct; - EvasStructList m_evasStructList; - EvasObject m_needSuspendWebview; - double m_elmScale; - - WidgetHandle m_widgetHandle; - bool m_firstPageLoaded; - bool m_firstUriChanged; - bool m_firstUriLoadFinished; - bool m_isMainResource; - - EvasObject::IConnection* m_contentSizeChangedConnection; - - Ecore_IMF_Context* imContext; - - Mode mode; - DPL::String hoveredLink; - - struct ComboboxDataStruct - { - int comboboxOptionsSize; - int comboboxOptionSelected; - char** comboboxOptions; - int clickPosX; - int clickPosY; - }; - - ComboboxDataStruct combo; - - Ewk_View_Mode m_viewMode; - - int webviewMaxWidth; - int webviewMaxHeight; - - Ecore_Timer *m_progressTimer; - Ecore_Timer *m_suspendTimer; - Ecore_Event_Handler *m_eventHandlerDown; - Ecore_Event_Handler *m_eventHandlerUp; - - /** - * Path to currently displayed document. - * Contains only scheme, authority and path parts of URI. - * e.g. file:///var/www/index.html. - */ - std::string m_currentUri; - - WidgetModel *m_widgetModel; - ViewLogic *m_viewLogic; - - std::unique_ptr m_browserSetting; - - WidgetModel* getWidgetModel() - { - return m_widgetModel; - } - - void initializeBrowserSettings() - { - m_browserSetting.reset( - new VconfBrowserSetting(m_currentEvasStruct->m_elmWebView, - this)); - } - - WidgetViewDataStruct(WidgetModel *widgetModel, - ViewLogic *viewLogic) : - m_widgetModel(widgetModel), - m_viewLogic(viewLogic) - { - mode = Mode_Normal; - - //combobox data - combo.comboboxOptionsSize = 0; - combo.comboboxOptionSelected = 0; - combo.comboboxOptions = NULL; - - //Context for keyboard; - imContext = NULL; - - //Maximum widget width and height - webviewMaxWidth = 480; - webviewMaxHeight = 745; - - m_progressTimer = NULL; - m_suspendTimer = NULL; - - m_elmScale = 1.0; - } -}; - -#endif /* WRT_SRC_DOMAIN_EFL_WIDGETVIEW_H_ */ diff --git a/src/domain/efl/window_data.cpp b/src/domain/efl/window_data.cpp deleted file mode 100644 index 3c2e8bc..0000000 --- a/src/domain/efl/window_data.cpp +++ /dev/null @@ -1,592 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file window_data.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Window data class implementation - */ -#include -#include -#include -#include -#include -#include -IMPLEMENT_SINGLETON(WindowLogic) - -namespace { -char const* const DAEMON_EDJ_PATH = "/usr/share/edje/wrt/Daemon.edj"; -char const* const THEME_EDJ_PATH = "/usr/share/edje/wrt/wrt_theme.edj"; -char const* const ELM_STATE_SHOW_CONTENT = "elm,state,show,content"; -char const* const ELM_SWALLOW_CONTENT = "elm.swallow.content"; -char const* const ELM_SWALLOW_BACKWARD = "elm.swallow.backward"; -char const* const ELM = "elm"; -char const* const LAYOUT = "layout"; -char const* const APPLICATION = "application"; -char const* const INDICATOR = "indicator"; -char const* const NOINDICATOR = "noindicator"; -char const* const LIST_PROCESS = "list_process"; -char const* const INTERNAL_LAYOUT = "internal_layout"; -char const* const FLOATBACKWARD_BUTTON_STYLE = "wrt/backward"; -const double PROGRESS_POSITION_X = 0.5; -const double PROGRESS_POSITION_Y = 0.5; -const int PROGRESS_SIZE_RATIO = 12; //ResolutionWidth / ProgressWidth = 12 -const int PROGRESS_COLOR_R = 153; -const int PROGRESS_COLOR_G = 153; -const int PROGRESS_COLOR_B = 153; -const int PROGRESS_COLOR_A = 255; -const int WRONG_APPCORE_RM_PORTRAIT_VALUE = -1; - -struct ComboboxCallbackData -{ - void* response_data; - WrtComboboxResponseCallback callback; - WindowData* windowData; - ComboboxCallbackData(WindowData* a_windowData, - WrtComboboxResponseCallback a_callback, - void* a_userdata) : - response_data(a_userdata), - callback(a_callback), - windowData(a_windowData) - { - } -}; -} // anonymous namespace - -WindowLogic::WindowLogic() -{ -} - -void WindowLogic::addWindow(Evas_Object* win, - WindowData* windowData) -{ - LogDebug("Adding window: " << win); - m_openedWindows.insert(std::make_pair(win, windowData)); -} - -void WindowLogic::removeWindow(Evas_Object* win) -{ - LogDebug("Removing window: " << win); - m_openedWindows.erase(win); -} - -void WindowLogic::showComboboxInWindow( - Evas_Object* window, - int length, - char** combobox_options, - void* response_data, - WrtComboboxResponseCallback callback) -{ - WindowDataMap::iterator windowDataIt = m_openedWindows.find(window); - if (windowDataIt == m_openedWindows.end()) { - LogError("No window in map"); - } else { - WindowData* windowData = windowDataIt->second; - windowData->showCombobox(length, - combobox_options, - response_data, - callback); - } -} - -void WindowLogic::showComboboxCallback(int length, - char** combobox_options, - void* response_data, - WrtComboboxResponseCallback callback, - void* userdata) -{ - Evas_Object* window = static_cast(userdata); - - LogDebug("Showing combobox in window"); - WindowLogicSingleton::Instance().showComboboxInWindow(window, - length, - combobox_options, - response_data, - callback); -} - -WindowData::WindowData(unsigned long pid, - void* p_userdata) : - m_naviBackButton(NULL), - m_responseData(p_userdata), - m_picker(NULL) -{ - init(pid); -} - -WindowData::~WindowData() -{ - delete m_picker; - WindowLogicSingleton::Instance().removeWindow(m_win); - for (EventWithFunctionVector::iterator eventWithFunction = - m_registeredSmartCallbacks.begin(); - eventWithFunction != m_registeredSmartCallbacks.end(); - ++eventWithFunction) - { - smartCallbackDel( - eventWithFunction->eventName.c_str(), eventWithFunction->function); - } - evas_object_del(m_win); -} - -void WindowData::init(unsigned long pid) -{ - int result; - // import button theme - elm_theme_overlay_add(NULL, THEME_EDJ_PATH); - - m_win = createWindow(pid); - m_platform_layout = createPlatformLayout(m_win); - evas_object_show(m_platform_layout); - m_navigation = createNavigationBar(m_platform_layout); - evas_object_show(m_navigation); - m_user_layout = createUserLayout(m_navigation); - evas_object_show(m_user_layout); - m_conformant = createConformant(m_win, m_user_layout); - evas_object_show(m_conformant); - m_progress = createProgress(m_user_layout); - - WindowLogicSingleton::Instance().addWindow(m_win, this); - - result = ug_init( - static_cast(ecore_x_display_get()), - elm_win_xwindow_get(m_win), - m_win, - UG_OPT_INDICATOR_ENABLE); - - if (result != 0) { - LogError("Gadget creation failed for window: " << m_win); - Assert(false && "UI Gadget creation failed"); - } - - m_picker = new ComboboxPicker(m_win, - m_navigation, - m_user_layout); -} - -void* WindowData::getResponseUserdata() const -{ - return m_responseData; -} - -void WindowData::setEvasObjectForLayout(Evas_Object* evas_object) -{ - elm_conformant_content_set(m_conformant, evas_object); -} - -void WindowData::unsetEvasObjectForLayout() -{ - elm_conformant_content_unset(m_conformant); -} - -void WindowData::picker_callback(const DPL::OptionalInt& index, void* userdata) -{ - ComboboxCallbackData* data = static_cast(userdata); - - LogInfo("Response for combobox was set"); - if (!!index) { - LogDebug("Index is " << *index); - if (data->callback) { - data->callback(*index, data->response_data); - } - } else { - delete data; - } -} - -void WindowData::hideCombobox() -{ - if (m_picker) { - m_picker->HideComboboxPicker(); - } -} - -void WindowData::showCombobox( - int length, - char** combobox_options, - void* response_data, - WrtComboboxResponseCallback callback) -{ - if (m_picker) { - LogInfo("Showing combobox"); - ComboboxCallbackData* data = new ComboboxCallbackData(this, - callback, - response_data); - m_picker->ShowComboboxPicker(length, - combobox_options, - picker_callback, - data); - } -} - -void WindowData::loadingOn() -{ - LogInfo("loadingOn"); - - alignProgressPosition(); - elm_progressbar_pulse(m_progress, EINA_TRUE); - evas_object_show(m_progress); -} - -void WindowData::loadingOff() -{ - LogInfo("loadingOff"); - - elm_progressbar_pulse(m_progress, EINA_FALSE); - evas_object_hide(m_progress); -} - -void WindowData::moveProgress() -{ - LogInfo("moveProgress"); - - if (evas_object_visible_get(m_progress) == EINA_TRUE) { - alignProgressPosition(); - } else { - LogInfo("Progress is hide"); - } -} - -void WindowData::setViewModeFullScreen(bool indicator, bool backbutton) -{ - LogDebug("indicator: " << indicator << ", backbutton: " << backbutton); - if (indicator) { - elm_win_indicator_state_set(m_win, EINA_TRUE); - elm_layout_theme_set(m_platform_layout, - LAYOUT, APPLICATION, INDICATOR); - } else { - elm_win_indicator_state_set(m_win, EINA_FALSE); - elm_layout_theme_set(m_platform_layout, - LAYOUT, APPLICATION, NOINDICATOR); - } - if (backbutton) { - createFloatBackButton(); - } -} - -void WindowData::setViewModeMaximized( - const char *title, - bool indicator, - bool backbutton) -{ - LogDebug("indicator: " << indicator << ", backbutton: " << backbutton); - if (indicator) { - elm_win_indicator_state_set(m_win, EINA_TRUE); - elm_layout_theme_set(m_platform_layout, - LAYOUT, APPLICATION, INDICATOR); - } else { - elm_win_indicator_state_set(m_win, EINA_FALSE); - elm_layout_theme_set(m_platform_layout, - LAYOUT, APPLICATION, NOINDICATOR); - } - createTitle(title); - if (backbutton) { - createFloatBackButton(); - } -} - -void WindowData::createTitle(const char* data) -{ - LogDebug("createTitle"); - Elm_Object_Item* naviIt = elm_naviframe_top_item_get(m_navigation); - elm_naviframe_item_title_visible_set(naviIt, EINA_TRUE); - elm_object_item_text_set(naviIt, data); -} - -void WindowData::removeTitle() -{ - Elm_Object_Item* naviIt = elm_naviframe_top_item_get(m_navigation); - elm_object_item_text_set(naviIt, ""); - elm_naviframe_item_title_visible_set(naviIt, EINA_FALSE); -} - -void WindowData::createTitleButton() -{ - // Add left button for back action - m_naviBackButton = elm_button_add(m_navigation); - elm_object_style_set(m_naviBackButton, "navigationbar_backbutton/default"); - - Elm_Object_Item* naviIt = elm_naviframe_top_item_get(m_navigation); - elm_object_item_part_content_set(naviIt, ELM_NAVIFRAME_ITEM_PREV_BTN, - m_naviBackButton); -} - -void WindowData::createFloatBackButton() -{ - // Add float backbutton on the left coner - m_floatBackButton = elm_button_add(m_user_layout); - elm_object_style_set(m_floatBackButton, FLOATBACKWARD_BUTTON_STYLE); - elm_layout_content_set(m_user_layout, - ELM_SWALLOW_BACKWARD, - m_floatBackButton); - evas_object_show(m_floatBackButton); -} - -void WindowData::updateTitleButton(const bool display) -{ - if (display) { - evas_object_show(m_naviBackButton); - } else { - evas_object_hide(m_naviBackButton); - } -} - -Evas_Object* WindowData::createWindow(unsigned long pid) -{ - Evas_Object* window = elm_win_add(NULL, "wrt-widget", ELM_WIN_BASIC); - ecore_x_window_prop_property_set( - elm_win_xwindow_get(window), - ECORE_X_ATOM_NET_WM_PID, - ECORE_X_ATOM_CARDINAL, 32, &pid, 1); - elm_win_title_set(window, "wrt-widget"); - elm_win_borderless_set(window, EINA_TRUE); - elm_win_conformant_set(window, EINA_TRUE); - int w, h; - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - evas_object_resize(window, w, h); - return window; -} - -Evas_Object* WindowData::createPlatformLayout(Evas_Object* parent) -{ - Evas_Object* platform_layout = elm_layout_add(parent); - elm_layout_theme_set(platform_layout, LAYOUT, APPLICATION, NOINDICATOR); - evas_object_size_hint_expand_set(platform_layout, - EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - elm_win_resize_object_add(m_win, platform_layout); - edje_object_signal_emit( - elm_layout_edje_get(platform_layout), ELM_STATE_SHOW_CONTENT, ELM); - return platform_layout; -} - -Evas_Object* WindowData::createUserLayout(Evas_Object* parent) -{ - Assert(parent != NULL && "Parent for User Layout is null"); - Evas_Object* layout = elm_layout_add(parent); - elm_layout_file_set(layout, DAEMON_EDJ_PATH, "client"); - evas_object_size_hint_weight_set( - layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - Elm_Object_Item* naviIt = elm_naviframe_item_push( - /* Evas_Object *obj */ - parent, - /* const char *title_label */ - "", - /* Evas_Object *prev_btn */ - NULL, - /* Evas_Object *next_btn */ - NULL, - /* Evas_Object *content */ - layout, - /* const char *item_style */ - NULL); - - elm_naviframe_item_title_visible_set(naviIt, EINA_FALSE); - return layout; -} - -Evas_Object* WindowData::createConformant( - Evas_Object* window, Evas_Object* parent) -{ - Assert(window != NULL && "Window is null"); - Assert(parent != NULL && "Parent is null"); - elm_win_conformant_set(window, EINA_TRUE); - Evas_Object* conformant = elm_conformant_add(parent); - elm_object_style_set(conformant, INTERNAL_LAYOUT); - evas_object_size_hint_weight_set( - conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_layout_content_set(m_user_layout, ELM_SWALLOW_CONTENT, conformant); - evas_object_show(conformant); - return conformant; -} - -Evas_Object* WindowData::createNavigationBar(Evas_Object* parent) -{ - Assert(parent != NULL && "Parent for naviframe is null"); - Evas_Object* navigation = elm_naviframe_add(parent); - elm_layout_content_set(parent, ELM_SWALLOW_CONTENT, navigation); - return navigation; -} - -Evas_Object* WindowData::createProgress(Evas_Object* parent) -{ - Assert(parent != NULL && "Parent for progress is null"); - Evas_Object* progress = elm_progressbar_add(parent); - progress = elm_progressbar_add(parent); - elm_object_style_set(progress, LIST_PROCESS); - evas_object_color_set(progress, - PROGRESS_COLOR_R, - PROGRESS_COLOR_G, - PROGRESS_COLOR_B, - PROGRESS_COLOR_A); - Evas_Coord x, y, w, h; - int progressW, progressH; - evas_object_geometry_get(m_win, &x, &y, &w, &h); - progressW = w / static_cast(PROGRESS_SIZE_RATIO); - progressH = progressW; - - evas_object_resize(progress, progressW, progressH); - return progress; -} - -void WindowData::alignProgressPosition() -{ - Evas_Coord layOutX, layOutY, layOutW, layOutH; - Evas_Coord progressX, progressY, progressW, progressH; - Evas_Coord alignedX, alignedY; - - evas_object_geometry_get(m_user_layout, - &layOutX, - &layOutY, - &layOutW, - &layOutH); - evas_object_geometry_get(m_progress, - &progressX, - &progressY, - &progressW, - &progressH); - alignedX = (layOutW - progressW) * PROGRESS_POSITION_X + layOutX; - alignedY = (layOutH - progressH) * PROGRESS_POSITION_Y + layOutY; - evas_object_move(m_progress, alignedX, alignedY); -} - -void WindowData::smartCallbackAdd( - const char* event, - CallbackType f, - const void* data) -{ - evas_object_smart_callback_add(m_win, event, f, data); - m_registeredSmartCallbacks.push_back(EventWithFunction(f, event)); -} - -void* WindowData::smartCallbackDel( - const char* event, - CallbackType f) -{ - //we assume that the caller takes care of userdata - return evas_object_smart_callback_del(m_win, event, f); -} - -void WindowData::addNaviBackButtonCallback( - const char* event, - CallbackType callback, - const void* data) -{ - Assert(m_naviBackButton != NULL && "m_naviBackButton is null"); - evas_object_smart_callback_add(m_naviBackButton, event, callback, data); -} - -void* WindowData::delNaviBackButtonCallback( - const char* event, - CallbackType callBack) -{ - Assert(m_naviBackButton != NULL && "m_naviBackButton is null"); - return evas_object_smart_callback_del(m_naviBackButton, event, callBack); -} - -void WindowData::addFloatBackButtonCallback( - const char* event, - CallbackType callback, - const void* data) -{ - Assert(m_floatBackButton != NULL && "m_floatBackButton is null"); - evas_object_smart_callback_add(m_floatBackButton, event, callback, data); -} - -void* WindowData::delFloatBackButtonCallback( - const char* event, - CallbackType callBack) -{ - Assert(m_floatBackButton != NULL && "m_floatBackButton is null"); - return evas_object_smart_callback_del(m_floatBackButton, event, callBack); -} - -void WindowData::userlayoutCallbackAdd( - const Evas_Callback_Type event, - EvasCallbackType callback, - const void* data) -{ - Assert(m_user_layout != NULL && "m_user_layout is null"); - evas_object_event_callback_add(m_user_layout, event, callback, data); -} - -void* WindowData::userlayoutCallbackDel( - const Evas_Callback_Type event, - EvasCallbackType callBack) -{ - Assert(m_user_layout != NULL && "m_user_layout is null"); - return evas_object_event_callback_del(m_user_layout, event, callBack); -} - -void WindowData::emitSignalForUserLayout( - const char* emission, const char* source) -{ - LogInfo("emitSignalForUserLayout called"); - Assert(m_user_layout != NULL && "m_user_layout is null"); - Assert(emission != NULL && "emission is null"); - Assert(source != NULL && "source is null"); - - edje_object_signal_emit( - elm_layout_edje_get(m_user_layout), emission, source); -} - -int WindowData::rotationCallback(appcore_rm mode, void* data) -{ - LogInfo("RotationCallback called"); - Evas_Object* window = static_cast(data); - Assert(window != NULL && "window is null"); - - // get landscape setting is on/off - int enableLandscape; - if (vconf_get_bool( - VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &enableLandscape) < 0) - { - LogWarning ("Cannot get vconf key"); - return 0; - } - if (enableLandscape) { - LogDebug("Landscape is disabled"); - return 0; - } - - // get rotation degree from arg, mode. - DPL::Optional degree; - switch (mode) { - case APPCORE_RM_PORTRAIT_NORMAL: - degree = 0; - break; - case APPCORE_RM_PORTRAIT_REVERSE: - degree = 180; - break; - case APPCORE_RM_LANDSCAPE_NORMAL: - degree = 270; - break; - case APPCORE_RM_LANDSCAPE_REVERSE: - degree = 90; - break; - default: - degree = WRONG_APPCORE_RM_PORTRAIT_VALUE; - break; - } - LogDebug("rotation degress is " << degree); - if (degree != WRONG_APPCORE_RM_PORTRAIT_VALUE) { - elm_win_rotation_with_resize_set(window, *degree); - } - return 0; -} - - diff --git a/src/domain/efl/window_data.h b/src/domain/efl/window_data.h deleted file mode 100644 index 6e40d32..0000000 --- a/src/domain/efl/window_data.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file window_data.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Window data header file. - */ - -#ifndef WINDOW_INITIALIZE_H_ -#define WINDOW_INITIALIZE_H_ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -/* - * Current layout structure - * It is so compliacted because of picker for combobox - * - * m_win (elm_win) - * m_platform_layout (elm_layout) - * m_navigation (elm_navigation) - * m_user_layout (elm_layout) - * widget_area (elm_webview) - * pickerCombobox (elm_box) - * - * - */ - -class WindowData : private DPL::Noncopyable -{ - private: - typedef void (*CallbackType)( - void* data, Evas_Object* obj, void* event_info); - typedef void (*EvasCallbackType)( - void* data, Evas* evas, Evas_Object* obj, void* event_info); - struct EventWithFunction - { - CallbackType function; - std::string eventName; - EventWithFunction(CallbackType a_function, - const char * a_eventName) : - function(a_function), - eventName(a_eventName) - { - } - }; - typedef std::vector EventWithFunctionVector; - - public: - Evas_Object* m_win; - - explicit WindowData(unsigned long pid, - void* p_userdata); - virtual ~WindowData(); - - void init(unsigned long pid); - void setEvasObjectForLayout(Evas_Object* evas_object); - void unsetEvasObjectForLayout(); - void smartCallbackAdd(const char* event, - CallbackType callback, - const void* data); - void* smartCallbackDel(const char* event, - CallbackType callback); - void* getResponseUserdata() const; - - void showCombobox(int length, - char** combobox_options, - void* response_data, - WrtComboboxResponseCallback callback); - - void loadingOn(); - void loadingOff(); - void moveProgress(); - void setViewModeFullScreen(bool indicator, bool backbutton); - void setViewModeMaximized( - const char *title, - bool indicator, - bool backbutton); - void addNaviBackButtonCallback( - const char* event, - CallbackType callback, - const void* data); - void* delNaviBackButtonCallback( - const char* event, - CallbackType callBack); - void addFloatBackButtonCallback( - const char* event, - CallbackType callback, - const void* data); - void* delFloatBackButtonCallback( - const char* event, - CallbackType callBack); - void userlayoutCallbackAdd( - const Evas_Callback_Type event, - EvasCallbackType callback, - const void* data); - void* userlayoutCallbackDel( - const Evas_Callback_Type event, - EvasCallbackType callback); - void emitSignalForUserLayout( - const char* emission, - const char* source); - - private: - Evas_Object* m_platform_layout; - Evas_Object* m_user_layout; - Evas_Object* m_navigation; - Evas_Object* m_naviBackButton; - Evas_Object* m_floatBackButton; - Evas_Object* m_conformant; - Evas_Object* m_progress; - - EventWithFunctionVector m_registeredSmartCallbacks; - void* m_responseData; - ComboboxPicker* m_picker; - - Evas_Object* createWindow(unsigned long pid); - Evas_Object* createPlatformLayout(Evas_Object * parent); - Evas_Object* createNavigationBar(Evas_Object *parent); - Evas_Object* createUserLayout(Evas_Object * parent); - Evas_Object* createConformant( - Evas_Object* window, Evas_Object* parent); - Evas_Object* createProgress(Evas_Object* parent); - void alignProgressPosition(); - void hideCombobox(); - static void picker_callback(const DPL::OptionalInt& index, void* userdata); - static int rotationCallback(appcore_rm mode, void* data); - void createTitle(const char * data); - void removeTitle(); - void createTitleButton(); - void createFloatBackButton(); - void updateTitleButton(const bool display); -}; - -class WindowLogic -{ - private: - typedef std::map WindowDataMap; - - public: - WindowLogic(); - void addWindow( - Evas_Object* window, - WindowData* windowData); - void removeWindow(Evas_Object* window); - void showComboboxInWindow( - Evas_Object* window, - int length, - char** combobox_options, - void* response_data, - WrtComboboxResponseCallback callback); - static void showComboboxCallback( - int length, - char** combobox_options, - void* resposne_data, - WrtComboboxResponseCallback callback, - void* userdata); - - private: - WindowDataMap m_openedWindows; -}; - -typedef DPL::Singleton WindowLogicSingleton; - -#endif /* WINDOW_INITIALIZE_H_ */ diff --git a/src/domain/global_context.cpp b/src/domain/global_context.cpp deleted file mode 100644 index 72bc7f0..0000000 --- a/src/domain/global_context.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file global_context.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for global context - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace GlobalContext { - -void TouchArchitecture() -{ - // Touch all WebRuntime controllers - // Remember to always add here new singletons! - GlobalLogicSingleton::Instance().GetGlobalModel(); - SecurityControllerSingleton::Instance().Touch(); - UserCallbackControllerSingleton::Instance().Touch(); - WidgetControllerSingleton::Instance().Touch(); - ApplicationLauncherSingleton::Instance().Touch(); - DPL::Popup::PopupControllerSingleton::Instance().Touch(); - PluginApiControllerSingleton::Instance().Touch(); - // Start UI process rpc server - RpcServerSingleton::Instance().Touch(); -} -} // namespace GlobalContext diff --git a/src/domain/global_context.h b/src/domain/global_context.h deleted file mode 100644 index 547ba72..0000000 --- a/src/domain/global_context.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file global_context.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for global contect - */ -#ifndef GLOBAL_CONTEXT_H -#define GLOBAL_CONTEXT_H - -namespace GlobalContext { - -void Initialize(); - -void Finalize(); - -/** - * Touch all singletons to inherit default context - */ -void TouchArchitecture(); -} // namespace GlobalContext - -#endif // GLOBAL_CONTEXT_H diff --git a/src/domain/popups_server.cpp b/src/domain/popups_server.cpp deleted file mode 100644 index e4ecdf2..0000000 --- a/src/domain/popups_server.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file popups_server.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Implementation of PopupServer, which manages Popup requests. - */ -#include "popups_server.h" - -#include - -#include -#include - -//DBUS stuff -#include "security_daemon_dbus_config.h" -#include "popup_response_service_api.h" -#include - - -namespace { -struct PopupsUserdata -{ - PopupsUserdata(AceUserdata const * const pAceUserdata, - CommunicationBox* pCommunicationBox, - const PopupsServer::IPCResponseDelegate& pResponseDelegate) - : - aceUserdata(pAceUserdata), - communicationBox(pCommunicationBox), - response(pResponseDelegate) - { - } - AceUserdata const * const aceUserdata; - std::unique_ptr communicationBox; - Prompt::PromptLabelsPtr promptLabels; - PopupsServer::IPCResponseDelegate response; -}; - - -Prompt::PromptLabels* getPromptLabelsFromPolicyEffect( - const PolicyEffect promptEffect, const std::string& resource) -{ - switch(promptEffect) { - case PolicyEffect::PROMPT_ONESHOT: { - return Prompt::PromptModel::getOneShotModel(resource); - } - case PolicyEffect::PROMPT_SESSION: { - return Prompt::PromptModel::getSessionModel(resource); - } - case PolicyEffect::PROMPT_BLANKET: { - return Prompt::PromptModel::getBlanketModel(resource); - } - default: - LogError("Policy Effect not an prompt"); - Assert(0); - return NULL; - } -} - -} //anonymous - -void PopupsServer::showACEPopup(const PolicyEffect promptType, - AceUserdata const * const userdata, - const IPCResponseDelegate& response) -{ - PopupsUserdata* popupsUserdata = - new PopupsUserdata(userdata, new CommunicationBox(), response); - - //TODO check inside ACE if request is valid - using namespace Prompt; - popupsUserdata->promptLabels.reset( - getPromptLabelsFromPolicyEffect(promptType, userdata->resource)); - popupsUserdata->communicationBox->showAsync( - static_cast( - popupsUserdata->promptLabels->getPromptType()), - popupsUserdata->promptLabels->getMainLabel(), - popupsUserdata->promptLabels->getButtonLabels(), - popupsUserdata->promptLabels->getCheckLabel(), - CommunicationBox::ResponseDelegate( - this, - &PopupsServer::acePopupAnswerCallback), - popupsUserdata); - -} - -bool PopupsServer::securityDaemonCall(int buttonAnswer, - bool /*checkState*/, - AceUserdata const * const userdata) -//TODO is it good place for communicating with Security Daemon? -// Or should it be in rpc_server? -{ - if(!m_dbusClient) - m_dbusClient.Reset(new DPL::DBus::Client( - RPC::PopupResponseServiceConfig::getObjectPath(), - RPC::PopupResponseServiceConfig::getServiceName(), - RPC::PopupResponseServiceApi::getInterfaceName())); - - bool response; - //TODO send everything: buttonAnswer, checkState, userdata - m_dbusClient->call(RPC::PopupResponseServiceApi::getValidationMethodName(), - buttonAnswer, - userdata->handle, - userdata->subject, - userdata->resource, - userdata->paramKeys, - userdata->paramValues, - &response); - - return response; -} - -void PopupsServer::acePopupAnswerCallback(int buttonAnswer, - bool checkState, - void* userdata) -{ - std::unique_ptr managedUserdata( - static_cast(userdata)); - - Prompt::PromptAnswer promptAnswer( - managedUserdata->promptLabels->getPromptType(), - buttonAnswer, checkState); - - const bool allowed = promptAnswer.isAccessAllowed(); - const Prompt::Validity validity = promptAnswer.getValidity(); - - // if user answer is DENY ONCE then don't call security daemon - if (!allowed && Prompt::Validity::ONCE == validity) - { - managedUserdata->response(allowed, - managedUserdata->aceUserdata); - return; - } - bool response = securityDaemonCall(buttonAnswer, - checkState, - managedUserdata->aceUserdata); - - if(!response) - { - LogError("Security Daemon has responded with false!"); - - //informing WebProcess that call to security daemon has failed - managedUserdata->response(false, - managedUserdata->aceUserdata); - } - else - { - managedUserdata->response(allowed, - managedUserdata->aceUserdata); - } - -} diff --git a/src/domain/popups_server.h b/src/domain/popups_server.h deleted file mode 100644 index 45efb24..0000000 --- a/src/domain/popups_server.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file popups_server.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Declaration for PopupServer, class that manages Popup requests. - */ - -#ifndef WRT_SRC_DOMAIN_POPUPS_SERVER_H_ -#define WRT_SRC_DOMAIN_POPUPS_SERVER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class PopupsServer -{ - public: - typedef DPL::FastDelegate - IPCResponseDelegate; - - void showACEPopup(const PolicyEffect promptType, - AceUserdata const * const userdata, - const IPCResponseDelegate& response); - - void acePopupAnswerCallback(int buttonAnswer, - bool checkState, - void* userdata); - - - bool securityDaemonCall(int buttonAnswer, - bool checkState, - AceUserdata const * const userdata); - private: - friend class DPL::Singleton; - - DPL::ScopedPtr m_dbusClient; -}; - -typedef DPL::Singleton PopupsServerSingleton; - -#endif /* WRT_SRC_DOMAIN_POPUPS_SERVER_H_ */ diff --git a/src/domain/powder/DESCRIPTION b/src/domain/powder/DESCRIPTION deleted file mode 100644 index 19d8d8b..0000000 --- a/src/domain/powder/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -WAC POWDER document parser and data structures diff --git a/src/domain/powder/powder_syntax.cpp b/src/domain/powder/powder_syntax.cpp deleted file mode 100644 index 407a659..0000000 --- a/src/domain/powder/powder_syntax.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file powder_syntax.cpp - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief Powder syntax implementation - */ - -#include "powder_syntax.h" -#include - diff --git a/src/domain/powder/powder_syntax.h b/src/domain/powder/powder_syntax.h deleted file mode 100644 index e50c6ad..0000000 --- a/src/domain/powder/powder_syntax.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file powder_syntax.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief Powder syntax header - */ - -#ifndef _POWDER_SYNTAX_ -#define _POWDER_SYNTAX_ - -#include -#include -#include -#include -#include -#include -#include - -#include - -//! Powder description implementation -//! -//! SP-2650 - SP-2693 -namespace Powder { -typedef std::set StringSet; - - -namespace Privacy { -//! Usages tags -enum Usage -{ - UsagePE, //! pe - UsageAD, //! ad - UsageMA //! ma -}; - -//! Source Privacy knowledge -struct Source -{ - struct Record - { - typedef std::list BoolList; - typedef std::list RangeList; - typedef std::list UsageList; - - DPL::Optional feature; - DPL::Optional website; - BoolList nt; - BoolList lo; - BoolList el; - RangeList pe; - BoolList st; - RangeList sp; - BoolList sa; - BoolList sh; - BoolList us; - BoolList uu; - UsageList pu; - UsageList su; - }; - - typedef std::list Knowledge; -}; //struct PrivacySource - -//! Return true if knowledge is valid -//TODO: not implemented -bool ValidateKnowledge(const Source::Knowledge& source); - -//! Digested privacy knowledge -struct Digested -{ - struct Record - { - //! Website where private data is stored - StringSet websites; - - //! Map contains name of tag and logical value (used or not used) - //! nt - //! lo - //! el - //! st - //! sa - //! sh - //! us - //! uu - typedef std::map BoolUsage; - BoolUsage boolUsage; - - //! Map contains name of tag and range value (0 means infinity) - //! pe - //! sp - typedef std::map RangeUsage; - RangeUsage rangeUsage; - - //! Map contains name of tag and set of usages for it - //! pu PrimaryUsage - //! su SecondaryUsage) - typedef std::set UsagesSet; - typedef std::map TypeUsage; - TypeUsage typeUsage; - }; - - //! Set of privacy records - typedef std::set Records; - - //! Map from feature name to set of privacy records for feature - typedef std::map Knowledge; -}; // struct Digested - -//! Generates user friendly knowledge representation -//TODO: not implemented -Digested::Knowledge& MakeDigestedKnowledge(const Source::Knowledge& source); -} //namespace Privacy -} //namespace Powder - -#endif // ifndef _POWDER_SYNTAX_ - diff --git a/src/domain/user_agent_profile.cpp b/src/domain/user_agent_profile.cpp deleted file mode 100644 index ea68751..0000000 --- a/src/domain/user_agent_profile.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file user_agent_profile.cpp - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief User Agent Profile diff generation & utils (WAC 2.0 WR-4210) - */ - -#include "user_agent_profile.h" -#include -#include -#include -#include - -std::string UserAgentProfile::GetProfileDiff() -{ - //We don't use profile diff currently. - static std::string result; - return result; -} diff --git a/src/domain/user_agent_profile.h b/src/domain/user_agent_profile.h deleted file mode 100644 index 422707e..0000000 --- a/src/domain/user_agent_profile.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file user_agent_profile.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief User Agent Profile diff generation & utils (WAC 2.0 WR-4210) - */ - -#ifndef USER_AGENT_PROFILE_H -#define USER_AGENT_PROFILE_H - -#include -namespace UserAgentProfile { -//Need to use std::string here for interoperability with openssl and ewk -std::string GetProfileDiff(); -} - -#endif /* USER_AGENT_PROFILE_H */ - diff --git a/src/domain/user_callback_controller.cpp b/src/domain/user_callback_controller.cpp deleted file mode 100644 index 5e7f064..0000000 --- a/src/domain/user_callback_controller.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file user_callback_controller.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for user callback controller - */ -#include -#include -IMPLEMENT_SINGLETON(UserCallbackController) - -UserCallbackController::UserCallbackController() -{ -} - -UserCallbackController::~UserCallbackController() -{ -} - -void UserCallbackController::OnEventReceived( - const UserCallbackControllerEvents::EmitUserCallbackEvent &event) -{ - UserCallbackCall *userCallback = event.GetArg0(); - m_userCallbackLogic.EmitUserCallback(userCallback); -} diff --git a/src/domain/user_callback_controller.h b/src/domain/user_callback_controller.h deleted file mode 100644 index 8c6c159..0000000 --- a/src/domain/user_callback_controller.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file user_callback_controller.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for user callback controller - */ -#ifndef USER_CALLBACK_CONTROLLER_H -#define USER_CALLBACK_CONTROLLER_H - -#include -#include -#include -#include -#include -#include - -namespace UserCallbackControllerEvents { -/** - * Send guarded user callback - * - * @brief This event send asynchronous user callback call event - * - * After user callback is emmited, user callback will be deleted by logic. - */ -DECLARE_GENERIC_EVENT_1(EmitUserCallbackEvent, UserCallbackCall *) // (userCallback) -} // namespace UserCallbackControllerEvents - -class UserCallbackController : - public DPL::Event::Controller::Type> -{ - public: - virtual ~UserCallbackController(); - - protected: - virtual void OnEventReceived( - const UserCallbackControllerEvents::EmitUserCallbackEvent &event); - - private: - UserCallbackLogic m_userCallbackLogic; - - UserCallbackController(); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton UserCallbackControllerSingleton; - -inline void POST_USER_CALLBACK(UserCallbackCall *call) -{ - CONTROLLER_POST_EVENT(UserCallbackController, - UserCallbackControllerEvents::EmitUserCallbackEvent( - call)); -} - -#endif // USER_CALLBACK_CONTROLLER_H diff --git a/src/domain/user_callback_logic.cpp b/src/domain/user_callback_logic.cpp deleted file mode 100644 index 7a5efe1..0000000 --- a/src/domain/user_callback_logic.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file user_callback_logic.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for user callback logic - */ -#include -#include -#include - -UserCallbackLogic::UserCallbackLogic() -{ -} - -UserCallbackLogic::~UserCallbackLogic() -{ -} - -void UserCallbackLogic::EmitUserCallback(const UserCallbackCall *callback) -{ - LogDebug("Calling user callback..."); - - // Guard user callback call - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - callback->Exec(); - } - UNHANDLED_EXCEPTION_HANDLER_END - - // Delete abstract usercallback - delete callback; - - LogDebug("User callback called."); -} diff --git a/src/domain/user_callback_logic.h b/src/domain/user_callback_logic.h deleted file mode 100644 index 7154064..0000000 --- a/src/domain/user_callback_logic.h +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file user_callback_logic.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for user callback logic - */ -#ifndef USER_CALLBACK_LOGIC_H -#define USER_CALLBACK_LOGIC_H - -#include -#include - -class UserCallbackCall -{ - public: - virtual ~UserCallbackCall() - { - } - virtual void Exec() const = 0; -}; - -template -class GenericUserCallbackCall0 : - public UserCallbackCall -{ - private: - Callback m_callback; - - public: - GenericUserCallbackCall0(Callback callback) : - m_callback(callback) - { - } - - virtual void Exec() const - { - Assert(m_callback != NULL); - m_callback(); - } -}; - -template -class GenericUserCallbackCall1 : - public UserCallbackCall -{ - private: - Callback m_callback; - Arg0 m_arg0; - - public: - GenericUserCallbackCall1(Callback callback, - Arg0 arg0) : - m_callback(callback), - m_arg0(arg0) - { - } - - virtual void Exec() const - { - Assert(m_callback != NULL); - m_callback(m_arg0); - } -}; - -template -class GenericUserCallbackCall2 : - public UserCallbackCall -{ - private: - Callback m_callback; - Arg0 m_arg0; - Arg1 m_arg1; - - public: - GenericUserCallbackCall2(Callback callback, - Arg0 arg0, - Arg1 arg1) : - m_callback(callback), - m_arg0(arg0), - m_arg1(arg1) - { - } - - virtual void Exec() const - { - Assert(m_callback != NULL); - m_callback(m_arg0, m_arg1); - } -}; - -template -class GenericUserCallbackCall3 : - public UserCallbackCall -{ - private: - Callback m_callback; - Arg0 m_arg0; - Arg1 m_arg1; - Arg2 m_arg2; - - public: - GenericUserCallbackCall3(Callback callback, - Arg0 arg0, - Arg1 arg1, - Arg2 arg2) : - m_callback(callback), - m_arg0(arg0), - m_arg1(arg1), - m_arg2(arg2) - { - } - - virtual void Exec() const - { - Assert(m_callback != NULL); - m_callback(m_arg0, m_arg1, m_arg2); - } -}; - -template -class GenericUserCallbackCall4 : - public UserCallbackCall -{ - private: - Callback m_callback; - Arg0 m_arg0; - Arg1 m_arg1; - Arg2 m_arg2; - Arg3 m_arg3; - - public: - GenericUserCallbackCall4(Callback callback, - Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3) : - m_callback(callback), - m_arg0(arg0), - m_arg1(arg1), - m_arg2(arg2), - m_arg3(arg3) - { - } - - virtual void Exec() const - { - Assert(m_callback != NULL); - m_callback(m_arg0, m_arg1, m_arg2, m_arg3); - } -}; - -template -class GenericUserCallbackCall5 : - public UserCallbackCall -{ - private: - Callback m_callback; - Arg0 m_arg0; - Arg1 m_arg1; - Arg2 m_arg2; - Arg3 m_arg3; - Arg4 m_arg4; - - public: - GenericUserCallbackCall5(Callback callback, - Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3, - Arg4 arg4) : - m_callback(callback), - m_arg0(arg0), - m_arg1(arg1), - m_arg2(arg2), - m_arg3(arg3), - m_arg4(arg4) - { - } - - virtual void Exec() const - { - Assert(m_callback != NULL); - m_callback(m_arg0, m_arg1, m_arg2, m_arg3, m_arg4); - } -}; - -/** - * @brief User callback logic - */ -class UserCallbackLogic -{ - public: - virtual ~UserCallbackLogic(); - - /** - * This method send user callback from separate context - */ - void EmitUserCallback(const UserCallbackCall *callback); - - private: - UserCallbackLogic(); - - friend class UserCallbackController; -}; - -#endif // WIDGET_LOGIC_H diff --git a/src/domain/widget_controller.cpp b/src/domain/widget_controller.cpp deleted file mode 100644 index 6559b79..0000000 --- a/src/domain/widget_controller.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_controller.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for widget controller - */ -#include -#include -#include -#include -#include -#include - -IMPLEMENT_SINGLETON(WidgetController) - -WidgetController::WidgetController() -{ -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::InitializeEvent & event) -{ - InitStatusStruct statusStruct = event.GetArg0(); - m_widgetLogic.initialize(statusStruct); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::DeinitializeEvent & /*event*/) -{ - m_widgetLogic.deinitialize(); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::LaunchWidgetIdEvent &event) -{ - WidgetHandle widgetHandle = event.GetArg0(); - WidgetLaunchStruct launchStruct = event.GetArg1(); - - LogDebug("Launching id-base widget..."); - - - m_widgetLogic.createWidgetModel(widgetHandle); - - // Find widget model - WidgetModel *widgetModel = m_widgetLogic.getWidgetModel(); - - if (widgetModel == NULL) { - LogError("Unknown widget id. Cannot find widget model."); - - LaunchFinishedCallbackCall* callback = new LaunchFinishedCallbackCall( - launchStruct.launchFinishedCallback, - NULL, - widgetHandle, - CommonError::HandleNotFound, - _("IDS_BR_BODY_NO_RESULTS_FOUND"), - launchStruct.userParam); - - POST_USER_CALLBACK(callback); - - return; - } - - // Launch widget model - m_widgetLogic.launchWidget(launchStruct); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::KillWidgetIdEvent &event) -{ - WidgetHandle widgetHandle = event.GetArg0(); - OperationStatusStruct operation = event.GetArg1(); - - LogDebug("Killing id-base widget..."); - - // Find widget model - WidgetModel *widgetModel = m_widgetLogic.getWidgetModel(); - - if (widgetModel == NULL) { - LogError("Unknown widget id. Cannot find widget model."); - - POST_USER_CALLBACK(new OperationStatusCallbackCall( - operation.operationStatusCallback, - widgetHandle, - CommonError::HandleNotFound, - operation.userParam)); - - return; - } - - // Kill widget model - m_widgetLogic.killWidget(operation); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::SuspendWidgetEvent &event) -{ - LogDebug("Pausing widget"); - WidgetHandle widgetHandle = event.GetArg0(); - OperationStatusStruct operation = event.GetArg1(); - - // Find widget model - WidgetModel *widgetModel = m_widgetLogic.getWidgetModel(); - - if (widgetModel == NULL) { - LogError("Unknown widget id. Cannot find widget model."); - - POST_USER_CALLBACK(new OperationStatusCallbackCall( - operation.operationStatusCallback, - widgetHandle, - CommonError::HandleNotFound, - operation.userParam)); - - return; - } - - // Suspend widget model - m_widgetLogic.suspendWidget(operation); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::ResumeWidgetEvent &event) -{ - LogDebug("Resuming widget"); - WidgetHandle widgetHandle = event.GetArg0(); - OperationStatusStruct operation = event.GetArg1(); - - // Find widget model - WidgetModel *widgetModel = m_widgetLogic.getWidgetModel(); - - if (widgetModel == NULL) { - LogError("Unknown widget id. Cannot find widget model."); - - POST_USER_CALLBACK(new OperationStatusCallbackCall( - operation.operationStatusCallback, - widgetHandle, - CommonError::HandleNotFound, - operation.userParam)); - - return; - } - - // Resume widget model - m_widgetLogic.resumeWidget(operation); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::ResetWidgetEvent &event) -{ - std::string appService = event.GetArg1(); - - // Find widget model - WidgetModel *widgetModel = m_widgetLogic.getWidgetModel(); - - if (widgetModel == NULL) { - LogError("Cannot get widget model."); - return; - } - - // Launch widget model - m_widgetLogic.resetWidget(appService); -} - -void WidgetController::OnEventReceived( - const WidgetControllerEvents::getWidgetModelEvent &event) -{ - WidgetModel **ret = event.GetArg0(); - - *ret = m_widgetLogic.getWidgetModel(); -} diff --git a/src/domain/widget_controller.h b/src/domain/widget_controller.h deleted file mode 100644 index f647335..0000000 --- a/src/domain/widget_controller.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_controller.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for widget controller - */ -#ifndef WIDGET_CONTROLLER_H -#define WIDGET_CONTROLLER_H - -#include -#include -#include -#include -#include -#include -#include - -class WidgetModel; - -namespace WidgetControllerEvents { - -/** - * Initialize event - * - * @brief This event causes initialization of view logic. - */ -DECLARE_GENERIC_EVENT_1(InitializeEvent, InitStatusStruct) -/** - * Denitialize WidgetLogic event - * - * @brief This event causes deinitialization of widget logic. It - * includes deinitialization of DB and/or saving all widgets present logic. - */ -DECLARE_GENERIC_EVENT_0(DeinitializeEvent) - -/** - * Launch widget event - * - * @brief This event causes launch of widget. Before launch a confirmation window - * may be optionally displayed as ACE needs it. This is wigdet id based version. - */ -DECLARE_GENERIC_EVENT_2(LaunchWidgetIdEvent, WidgetHandle, WidgetLaunchStruct) // (widgetHandle, callback) - -/** - * Kill widget event - * - * @brief This event causes kill of widget. This is widget Id based version. - **/ -DECLARE_GENERIC_EVENT_2(KillWidgetIdEvent, WidgetHandle, OperationStatusStruct) // (widgetHandle) - -/** - * Suspend widget - * - * @brief This event causes widget to suspend java script - **/ -DECLARE_GENERIC_EVENT_2(SuspendWidgetEvent, WidgetHandle, OperationStatusStruct) // (widgetHandle) - -/** - * Resume widget - * - * @brief This event causes widget to resume java script - **/ -DECLARE_GENERIC_EVENT_2(ResumeWidgetEvent, WidgetHandle, OperationStatusStruct) // (widgetHandle) - -/** - * Reset widget - * - * @brief This event send bundle data - **/ -DECLARE_GENERIC_EVENT_2(ResetWidgetEvent, - WidgetHandle, - std::string) // (widgetHandle) - - -/** - * check widget model event - * - * @brief This event causes checking if WidgetModel of specific WidgetHandle exists in wrt - **/ -DECLARE_GENERIC_EVENT_1(getWidgetModelEvent, - WidgetModel * *) - -} // namespace WidgetControllerEvents - -typedef DPL::TypeListDecl - < - WidgetControllerEvents::InitializeEvent, - WidgetControllerEvents::DeinitializeEvent, - WidgetControllerEvents::LaunchWidgetIdEvent, - WidgetControllerEvents::KillWidgetIdEvent, - WidgetControllerEvents::SuspendWidgetEvent, - WidgetControllerEvents::ResumeWidgetEvent, - WidgetControllerEvents::ResetWidgetEvent, - WidgetControllerEvents::getWidgetModelEvent>::Type - -WidgetControllerEventsTypeList; - -// TODO rename it to Core::Controller or sth -class WidgetController : - public DPL::Event::Controller -{ - protected: - virtual void OnEventReceived( - const WidgetControllerEvents::InitializeEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::DeinitializeEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::LaunchWidgetIdEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::KillWidgetIdEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::SuspendWidgetEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::ResumeWidgetEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::ResetWidgetEvent &event); - virtual void OnEventReceived( - const WidgetControllerEvents::getWidgetModelEvent &event); - - private: - // Embedded logic - WidgetLogic m_widgetLogic; - - WidgetController(); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton WidgetControllerSingleton; - -#endif // WIDGET_CONTROLLER_H diff --git a/src/domain/widget_launch_struct.h b/src/domain/widget_launch_struct.h deleted file mode 100644 index 1721e13..0000000 --- a/src/domain/widget_launch_struct.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_launch_struct.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for widget launch struct - */ -#ifndef WIDGET_LAUNCH_STRUCT_H -#define WIDGET_LAUNCH_STRUCT_H - -#include -#include -#include -#include -#include -/** - * @brief User parameters - */ -typedef void *UserParam; - -/** - * @brief User parameters passed to view - * - * View implementation dependent. - * Pid is passed here - */ -typedef void *LaunchContext; - -/** - * @brief User parameters passed from view - * - * View implementation dependent. - */ -typedef void *ResultContext; - -/** - * @brief Lauch has finished callback - * - * Occurs when view has launched model view, and resulting context is available. - * Note: Do not make any assumption wich thread this callback is called from. - */ -typedef void (*LaunchFinishedCallback)(ResultContext context, - WidgetHandle widgetHandle, - CommonError::Type result, - const std::string& errorMsg, - UserParam userParam); - -typedef void (*OperationStatusCallback)(WidgetHandle widgetHandle, - CommonError::Type result, - UserParam userParam); - -typedef void (*InitStatusCallback)(CommonError::Type status, UserParam data); - -/** - * @brief Widget launch structure - * - * Structure describing parameters passed to widget model view. - * Contains view implementation specific handle and user parameter - * passed to LaunchFinishedCallback. - */ -struct WidgetLaunchStruct -{ - LaunchContext launchContext; - LaunchFinishedCallback launchFinishedCallback; - UserParam userParam; - std::string widgetArg; //TODO make it Optional - - WidgetLaunchStruct() : - launchContext(NULL), - launchFinishedCallback(NULL), - userParam(NULL) - { - } - - WidgetLaunchStruct(LaunchContext lc, - LaunchFinishedCallback lfc, - UserParam us, - const std::string &arg) : - launchContext(lc), - launchFinishedCallback(lfc), - userParam(us), - widgetArg(arg) - { - } -}; - -typedef GenericUserCallbackCall5 LaunchFinishedCallbackCall; - -/** - * @brief Operation status structure - */ -struct OperationStatusStruct -{ - OperationStatusCallback operationStatusCallback; - UserParam userParam; - - OperationStatusStruct() : - operationStatusCallback(NULL), - userParam(NULL) - { - } - - OperationStatusStruct(OperationStatusCallback cb, - UserParam userParam) : - operationStatusCallback(cb), - userParam(userParam) - { - } -}; - -typedef GenericUserCallbackCall3 OperationStatusCallbackCall; - -/** - * @brief Initialization status structure - */ -struct InitStatusStruct -{ - InitStatusCallback initStatusCallback; - UserParam userParam; - - InitStatusStruct() : - initStatusCallback(NULL), - userParam(NULL) - { - } - - InitStatusStruct(InitStatusCallback cb, - UserParam userParam) : - initStatusCallback(cb), - userParam(userParam) - { - } -}; - -typedef GenericUserCallbackCall2 - InitStatusCallbackCall; - -#endif // WIDGET_LAUNCH_STRUCT_H diff --git a/src/domain/widget_localize_model.cpp b/src/domain/widget_localize_model.cpp deleted file mode 100644 index 301ffed..0000000 --- a/src/domain/widget_localize_model.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_localize_model.cpp - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief Widget localize localizes WidgetModel from system configuration - */ - -#include - -#include -#include - -#include -#include -#include -#include - -namespace Domain { - -void localizeWidgetModel(const std::shared_ptr& model) -{ - using namespace WrtDB; - - LogDebug("Updating model with localized info ..."); - LanguageTagsList tags = LocalizationUtils::GetUserAgentLanguageTags(); - DPL::OptionalString defaultlocale = model->defaultlocale.Get(); - LogDebug("Default locale for widget: " << defaultlocale); - if (!!defaultlocale && - std::find(tags.begin(), tags.end(), *defaultlocale) == tags.end()) - { - if (tags.size() < 2) { - tags.push_front(*defaultlocale); - } else { - LanguageTagsList::iterator placeToInsert = tags.end(); - --placeToInsert; - if (*placeToInsert != L"") { ++placeToInsert; } - tags.insert(placeToInsert, *defaultlocale); - } - } - LogDebug("Setting runtime widget locale:"); - FOREACH(it, tags) { - LogDebug("Locale: " << *it); - } - model->LanguageTags.Set(tags); - - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(model->Handle.Get()); - - model->Name.Set(localizedInfo.name); - model->ShortName.Set(localizedInfo.shortName); - model->Description.Set(localizedInfo.description); - model->License.Set(localizedInfo.license); - model->LicenseHref.Set(localizedInfo.licenseHref); - model->StartURL.Set(W3CFileLocalization::getStartFile(model->Handle.Get())); - model->Icon.Set(W3CFileLocalization::getIcon(model->Handle.Get())); - LogDebug("... finished"); - OptionalWidgetStartFileInfo info = - W3CFileLocalization::getStartFileInfo( - model->Handle.Get(), - model->LanguageTags.Get()); - model->StartFileInfo.Set(info); -} - -} //Namespace Domain diff --git a/src/domain/widget_localize_model.h b/src/domain/widget_localize_model.h deleted file mode 100644 index 8f13582..0000000 --- a/src/domain/widget_localize_model.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_localize_model.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief Widget localization localizes WidgetModel from current settings - */ -#ifndef WRT_ENGINE_SRC_DOMAIN_WIDGET_LOCALIZE_MODEL_H_ -#define WRT_ENGINE_SRC_DOMAIN_WIDGET_LOCALIZE_MODEL_H_ - -#include - -#include - -namespace Domain { - -/** - * @brief Localize widget model - * - * Function is using localization utils and W3C file localization - * to process current language settingto enhance widget model with - * localized properties. - * - * @param[in] model - */ -void localizeWidgetModel(const std::shared_ptr& model); - -} //Namespace Domain - -#endif // ifndef WRT_ENGINE_SRC_DOMAIN_WIDGET_LOCALIZE_MODEL_H_ - diff --git a/src/domain/widget_logic.cpp b/src/domain/widget_logic.cpp deleted file mode 100644 index d65276f..0000000 --- a/src/domain/widget_logic.cpp +++ /dev/null @@ -1,627 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_logic.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for widget logic - */ -#include "widget_logic.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef WRT_SMACK_ENABLED -#include -#endif - -#include "ocsp_server_api.h" -#include "security_daemon_dbus_config.h" -#include "widget_deserialize_model.h" -#include "widget_localize_model.h" - -namespace { //Anonymous - -class Popups : DPL::Popup::PopupControllerUser -{ - public: - void displayCertificateRevokedPopup() - { - using namespace DPL::Popup; - CtrlPopupPtr popup = - PopupControllerSingleton::Instance().CreatePopup(); - popup->SetTitle(_("IDS_IM_POP_WIDGET_REVOKED_TITLE")); - popup->Append(new PopupObject::Label( - _("IDS_IM_POP_WIDGET_REVOKED_ERROR"))); - popup->Append(new PopupObject::Button(_("IDS_IM_BUTTON_OK"), 0)); - ListenForAnswer(popup); - - PopupAnswerCallback cb = - MakeAnswerCallback(this, &Popups::dummyCallback); - - ShowPopupEvent event(popup, cb, DPL::Event::UNDEFINED_LOOP_HANDLE); - CONTROLLER_POST_EVENT(PopupController, event); - } - - void dummyCallback(const DPL::Popup::AnswerCallbackData& /*data*/) - { - } -}; - -std::string cutOffFileName(const std::string& path) -{ - size_t found = path.find_last_of("/"); - if (found == std::string::npos) { - return path; - } else { - return path.substr(0, found); - } -} - -bool isDir(const std::string& path) -{ - struct stat st; - if (0 == stat(path.c_str(), &st) && S_ISDIR(st.st_mode)) { - return true; - } - LogError("Cannot access directory [ " << path << " ]"); - return false; -} - -bool checkPaths() -{ - using namespace WrtDB; - using namespace WrtDB::GlobalConfig; - - bool if_ok = true; - if_ok &= (isDir(cutOffFileName(GetWrtDatabaseFilePath()))); - if (!if_ok) { - LogError("Path <" << GetWrtDatabaseFilePath() << "> does not exist."); - } - - if_ok &= (isDir(GetDevicePluginPath())); - if (!if_ok) { - LogError("Path <" << GetDevicePluginPath() << "> does not exist."); - } - - if_ok &= (isDir(GetFactoryInstalledWidgetPath())); - if (!if_ok) { - LogError("Path <" << GetFactoryInstalledWidgetPath() << - "> does not exist."); - } - - if_ok &= (isDir(GetUserInstalledWidgetPath())); - if (!if_ok) { - LogError("Path <" << GetUserInstalledWidgetPath() << - "> does not exist."); - } - return if_ok; -} - -Popups popupsDisplayer; - -const std::string ACCESS_DENIED = _("IDS_BR_POP_ACCESS_DENIED"); -const std::string ALREADY_RUNNING = _("IDS_BR_POP_ALREADY_RUNNING"); -const std::string INVALID_LOCALE = _("IDS_IM_POP_INVALID_WIDGET_LOCALE"); -const std::string STILL_AUTHORIZING = _("IDS_IM_POP_AUTHORIZING_ING_ATNT"); - -} // namespace anonymous - -using namespace CommonError; - -WidgetLogic::WidgetLogic() -{ -} - -WidgetLogic::~WidgetLogic() -{ - // Must be deinitialized prior to exit - Assert(!m_widgetModelPtr); -} - -void WidgetLogic::initialize(InitStatusStruct statusStruct) -{ - Try { - // Check paths - if (!checkPaths()) { - initFinished(statusStruct, NoPath); - return; - } - - Assert(!m_widgetModelPtr && - "WidgetModel should not be present at this stage"); - - // connect databases - ADD_PROFILING_POINT("attach databases", - "start"); - - MainThreadSingleton::Instance().AttachDatabases(); - - ADD_PROFILING_POINT("attach databases", - "stop"); - - ADD_PROFILING_POINT("checking_wrt_table_version", "start"); - //checking for correct DB version - -// if (!WrtDB::WrtDatabase::CheckTableExist(DB_CHECKSUM_STR)) { -// LogError("WRONG VERSION OF WRT DATABASE"); -// initFinished(statusStruct, DatabaseFailure); -// return; -// } - LogWarning("Database check version is not implemented!"); - ADD_PROFILING_POINT("checking_wrt_table_version", "stop"); - - ADD_PROFILING_POINT("xml_parser_init", "start"); - xmlInitParser(); - ADD_PROFILING_POINT("xml_parser_init", "stop"); - - // Initialize popup manager - ADD_PROFILING_POINT("popup_manager_init", "start"); - DPL::Popup::PopupManagerSingleton::Instance().Initialize( - DPL::Popup::PopupRendererPtr(new DPL::Popup::PopupRenderer)); - ADD_PROFILING_POINT("popup_manager_init", "stop"); - - // Initialize Language Subtag registry - ADD_PROFILING_POINT("language_rst_init", "start"); - LocalizationUtils::Initialize(); - ADD_PROFILING_POINT("language_rst_init", "stop"); - - // Initialize webkit - ewk_init(); - - // Initialize things in ViewLogic - ADD_PROFILING_POINT("view_logic_init", "start"); - ViewLogicSingleton::Instance().initialize(); - ADD_PROFILING_POINT("view_logic_init", "stop"); - - // Initialize ValidationCore - ValidationCore::VCoreInit( - std::string(WrtDB::GlobalConfig::GetFingerprintListFile()), - std::string(WrtDB::GlobalConfig::GetFingerprintListSchema()), - std::string(WrtDB::GlobalConfig::GetVCoreDatabaseFilePath())); - - // Security Logic initialization - ADD_PROFILING_POINT("security_controller_init", "start"); - CONTROLLER_POST_SYNC_EVENT( - SecurityController, - SecurityControllerEvents::InitializeSyncEvent()); - ADD_PROFILING_POINT("security_controller_init", "stop"); - -#ifdef USE_DNET - // Register Network Client - ADD_PROFILING_POINT("net_init", "start"); - NetSingleton::Instance().Register(); - ADD_PROFILING_POINT("net_init", "stop"); -#endif - - ADD_PROFILING_POINT("wrt_init", - "stop", - "starting WebRuntime Initialization"); - - LogInfo("[WRT-API] WRT INITIALIZATION CALLBACK"); - initFinished(statusStruct, WrtSuccess); - } - catch (const DPL::Exception& ex) - { - LogError("Internal Error during Init:"); - DPL::Exception::DisplayKnownException(ex); - initFinished(statusStruct, Unknown); - } -} - -void WidgetLogic::deinitialize() -{ - // Terminate things in ViewLogic - ViewLogicSingleton::Instance().terminate(); - - if (m_widgetModelPtr) { - destroyWidgetModel(); - } - - // Deinitialize popup manager - DPL::Popup::PopupManagerSingleton::Instance().Deinitialize(); - - // Deinitialize Security Logic - CONTROLLER_POST_SYNC_EVENT( - SecurityController, - SecurityControllerEvents:: - TerminateSyncEvent()); - -#ifdef USE_DNET - // Deregister Network Client - NetSingleton::Instance().Deregister(); -#endif - - MainThreadSingleton::Instance().DetachDatabases(); - - LogInfo("Cleanup libxml2 global values."); - xmlCleanupParser(); - - // deinitialize webkit - ewk_shutdown(); - - // Perform libraries unload - LogInfo("Unloading plugins"); - PluginLogicSingleton::Instance().performLibrariesUnload(); -} - -void WidgetLogic::launchWidget(const WidgetLaunchStruct &originalLaunchStruct) -{ - Assert(m_widgetModelPtr); - WidgetModel* widgetModel = m_widgetModelPtr.get(); - -#ifdef WRT_SMACK_ENABLED - // TODO - this should be in the very first line of the process's main() - // for security reasons; but for now it is easier to place here because - // here the pkg name is already known; we don't struggle to move it - // near the start of main() because we don't know yet if this will - // stay in this process at all: it may be moved to AUL altogether - set_process_config(DPL::ToUTF8String(widgetModel->PkgName.Get()).c_str()); -#endif - - // WAC Waikiki Beta Release Core Specification: Widget Runtime - // 10 Dec 2010 - // - // WR-4710 The WRT MUST enable debug functions only for WAC test widgets - // i.e. the functions must not be usable for normal WAC widgets, even when - // a WAC test widget is executing. - ADD_PROFILING_POINT("DeveloperModeCheck", "start"); - - if (!checkWACTestCertififedWidget()) - { - launchFailed(originalLaunchStruct, AccessDenied, ACCESS_DENIED); - return; - } - ADD_PROFILING_POINT("DeveloperModeCheck", "stop"); - - ADD_PROFILING_POINT("ChildProtectedCheck", "start"); - if (ChildProtection::LogicSingleton::Instance().IsParentalModeActive()) { - ChildProtection::Logic& agent = - ChildProtection::LogicSingleton::Instance(); - - if (!agent.IsWidgetAllowed(widgetModel)) { - // Unregister widgetModel - agent.Unregister(widgetModel); - - launchFailed(originalLaunchStruct, AccessDenied, ACCESS_DENIED); - return; - } - } - ADD_PROFILING_POINT("ChildProtectedCheck", "stop"); - - WidgetLaunchStruct launchStruct = originalLaunchStruct; - - LogDebug("Launching widget..."); - - if (widgetModel->State.Get() == WidgetState_Running) { - LogWarning("Widget already running"); - - launchFailed(launchStruct, AlreadyRunning, ALREADY_RUNNING); - return; - } - - if (widgetModel->StartURL.Get().IsNull()) { - LogWarning("Widget is invalid in currently selected locales"); - - launchFailed(launchStruct, InvalidLanguage, INVALID_LOCALE); - return; - } - - if (widgetModel->State.Get() == WidgetState_Authorizing) { - LogWarning("Widget already authorizing"); - - launchFailed(launchStruct, StillAuthorizing, STILL_AUTHORIZING); - return; - } - - // Widget is not running, localized data can be updated - Domain::localizeWidgetModel(m_widgetModelPtr); - widgetModel->RunningName.Set(widgetModel->Name.Get()); - widgetModel->RunningIcon.Set(widgetModel->Icon.Get()); - widgetModel->RunningStartURL.Set(widgetModel->StartURL.Get()); - widgetModel->RunningShortName.Set(widgetModel->ShortName.Get()); - widgetModel->RunningDescription.Set(widgetModel->Description.Get()); - widgetModel->RunningLicense.Set(widgetModel->License.Get()); - widgetModel->RunningLicenseHref.Set(widgetModel->LicenseHref.Get()); - widgetModel->RunningStartFileInfo.Set( - widgetModel->StartFileInfo.Get()); - - - // Change state to authorizing - widgetModel->State.Set(WidgetState_Authorizing); - - LogInfo("Widget launch accepted. Entering running state"); - - // Inform view controller about new widget model displaying - ADD_PROFILING_POINT("OCSPCheck", "start"); - - ValidationCore::WidgetVerificationStatus response; - { - DPL::DBus::Client dbusClient(RPC::SecurityDaemonConfig::OBJECT_PATH, - RPC::SecurityDaemonConfig::SERVICE_NAME, - RPC::OcspServerApi::INTERFACE_NAME); - int intResponse; - dbusClient.call(RPC::OcspServerApi::CHECK_ACCESS_METHOD, - widgetModel->Handle.Get(), - &intResponse); - response = static_cast( - intResponse); - } - ADD_PROFILING_POINT("OCSPCheck", "stop"); - - if (response == ValidationCore::WIDGET_VERIFICATION_STATUS_GOOD) { - // Enter running state - widgetModel->State.Set(WidgetState_Running); - - // TODO introduce parallel UI preparation. - ViewLogicSingleton::Instance().prepareView(widgetModel, - originalLaunchStruct); - ViewLogicSingleton::Instance().showWidget(widgetModel, launchStruct); - } else { - launchFailed(launchStruct, CertificateRevoked, ACCESS_DENIED); - if (GlobalSettings::GetPopupsEnabledFlag()) { - popupsDisplayer.displayCertificateRevokedPopup(); - } - } -} - -void WidgetLogic::killWidget(const OperationStatusStruct &operationStatus) -{ - Assert(m_widgetModelPtr); - WidgetModel* widgetModel = m_widgetModelPtr.get(); - - LogDebug("Killing widget..."); - - if (widgetModel->State.Get() == WidgetState_Stopped) { - LogWarning("Widget already stopped"); - - // Inform listener - operationFinished(operationStatus, AlreadyStopped); - return; - } - - if (widgetModel->State.Get() == WidgetState_Authorizing) { - Assert(false && "It is not possible in new architecture"); - } - - hideWidgetSend(); - - // Stop widget model - widgetModel->State.Set(WidgetState_Stopped); - - LogDebug("Widget killed"); - - operationFinished(operationStatus, WrtSuccess); -} - -void WidgetLogic::suspendWidget(const OperationStatusStruct &operationStruct) -{ - Assert(m_widgetModelPtr); - WidgetModel* widgetModel = m_widgetModelPtr.get(); - - LogDebug("Pausing widget"); - - if (widgetModel->State.Get() != WidgetState_Running) { - LogWarning("Widget is not running to be suspended"); - - // Inform listener - operationFinished(operationStruct, AlreadyStopped); - return; - } - - ViewLogicSingleton::Instance().suspendWidget(widgetModel,operationStruct); - - widgetModel->State.Set(WidgetState_Suspended); -} - -void WidgetLogic::resumeWidget(const OperationStatusStruct &operationStruct) -{ - Assert(m_widgetModelPtr); - WidgetModel* widgetModel = m_widgetModelPtr.get(); - - LogDebug("Pausing widget"); - - if (widgetModel->State.Get() != WidgetState_Suspended) { - LogWarning("Widget is not suspended to be resumed"); - - // Inform listener - operationFinished(operationStruct, AlreadyRunning); - return; - } - - ViewLogicSingleton::Instance().resumeWidget(widgetModel, operationStruct); - - widgetModel->State.Set(WidgetState_Running); -} - -void WidgetLogic::resetWidget(const std::string& appService) -{ - LogInfo("resetWidget"); - Assert(m_widgetModelPtr); - WidgetModel* widgetModel = m_widgetModelPtr.get(); - - if (widgetModel->State.Get() != WidgetState_Suspended) { - LogError("Widget is suspended to be reset"); - } - ViewLogicSingleton::Instance().widgetWebkitReset(widgetModel,appService); -} - - -WidgetModel *WidgetLogic::getWidgetModel() -{ - return m_widgetModelPtr.get(); -} - -void WidgetLogic::createWidgetModel(WidgetHandle widgetHandle) -{ - Assert(!m_widgetModelPtr); - - if (WrtDB::WidgetDAO::isWidgetInstalled(widgetHandle)) - { - m_widgetModelPtr = Domain::deserializeWidgetModel(widgetHandle); - WidgetModel* model = m_widgetModelPtr.get(); - - // Read DAO data - WrtDB::WidgetDAO dao(widgetHandle); - - //Store ChildProtection data - // - if (ChildProtection::LogicSingleton::Instance().IsParentalModeActive()) { - ChildProtection::Logic& agent = - ChildProtection::LogicSingleton::Instance(); - agent.Register(model, dao.getChildProtection()); - agent.SetPowderDescription(model, dao.getPowderDescription()); - agent.SetPowderRules(model, WrtDB::GlobalDAO::GetPowderRules()); - agent.SetBlackList(model, WrtDB::GlobalDAO::GetAdultBlackList()); - } - - // Set localized data - Domain::localizeWidgetModel(m_widgetModelPtr); - - WrtDB::WidgetAccessInfoList widgetAccessInfoList; - // widgetAccessInfoList is output parameter - dao.getWidgetAccessInfo(widgetAccessInfoList); - model->AccessList.Set(widgetAccessInfoList); - - // Widget application service information data - WidgetApplicationServiceList widgetApplicationServiceList; - // widgetApplicationServiceList is output parameter - dao.getAppServiceList(widgetApplicationServiceList); - model->AppServiceList.Set(widgetApplicationServiceList); - - // Set Widget Settings - WidgetSettings widgetSettings; - dao.getWidgetSettings(widgetSettings); - model->SettingList.Set(widgetSettings); - } -} - -void WidgetLogic::destroyWidgetModel() -{ - Assert(m_widgetModelPtr); - - WidgetModel *widgetModel = m_widgetModelPtr.get(); - - Assert(widgetModel->State.Get() == WidgetState_Stopped || - widgetModel->State.Get() == WidgetState_Uninstalling); - - //Clear ChildProtection data - if (ChildProtection::LogicSingleton::Instance().IsParentalModeActive()) { - ChildProtection::LogicSingleton::Instance().Unregister(widgetModel); - } - - LogInfo("Widget Model is destroyed!"); - - // Delete model - m_widgetModelPtr.reset(); -} - -void WidgetLogic::hideWidgetSend() -{ - Assert(m_widgetModelPtr); - /* TODO - * Widget could create nested loop. - * We should close this nested loop before killing widget. - */ - WidgetModel *widgetModel = m_widgetModelPtr.get(); - - ViewLogicSingleton::Instance().hideWidget(widgetModel); - - widgetModel->State.Set(WidgetState_Stopped); -} - - -bool WidgetLogic::checkWACTestCertififedWidget() -{ - Assert(!!m_widgetModelPtr); - WidgetModel *widgetModel = m_widgetModelPtr.get(); - // WAC test widget - // A widget signed with a WAC-issued test certificate as described in - // Developer Mode. - - bool developerWidget = widgetModel->IsTestWidget.Get(); - bool developerMode = - GlobalLogicSingleton::Instance().GetGlobalModel()->DeveloperMode.Get(); - - LogDebug("Is WAC test widget: " << developerWidget); - LogDebug("Is developer Mode: " << developerMode); - - if (developerWidget) { - if(!developerMode) - { - LogError("WAC test certified developer widget is needed for developer mode"); - return false; - }else{ - //TODO: WR-4660 (show popup about developer widget - // during launch - LogInfo("POPUP: THIS IS TEST WIDGET!"); - } - } - return true; -} - -void WidgetLogic::initFinished(const InitStatusStruct &statusStruct, - CommonError::Type error) -{ - POST_USER_CALLBACK( - new InitStatusCallbackCall( - statusStruct.initStatusCallback, - error, - statusStruct.userParam)); -} - -void WidgetLogic::launchFailed(const WidgetLaunchStruct &originalLaunchStruct, - CommonError::Type error, - const std::string& message) -{ - POST_USER_CALLBACK( - new LaunchFinishedCallbackCall( - originalLaunchStruct.launchFinishedCallback, - NULL, - m_widgetModelPtr->Handle.Get(), - error, - message, - originalLaunchStruct.userParam)); -} - -void WidgetLogic::operationFinished( - const OperationStatusStruct &operationStruct, - CommonError::Type error) -{ - POST_USER_CALLBACK( - new OperationStatusCallbackCall( - operationStruct.operationStatusCallback, - m_widgetModelPtr->Handle.Get(), - error, - operationStruct.userParam)); -} diff --git a/src/domain/widget_logic.h b/src/domain/widget_logic.h deleted file mode 100644 index 82fe03a..0000000 --- a/src/domain/widget_logic.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_logic.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for widget logic - */ -#ifndef WIDGET_LOGIC_H -#define WIDGET_LOGIC_H - -#include -#include -#include -#include -#include -#include -#include - -/** - * @brief Widget logic main singleton - * - * All widget related logic is processed in WidgetLogic. - * - * WidgetLogic is initialized by invoking Initialize method and is deinitialized - * on application exit by invoking Deinitialize method. WidgetModel is created - * when launchWidget method is invoked basing on information contained in - * database (reading is done with help of WidgetDAO). All operations on - * WidgetModel should be invoked by posting proper event to widget controller - * (if the command comes from external source), or by directly calling - * WidgetLogic method. - */ -// TODO rename it to Core::Logic or sth -class WidgetLogic : public DPL::Noncopyable -{ - private: - std::shared_ptr m_widgetModelPtr; - - public: - /** - * @brief Internal. Creates widget model associated with selected - * WidgetHandle - * - * This method also causes that WidgetLogic starts to listen - * for WidgetModel changes. - */ - void createWidgetModel(WidgetHandle widgetHandle); - - /** - * @brief Internal. Destroy widget model - * - * Removes all listeners from widget model and deletes all allocated memory. - */ - void destroyWidgetModel(); - - void hideWidgetSend(); - - bool checkWACTestCertififedWidget(); - - public: - virtual ~WidgetLogic(); - - /** - * @brief Initialize widget logic - * - * Must be called exactly once, at startup. - */ - void initialize(InitStatusStruct statusStruct); - - /** - * @brief Deinitialize widget logic - * - * Must be called exactly once, at exit. - */ - void deinitialize(); - - /** - * This method launches the specified widget - * - * @param[in] launchStruct Launch parameters, passed to view - */ - void launchWidget(const WidgetLaunchStruct &launchStruct); - - /** - * This method removes the specified widget - * - */ - void killWidget(const OperationStatusStruct &operationStruct); - - /** - * This method suspends widget java script - * - * @param[in] operationStruct struct with callback data. - */ - void suspendWidget(const OperationStatusStruct &operationStruct); - - /** - * This method resumes widget java script - * - * @param[in] operationStruct struct with callback data. - */ - void resumeWidget(const OperationStatusStruct &operationStruct); - - void resetWidget(const std::string& bundleData); - /** - * This method returns the WidgetModel according to the specified - * application id. - * - * @return The WidgetModel if the WidgetModel with the @c appId does not - * exists returns NULL. - */ - WidgetModel *getWidgetModel(); - - private: - WidgetLogic(); - - // user callback helper methods - void initFinished(const InitStatusStruct &statusStruct, - CommonError::Type error); - void launchFailed(const WidgetLaunchStruct &originalLaunchStruct, - CommonError::Type error, - const std::string& message); - void operationFinished(const OperationStatusStruct &operationStruct, - CommonError::Type error); - - friend class WidgetController; -}; - -#endif // WIDGET_LOGIC_H diff --git a/src/framework/DESCRIPTION b/src/framework/DESCRIPTION deleted file mode 100644 index 383eeb2..0000000 --- a/src/framework/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -Collective headers for main libraries (EFL and WebKit) diff --git a/src/framework/framework_efl.h b/src/framework/framework_efl.h deleted file mode 100644 index bd47066..0000000 --- a/src/framework/framework_efl.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#pragma GCC system_header - -#include -#include -#include -#include -#include -#include -#include diff --git a/src/framework/framework_ewebkit.h b/src/framework/framework_ewebkit.h deleted file mode 100644 index 882ffaf..0000000 --- a/src/framework/framework_ewebkit.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#pragma GCC system_header - -#include -#include -#include -#include diff --git a/src/global_logic/global_logic.cpp b/src/global_logic/global_logic.cpp deleted file mode 100644 index e5dd879..0000000 --- a/src/global_logic/global_logic.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file global_logic.cpp - * @author Lukasz Marek (l.marek@samgsung.com) - * @version - * @brief - */ - -#include "global_logic.h" - -#include -IMPLEMENT_SINGLETON(GlobalLogic) - -GlobalLogic::GlobalLogic() -{ -} - -GlobalLogic::~GlobalLogic() -{ -} - -GlobalModel* GlobalLogic::GetGlobalModel() const -{ - FREE_LOGIC_LOCK - static GlobalModel globalLogic; - return &globalLogic; -} diff --git a/src/global_logic/global_logic.h b/src/global_logic/global_logic.h deleted file mode 100644 index 604c965..0000000 --- a/src/global_logic/global_logic.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file global_logic.h - * @author Lukasz Marek (l.marek@samgsung.com) - * @version - * @brief - */ - -#include - -#include -#include - -class GlobalLogic : public FreeLogic -{ - public: - GlobalModel* GetGlobalModel() const; - - private: - GlobalLogic(); - ~GlobalLogic(); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton GlobalLogicSingleton; diff --git a/src/global_logic/global_model.cpp b/src/global_logic/global_model.cpp deleted file mode 100644 index 9c0941e..0000000 --- a/src/global_logic/global_model.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file global_model.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - */ -#include "global_model.h" -#include - -using namespace WrtDB; - -GlobalModel::GlobalModel() : - HomeNetworkAccess(this, - &GlobalModel::HomeNetworkAccessReadProperty, - &GlobalModel::HomeNetworkAccessWriteProperty), - RoamingNetworkAccess(this, - &GlobalModel::RoamingNetworkAccessReadProperty, - &GlobalModel::RoamingNetworkAccessWriteProperty), - ParentalMode(this, - &GlobalModel::readParentalMode, - &GlobalModel::writeParentalMode), - DeveloperMode(this, - &GlobalModel::ReadDeveloperMode, - &GlobalModel::WriteDeveloperMode), - SecureByDefault(this, - &GlobalModel::ReadSecureByDefault, - &GlobalModel::WriteSecureByDefault), - ComplianceMode(this, - &GlobalModel::readComplianceMode, - &GlobalModel::writeComplianceMode), - ComplianceFakeImei(this, - &GlobalModel::readComplianceFakeImei, - &GlobalModel::writeComplianceFakeImei), - ComplianceFakeMeid(this, - &GlobalModel::readComplianceFakeMeid, - &GlobalModel::writeComplianceFakeMeid) -{ -} - -GlobalModel::NetworkAccessMode GlobalModel::HomeNetworkAccessReadProperty( - DPL::Event::Model* /*model*/) -{ - switch (GlobalDAO::GetHomeNetworkDataUsage()) { - case GlobalDAO::NEVER_CONNECT: - return GlobalModel::NEVER_CONNECT; - case GlobalDAO::ALWAYS_ASK: - return GlobalModel::ALWAYS_ASK; - case GlobalDAO::CONNECT_AUTOMATICALLY: - return GlobalModel::CONNECT_AUTOMATICALLY; - default: - break; - } - LogWarning("using default value"); - return GlobalModel::ALWAYS_ASK; -} - -void GlobalModel::HomeNetworkAccessWriteProperty( - const GlobalModel::NetworkAccessMode &value, - DPL::Event::Model* /*model*/) -{ - switch (value) { - case GlobalModel::NEVER_CONNECT: - GlobalDAO::SetHomeNetworkDataUsage(GlobalDAO::NEVER_CONNECT); - return; - case GlobalModel::ALWAYS_ASK: - GlobalDAO::SetHomeNetworkDataUsage(GlobalDAO::ALWAYS_ASK); - return; - case GlobalModel::CONNECT_AUTOMATICALLY: - GlobalDAO::SetHomeNetworkDataUsage( - GlobalDAO::CONNECT_AUTOMATICALLY); - return; - default: - break; - } -} - -GlobalModel::NetworkAccessMode GlobalModel::RoamingNetworkAccessReadProperty( - DPL::Event::Model* /*model*/) -{ - switch (GlobalDAO::GetRoamingDataUsage()) { - case GlobalDAO::NEVER_CONNECT: - return GlobalModel::NEVER_CONNECT; - case GlobalDAO::ALWAYS_ASK: - return GlobalModel::ALWAYS_ASK; - case GlobalDAO::CONNECT_AUTOMATICALLY: - return GlobalModel::CONNECT_AUTOMATICALLY; - default: - break; - } - LogWarning("using default value"); - return GlobalModel::ALWAYS_ASK; -} - -void GlobalModel::RoamingNetworkAccessWriteProperty( - const GlobalModel::NetworkAccessMode &value, - DPL::Event::Model* /*model*/) -{ - switch (value) { - case GlobalModel::NEVER_CONNECT: - GlobalDAO::SetRoamingDataUsage(GlobalDAO::NEVER_CONNECT); - return; - case GlobalModel::ALWAYS_ASK: - GlobalDAO::SetRoamingDataUsage(GlobalDAO::ALWAYS_ASK); - return; - case GlobalModel::CONNECT_AUTOMATICALLY: - GlobalDAO::SetRoamingDataUsage(GlobalDAO::CONNECT_AUTOMATICALLY); - return; - default: - break; - } -} - -bool GlobalModel::ReadDeveloperMode(DPL::Event::Model */*model*/) -{ - return GlobalDAO::GetDeveloperMode(); -} - -void GlobalModel::WriteDeveloperMode(const bool &value, - DPL::Event::Model */*model*/) -{ - GlobalDAO::SetDeveloperMode(value); -} - -bool GlobalModel::ReadSecureByDefault(DPL::Event::Model */*model*/) -{ - return GlobalDAO::GetSecureByDefault(); -} - -void GlobalModel::WriteSecureByDefault(const bool &val, - DPL::Event::Model */*model*/) -{ - GlobalDAO::SetSecureByDefault(val); -} - -bool GlobalModel::readComplianceMode(DPL::Event::Model * /* model */) -{ - return GlobalDAO::getComplianceMode(); -} - -void GlobalModel::writeComplianceMode(const bool &value, DPL::Event::Model* /*model*/) -{ - GlobalDAO::setComplianceMode(value); -} - -std::string GlobalModel::readComplianceFakeImei(DPL::Event::Model * /* model */) -{ - return GlobalDAO::getComplianceFakeImei(); -} - -void GlobalModel::writeComplianceFakeImei(const std::string &value, - DPL::Event::Model* /*model*/) -{ - GlobalDAO::setComplianceFakeImei(value); -} - -std::string GlobalModel::readComplianceFakeMeid(DPL::Event::Model * /* model */) -{ - return GlobalDAO::getComplianceFakeMeid(); -} - -void GlobalModel::writeComplianceFakeMeid(const std::string &value, - DPL::Event::Model* /*model*/) -{ - GlobalDAO::setComplianceFakeMeid(value); -} - -bool GlobalModel::readParentalMode(DPL::Event::Model* /*model*/) -{ - return GlobalDAO::GetParentalMode(); -} - -void GlobalModel::writeParentalMode(const bool& value, DPL::Event::Model* /*model*/) -{ - GlobalDAO::SetParentalMode(value); -} diff --git a/src/global_logic/global_model.h b/src/global_logic/global_model.h deleted file mode 100644 index f116b60..0000000 --- a/src/global_logic/global_model.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file global_model.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - */ -#ifndef WRT_COMMON_GLOBAL_MODEL_H_ -#define WRT_COMMON_GLOBAL_MODEL_H_ - -#include -#include -#include -#include -#include - -class GlobalModel : public DPL::Event::Model -{ - public: - - /** - * Network access mode enum. - */ - enum NetworkAccessMode - { - NEVER_CONNECT, - ALWAYS_ASK, - CONNECT_AUTOMATICALLY - }; - - DPL::Event::Property HomeNetworkAccess; - - DPL::Event::Property RoamingNetworkAccess; - - DPL::Event::Property ParentalMode; - - DPL::Event::Property DeveloperMode; - - DPL::Event::Property SecureByDefault; - - DPL::Event::Property ComplianceMode; - - DPL::Event::Property ComplianceFakeImei; - - DPL::Event::Property ComplianceFakeMeid; - - GlobalModel(); - - private: - // Custom read write delegates - static NetworkAccessMode HomeNetworkAccessReadProperty(DPL::Event::Model *model); - static void HomeNetworkAccessWriteProperty(const NetworkAccessMode &value, - DPL::Event::Model *model); - - static NetworkAccessMode RoamingNetworkAccessReadProperty(DPL::Event::Model *model); - static void RoamingNetworkAccessWriteProperty( - const NetworkAccessMode &value, - DPL::Event::Model *model); - - static bool ReadDeveloperMode(DPL::Event::Model *model); - static void WriteDeveloperMode(const bool &value, - DPL::Event::Model *model); - - static bool ReadSecureByDefault(DPL::Event::Model *model); - static void WriteSecureByDefault(const bool &val, DPL::Event::Model *model); - - static bool readComplianceMode(DPL::Event::Model *model); - static void writeComplianceMode(const bool &value, DPL::Event::Model *model); - - static std::string readComplianceFakeImei(DPL::Event::Model *model); - static void writeComplianceFakeImei(const std::string &value, - DPL::Event::Model *model); - - static std::string readComplianceFakeMeid(DPL::Event::Model *model); - static void writeComplianceFakeMeid(const std::string &value, - DPL::Event::Model *model); - - static bool readParentalMode(DPL::Event::Model* model); - static void writeParentalMode(const bool& value, DPL::Event::Model* model); -}; - -#endif // WRT_COMMON_GLOBAL_MODEL_H_ diff --git a/src/plugin-service/plugin-loading/CMakeLists.txt b/src/plugin-service/plugin-loading/CMakeLists.txt deleted file mode 100644 index 30c1c13..0000000 --- a/src/plugin-service/plugin-loading/CMakeLists.txt +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# - -pkg_search_module(dpl REQUIRED dpl-efl) - -set(PLUGIN_LOADING_SRC_DIR ${PROJECT_SOURCE_DIR}/src/plugin-service/plugin-loading) -set(PLUGIN_LOADING_SRC_DIR_EFL ${PLUGIN_LOADING_SRC_DIR}/efl) - -set(PLUGIN_LOADING_SOURCES - ${PLUGIN_LOADING_SRC_DIR}/plugin_logic.cpp - ${PLUGIN_LOADING_SRC_DIR}/plugin.cpp - ${PLUGIN_LOADING_SRC_DIR}/plugin_model.cpp - ${PLUGIN_LOADING_SRC_DIR}/explorer.cpp - ${PLUGIN_LOADING_SRC_DIR}/js_object_declaration.cpp - ${PLUGIN_LOADING_SRC_DIR}/js_function_declaration.cpp - ${PLUGIN_LOADING_SRC_DIR}/js_object.cpp - ${PLUGIN_LOADING_SRC_DIR}/plugin_iframe_support.cpp - ${PLUGIN_LOADING_SRC_DIR_EFL}/javascript_functions.cpp - ${PLUGIN_LOADING_SRC_DIR_EFL}/js_function_manager.cpp - ${PLUGIN_LOADING_SRC_DIR_EFL}/webkit_interface.cpp -) - -INCLUDE_DIRECTORIES( - ${PLUGIN_LOADING_SRC_DIR} - ${PLUGIN_LOADING_SRC_DIR_EFL} -) - -ADD_LIBRARY(${TARGET_PLUGIN_LOADING_LIB} SHARED - ${PLUGIN_LOADING_SOURCES} -) - -SET_TARGET_PROPERTIES(${TARGET_PLUGIN_LOADING_LIB} PROPERTIES - COMPILE_FLAGS -fPIC - LINK_FLAGS "-Wl,--as-needed -Wl,--hash-style=both" -) - -SET_TARGET_PROPERTIES(${TARGET_PLUGIN_LOADING_LIB} PROPERTIES - COMPILE_FLAGS "-include profiling_util.h" -) - -SET_TARGET_PROPERTIES(${TARGET_PLUGIN_LOADING_LIB} PROPERTIES - SOVERSION ${PROJECT_VERSION} -) - -target_link_libraries(${TARGET_PLUGIN_LOADING_LIB} - ${dpl_LIBRARIES} - ${TARGET_WRT_DAO_RO_LIB} -) - -INSTALL(TARGETS ${TARGET_PLUGIN_LOADING_LIB} - DESTINATION lib - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE -) - -INSTALL(FILES - plugin_logic.h - plugin_model.h - plugin.h - explorer.h - js_function_declaration.h - js_function_manager.h - js_object.h - js_object_declaration.h - webkit_interface.h - plugin_iframe_support.h - DESTINATION include/wrt-engine/plugin-service -) - -# For wrt-plugins -INSTALL(FILES - wrt_plugin_export.h - DESTINATION include/wrt-engine) diff --git a/src/plugin-service/plugin-loading/efl/javascript_functions.cpp b/src/plugin-service/plugin-loading/efl/javascript_functions.cpp deleted file mode 100644 index 05d4c8b..0000000 --- a/src/plugin-service/plugin-loading/efl/javascript_functions.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file javascript_functions.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#include -#include -#include - -namespace JSCFunctions { - -std::string ConvertJSStringToStdString(JSStringRef value) -{ - int nSize = JSStringGetLength(value) + 1; - DPL::ScopedArray textStr(new char[nSize]); - JSStringGetUTF8CString(value, textStr.Get(), nSize); - std::string ret = textStr.Get(); - return ret; -} - -JSValueRef JavaScriptPrintProc(JSContextRef context, - JSObjectRef /*object*/, - JSObjectRef /*thisObject*/, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef* exception) -{ - if (argumentCount == 0 || !JSValueIsString(context, arguments[0])) { - LogError("Argument is not string"); - return JSValueMakeUndefined(context); - } - - JSStringRef textRef = JSValueToStringCopy(context, arguments[0], exception); - int nSize = JSStringGetLength(textRef) + 1; - - DPL::ScopedArray textStr(new char[nSize]); - - JSStringGetUTF8CString(textRef, textStr.Get(), nSize); - LogDebug("\033[00;35m[jsPrint] " << textStr.Get()); - - JSStringRelease(textRef); - return JSValueMakeBoolean(context, true); -} - -JSValueRef JavaScriptHookProc( - JSContextRef context, - JSObjectRef /*object*/, - JSObjectRef /*thisObject*/, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef* exception) -{ - bool inError = false; - if (argumentCount < 2 || - argumentCount > 3 || - !JSValueIsString(context, arguments[0]) || - !JSValueIsString(context, arguments[1])) { - - inError = true; - } - - if (inError) { - LogError("*********************************************"); - LogError("*********************************************"); - LogError("Cannot print test Result"); - LogError("*********************************************"); - LogError("*********************************************"); - return JSValueMakeUndefined(context); - } - - std::string id, result, message; - JSStringRef idRef = JSValueToStringCopy(context, arguments[0], exception); - id = ConvertJSStringToStdString(idRef); - JSStringRelease(idRef); - JSStringRef idResult = JSValueToStringCopy(context, - arguments[1], - exception); - result = ConvertJSStringToStdString(idResult); - JSStringRelease(idResult); - - if (argumentCount == 3 && !JSValueIsString(context, arguments[2])) { - JSStringRef idMessage = JSValueToStringCopy(context, - arguments[0], - exception); - message = ConvertJSStringToStdString(idMessage); - JSStringRelease(idMessage); - } - - LogDebug("\033[00;35m***********************************************"); - LogDebug("\033[00;35m***********************************************"); - LogDebug("\033[00;35m TEST ID: " << id); - LogDebug("\033[00;35m RESULT: " << result); - LogDebug("\033[00;35m MESSAGE: " << message); - LogDebug("\033[00;35m***********************************************"); - LogDebug("\033[00;35m***********************************************"); - - return JSValueMakeBoolean(context, true); -} -} diff --git a/src/plugin-service/plugin-loading/efl/javascript_functions.h b/src/plugin-service/plugin-loading/efl/javascript_functions.h deleted file mode 100644 index 7dbad59..0000000 --- a/src/plugin-service/plugin-loading/efl/javascript_functions.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file javascript_functions.h - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_EFL_JAVASCRIPT_FUNCTIONS_H_ -#define WRT_SRC_PLUGIN_SERVICE_EFL_JAVASCRIPT_FUNCTIONS_H_ - -#include - -namespace JSCFunctions { -JSValueRef JavaScriptPrintProc( - JSContextRef context, - JSObjectRef /*object*/, - JSObjectRef /*thisObject*/, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef * exception); -JSValueRef JavaScriptHookProc( - JSContextRef context, - JSObjectRef /*object*/, - JSObjectRef /*thisObject*/, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef* exception); -} - -#endif - diff --git a/src/plugin-service/plugin-loading/efl/js_function_manager.cpp b/src/plugin-service/plugin-loading/efl/js_function_manager.cpp deleted file mode 100644 index 3451997..0000000 --- a/src/plugin-service/plugin-loading/efl/js_function_manager.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_function_manager.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#include -#include -#include -#include -IMPLEMENT_SINGLETON(JsFunctionManager) - -using namespace std; - -namespace { -const string JSPRINT_NAME = "jsPrint"; -const string JSPRINT_PARENTNAME = "GLOBAL_OBJECT"; -const string JSHOOK_NAME = "jsHook"; -} - -JsFunctionManager::FunctionsPtr -JsFunctionManager::m_functions = - FunctionsPtr(new JsFunctionManager::Functions()); - -bool JsFunctionManager::initialize() -{ - //jsPrint - JSFunctionDeclarationPtr jsPrint( - new JSFunctionDeclaration( - JSPRINT_NAME, - JSPRINT_PARENTNAME, - reinterpret_cast( - JSCFunctions::JavaScriptPrintProc))); - - m_functions->push_back(jsPrint); - - JSFunctionDeclarationPtr jsHook( - new JSFunctionDeclaration(JSHOOK_NAME, JSPRINT_PARENTNAME, - reinterpret_cast ( - JSCFunctions::JavaScriptHookProc))); - - m_functions->push_back(jsHook) ; - - return true; -} - -JsFunctionManager::FunctionsPtr JsFunctionManager::GetFunctions() -{ - static bool initialized = initialize(); - (void) initialized; - return m_functions; -} diff --git a/src/plugin-service/plugin-loading/efl/webkit_interface.cpp b/src/plugin-service/plugin-loading/efl/webkit_interface.cpp deleted file mode 100644 index 23ae696..0000000 --- a/src/plugin-service/plugin-loading/efl/webkit_interface.cpp +++ /dev/null @@ -1,473 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_webkit.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of webkit js plugin - * accessing routines in EFL - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -IMPLEMENT_SINGLETON(WebkitInterface) - -#define CHECK_JSVALUE_IS_UNDEFINED_RETURN(context, object, ret) \ - if (JSValueIsUndefined(context, object)) {\ - LogError("Object " << #object << " is undefined");\ - return ret;\ - } - -#define CHECK_JSOBJECT_IS_NULL_RETURN(object, ret) \ - if (!object) {\ - LogError("Object " << #object << " is NULL");\ - return ret;\ - } - -namespace { -/** - * Converts JSStringRef to std::string - * */ -std::string toString(const JSStringRef& arg) -{ - Assert(arg); - std::string result; - size_t jsSize = JSStringGetMaximumUTF8CStringSize(arg); - if (jsSize > 0) { - ++jsSize; - DPL::ScopedArray buffer(new char[jsSize]); - size_t written = JSStringGetUTF8CString(arg, buffer.Get(), jsSize); - if (written > jsSize) { - LogError("Conversion could not be fully performed."); - return std::string(); - } - result = buffer.Get(); - } - - return result; -} - -/** - * Converts JSValueRef to std::string - * */ -std::string toString(JSContextRef ctx, JSValueRef value) { - Assert(ctx && value); - std::string result; - JSStringRef str = JSValueToStringCopy(ctx, value, NULL); - result = toString(str); - JSStringRelease(str); - return result; -} - -JSValueRef getProperty(JSContextRef ctx, JSValueRef value, const char* name) { - Assert(ctx && value && name); - JSValueRef result = NULL; - JSObjectRef obj = JSValueToObject(ctx, value, NULL); - if (obj) { - JSStringRef str = JSStringCreateWithUTF8CString(name); - result = JSObjectGetProperty(ctx, obj, str, NULL); - JSStringRelease(str); - } - return result; -} - -JSValueRef getPropertyObj(JSContextRef ctx, JSObjectRef obj, const char* name) { - Assert(ctx && obj && name); - JSStringRef str = JSStringCreateWithUTF8CString(name); - JSValueRef result = JSObjectGetProperty(ctx, obj, str, NULL); - JSStringRelease(str); - return result; -} - -//get context JSGlobalContextRef (JSC type) base on view (Abstract type) -JSGlobalContextRef getJSContext(WebkitInterface::WebkitView view){ - return static_cast( - WebkitInterfaceSingleton::Instance().getGlobalContext(view)); -} - -//get global context JSObjectRef (JSC type) base on view (Abstract type) -JSObjectRef getJSGlobalObject(WebkitInterface::WebkitView view){ - return JSContextGetGlobalObject(getJSContext(view)); -} - -} - -typedef JSValueRef (*JSCFunction)( - JSContextRef context, - JSObjectRef object, - JSObjectRef thisObject, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef* exception); - - - -class FunctionDispatcher : DPL::Noncopyable -{ - private: - struct Data{ - JSObjectPtr originalFunction; - JSObjectPtr overlayFunction; - }; - - typedef std::map OpaquedFunctions; - - public: - static JSValueRef Dispatcher( - JSContextRef context, - JSObjectRef object, - JSObjectRef thisObject, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef* exception) - { - LogDebug("Dispatcher invoked"); - - JSValueRef result = JSValueMakeUndefined(context); - - auto it = m_functions.find(object); - if (it==m_functions.end()) - { - LogError("Function Dispatcher can not find proper functions"); - return JSValueMakeBoolean(context, false); - } - - if (it->second.overlayFunction) - { - LogDebug("Overlayed function will be invoked..."); - result = JSObjectCallAsFunction( - context, - static_cast( - it->second.overlayFunction->getObject()), - thisObject, - argumentCount, - arguments, - exception); - } - - //call original FunctionDispatche - if (it->second.originalFunction) - { - LogDebug("Original function will be invoked.."); - result = JSObjectCallAsFunction( - context, - static_cast( - it->second.originalFunction->getObject()), - thisObject, - argumentCount, - arguments, - exception); - } - - LogDebug("Done"); - return result; - } - - static JSObjectPtr createOverlay(WebkitInterface::WebkitContext ctx, - const JSObjectPtr& originalFunction, - const JSObjectPtr& overlayFunction, - const std::string& name) - { - LogDebug("Creation overlay for function: " << name); - JSStringRef name_js = JSStringCreateWithUTF8CString(name.c_str()); - JSObjectRef fun = JSObjectMakeFunctionWithCallback( - static_cast(ctx), - name_js, - static_cast(Dispatcher)); - - JSStringRelease(name_js); - - Data dat = {originalFunction, overlayFunction}; - m_functions[fun] = dat; - //JSProtect?? - return JSObjectPtr(new JSObject(fun)); - } - -// static void setGlobalContext(JSContextRef context) -// { -// if (!m_globalContext){ -// m_globalContext = context; -// } -// }; -// -// static bool IsContextSet() {return m_globalContext!=NULL;} - - private: -// static JSContextRef m_globalContext; - static OpaquedFunctions m_functions; -}; - -FunctionDispatcher::OpaquedFunctions - FunctionDispatcher::m_functions = FunctionDispatcher::OpaquedFunctions(); - -//JSContextRef FunctionDispatcher::m_globalContext = NULL; - -WebkitInterface::WebkitContext WebkitInterface::getGlobalContext( - WebkitView webkitView) -{ - void* objectValidator = evas_object_smart_data_get( - static_cast(webkitView)); - - if (!objectValidator) { - LogError("WebKit error,webkitView object is invalid, temporary bugfix"); - return NULL; - } - - return ewk_view_get_global_context(static_cast(webkitView)); -} - -void WebkitInterface::setObjectProperty(WebkitContext context, - const JSObjectPtr& parentObject, - const std::string &propertyName, - const JSObjectPtr& propertyObject) -{ - LogInfo("Webkit:setting property --" << propertyName << "--"); - - //create name - JSStringRef name = JSStringCreateWithUTF8CString(propertyName.c_str()); - //set property - JSObjectSetProperty( - static_cast(context), - static_cast(parentObject->getObject()), name, - static_cast(propertyObject->getObject()), - kJSPropertyAttributeReadOnly, 0); - - JSStringRelease(name); -} - -void WebkitInterface::removeObjectProperty(WebkitContext context, - const JSObjectPtr& parentObject, - const std::string &propertyName) -{ - if (!context) { - //nothing to do -> no context - return; - } - LogDebug("Deleting property --" << propertyName << "--"); - - JSStringRef name = JSStringCreateWithUTF8CString(propertyName.c_str()); - JSObjectDeleteProperty( - static_cast(context), - static_cast(parentObject->getObject()), name, 0); - - JSStringRelease(name); -} - -WebkitInterface::PropertiesList WebkitInterface::getObjectPropertiesList( - WebkitContext context, - const JSObjectPtr& object) const -{ - PropertiesList result; - JSPropertyNameArrayRef properties = JSObjectCopyPropertyNames( - static_cast(context), - static_cast(object->getObject())); - std::size_t count = JSPropertyNameArrayGetCount(properties); - result.reserve(count); - LogDebug("propesties count " << count); - for (std::size_t i = 0; i < count; ++i) { - JSStringRef property = JSPropertyNameArrayGetNameAtIndex(properties, i); - result.push_back(toString(property)); - } - JSPropertyNameArrayRelease(properties); - return result; -} - -void WebkitInterface::setGeolocation(WebkitView webkitView, - bool state) -{ - LogDebug("Activating geolocation"); - if (ewk_view_setting_geolocation_set( - static_cast(webkitView), state) == EINA_FALSE) { - LogError("Activating geolocation failed"); - } -} - -JSObjectPtr WebkitInterface::createObject(WebkitInterface::WebkitContext context, - const JSObjectDeclarationPtr& declaration) -{ - typedef JSObjectDeclaration::Options JO; - - if( declaration->getOptions() && - declaration->getOptions()->getType() == JO::ClassType::Function) - { - LogDebug("Create function"); - JSStringRef jsFunName = - JSStringCreateWithUTF8CString(declaration->getName().c_str()); - - JSObjectRef object = JSObjectMakeFunctionWithCallback( - static_cast(context), - jsFunName, - reinterpret_cast - (declaration->getClassTemplate())); - - JSStringRelease(jsFunName); - - return JSObjectPtr(new JSObject(static_cast(object))); - } - else { - // LogDebug("Create object"); - return JSObjectPtr(new JSObject( - JSObjectMake( - static_cast(context), - static_cast( - const_cast( - declaration->getClassTemplate())), - NULL))); - } - -} - -JSObjectPtr WebkitInterface::createFunctionInstance(WebkitContext context, - const JSFunctionDeclarationPtr& function) -{ - JSStringRef jsFunName = - JSStringCreateWithUTF8CString(function->getName().c_str()); - - JSObjectRef object = JSObjectMakeFunctionWithCallback( - static_cast(context), jsFunName, - (JSObjectCallAsFunctionCallback) - - reinterpret_cast(function->getFunction())); - - JSStringRelease(jsFunName); - - return JSObjectPtr(new JSObject(static_cast(object))); -} - -JSObjectPtr WebkitInterface::getGlobalObject(WebkitContext context) -{ - return JSObjectPtr(new JSObject(static_cast( - JSContextGetGlobalObject(static_cast(context))))); -} - -JSObjectPtr WebkitInterface::copyObjectToIframe( - WebkitInterface::WebkitContext context, - const JSObjectPtr& iframe, - const std::string& name) -{ - LogError("Copy object to iframe: " << name); - - JSGlobalContextRef jsGlobalContext = - static_cast(context); - - JSObjectRef globalObject = JSContextGetGlobalObject(jsGlobalContext); - - JSValueRef requestedObject = getPropertyObj(jsGlobalContext, - globalObject, - name.c_str()); - CHECK_JSVALUE_IS_UNDEFINED_RETURN(jsGlobalContext, - requestedObject, - JSObjectPtr()); - - JSStringRef requestedObjectStr = - JSStringCreateWithUTF8CString(name.c_str()); - - JSObjectSetProperty(jsGlobalContext, - static_cast(iframe->getObject()), - requestedObjectStr, - requestedObject, - kJSPropertyAttributeReadOnly, - NULL); - - JSStringRelease(requestedObjectStr); - - return JSObjectPtr( - new JSObject(const_cast(requestedObject))); -} - -WebkitInterface::ObjectsListPtr -WebkitInterface::getIframesList(WebkitContext ctx) const -{ - LogDebug("get iframes list"); - JSGlobalContextRef context = static_cast(ctx); - - JSObjectRef globalObject = JSContextGetGlobalObject(context); - - JSValueRef frames = getPropertyObj(context, globalObject, "frames"); - CHECK_JSVALUE_IS_UNDEFINED_RETURN(context, frames, ObjectsListPtr()); - - JSObjectRef frames_o = JSValueToObject(context, frames, NULL); - CHECK_JSOBJECT_IS_NULL_RETURN(frames_o, ObjectsListPtr()); - - JSValueRef len = getPropertyObj(context, frames_o, "length"); - CHECK_JSVALUE_IS_UNDEFINED_RETURN(context, len, ObjectsListPtr()); - - size_t count = JSValueToNumber(context, len, NULL); - LogDebug("frames_o.length = " << count); - - ObjectsListPtr retList = ObjectsListPtr(new ObjectsList()); - - for (size_t i = 0; i < count; ++i) { - std::stringstream ss; - ss << i; - JSValueRef frame = getPropertyObj(context, - frames_o, - ss.str().c_str()); - if (JSValueIsUndefined(context, frame)) { - LogError("Selected frame is null: frame[" << i << "]"); - continue; - } - JSObjectRef frame_obj = JSValueToObject(context, frame, NULL); - if (!frame_obj) { - LogError("frame_obj is NULL."); - continue; - } - retList->push_back(JSObjectPtr(new JSObject(frame_obj))); - LogDebug("Frame Value Pointer: " << frame); - LogDebug("Frame Object Pointer: " << frame_obj); - } - - return retList; -} - - -JSObjectPtr WebkitInterface::createOverlayedFunction(WebkitContext ctx, - const JSObjectPtr& originalFunction, - const JSObjectPtr& overlayFunction, - const std::string& name) const -{ -// if(!FunctionDispatcher::IsContextSet()) -// { -// FunctionDispatcher::setGlobalContext(static_cast(ctx)); -// } -// - return FunctionDispatcher::createOverlay(ctx, - originalFunction, - overlayFunction, - name); -} - -JSObjectPtr WebkitInterface::getJSObjectProperty(WebkitContext ctx, - const JSObjectPtr& frame, - const std::string& name) const -{ - JSContextRef context = static_cast(ctx); - JSObjectRef frame_js = static_cast(frame->getObject()); - - JSValueRef property = getPropertyObj(context, frame_js, name.c_str()); - - JSObjectRef objProp = JSValueToObject(context, property, NULL); - - return JSObjectPtr(new JSObject(objProp)); -} diff --git a/src/plugin-service/plugin-loading/explorer.cpp b/src/plugin-service/plugin-loading/explorer.cpp deleted file mode 100644 index b504d23..0000000 --- a/src/plugin-service/plugin-loading/explorer.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file explorer.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#include -#include -#include -#include "explorer.h" - -namespace { -const char* SEPARATOR = "."; -const std::string GLOBAL_OBJECT_NAME = "GLOBAL_OBJECT"; -} - -using namespace std; - -Explorer::Explorer(WebkitInterface::WebkitContext context) : - m_context(context) -{ - if (!context) { - LogError("Context is NULL"); - return; - } - - //insert global object into the map - Try { - insertObject(GLOBAL_OBJECT_NAME, - WebkitInterfaceSingleton::Instance().getGlobalObject( - context)); - LogDebug("Register main frame"); - //register main frame; - m_iframeSupport.registerIframe( - WebkitInterfaceSingleton::Instance().getGlobalObject(context)); - } - Catch(Explorer::Exception::ObjectExist) - { - LogError("Error, Global object already add"); - } -} - -Explorer::ObjectsPairPtr Explorer::addObject(const std::string& name, - const std::string& parentName, - const JSObjectPtr& object) -{ - LogDebug("Explorer:add " << parentName << "<-" << name); - - if (name.empty()) { - ThrowMsg(Exception::WrongName, "Object name is empty"); - } - - //find parent object - JSObjectPtr parent; - Try { - parent = getObject(parentName); - } - Catch(Explorer::Exception::NotFound) - { - ThrowMsg(Explorer::Exception::MissingParent, - "Parent object doesnt exist"); - } - - insertObject(normalizeName(name, parentName), object); - - return ObjectsPairPtr(new ObjectsPair(parent, object)); -} - -void Explorer::insertObject(const std::string& name, - const JSObjectPtr& object) -{ - //check if object exists - StorageIt it = m_storage.find(name); - if (it != m_storage.end()) { - ThrowMsg(Exception::ObjectExist, "Object exists"); - } - LogInfo("Insertion object: " << name); - m_storage[name] = object; -} - -JSObjectPtr Explorer::getObject(const std::string& name) const -{ - StorageConstIt it = m_storage.find(normalizeName(name).c_str()); - - if (it == m_storage.end()) { - LogError("ObjectNotFound: " << normalizeName(name)); - ThrowMsg(Exception::NotFound, "Object not found"); - } - return it->second; -} - -std::string Explorer::normalizeName(const std::string& objectName) const -{ - if (!objectName.compare(0, GLOBAL_OBJECT_NAME.size(), - GLOBAL_OBJECT_NAME)) { - return objectName; - } - - //each object in storage has name started from $GLOBAL_OBJECT_NAME$ - return GLOBAL_OBJECT_NAME + string(SEPARATOR) + objectName; -} - -std::string Explorer::normalizeName(const string& objectName, - const string& parentName) const -{ - string normalizedName; - normalizedName = - normalizeName(parentName) + string(SEPARATOR) + objectName; - return normalizedName; -} - -bool Explorer::deregisterObject(const JSObjectDeclarationPtr& declaration) -{ - JSObjectPtr parent = getObject(declaration->getParentName()); - - WebkitInterfaceSingleton::Instance().removeObjectProperty( - m_context, - parent, - declaration->getName()); - return true; -} - -bool Explorer::registerObject(const JSObjectDeclarationPtr& declaration) -{ - LogInfo("Registration object: " << declaration->getParentName() << - "<-" << declaration->getName()); - - Try - { - JSObjectPtr parent = getObject(declaration->getParentName()); - JSObjectPtr newObject; - - if (declaration->checkIframesSupported()) { - LogDebug("Iframe supported"); - newObject = m_iframeSupport.addObjectToIframe(m_context, - parent, - declaration); - m_iframeSupport.registerDeclaration(declaration); - m_iframeSupport.invokeCallbackForMainFrame(m_context, - declaration, - newObject); - } - else { - LogDebug("Iframe NOT supported"); - newObject = WebkitInterfaceSingleton::Instance(). - createObject(m_context,declaration); - - WebkitInterfaceSingleton::Instance().setObjectProperty( - m_context, - parent, - declaration->getName(), - newObject); - } - - //add to webruntime storage - addObject(declaration->getName(), - declaration->getParentName(), - newObject); - - return true; - } - Catch(Exception::ObjectExist) - { - LogError("Registration failed, object: " << - declaration->getName() << "EXISTS"); - } - Catch(Exception::MissingParent) - { - LogError("Registration failed, Parent: " << - declaration->getParentName() << " NOT FOUND"); - } - Catch(Exception::WrongName) - { - LogError("Registration failed, object: " << - declaration->getName() << "wrong name"); - } - - return false; -} - -bool Explorer::registerFunction(const JSFunctionDeclarationPtr& declaration) -{ - LogDebug("Registration function: " << - declaration->getParentName() << "<-" << declaration->getName()); - - Try { - if (declaration->getName().empty()) { - Throw(Exception::WrongName); - } - - if (!declaration->getFunction()) { - Throw(Exception::NullObject); - } - - JSObjectPtr parent = getObject(declaration->getParentName()); - //add to webruntime storage - //NONE - storage contain ONLY OBJECTS - not a functions - - //set property in webkit - WebkitInterfaceSingleton::Instance().setObjectProperty( - m_context, - parent, - declaration->getName(), - WebkitInterfaceSingleton::Instance().createFunctionInstance( - m_context, declaration)); - - return true; - } - Catch(Exception::NotFound){ - LogError("Registration failed, Parent: " << - declaration->getParentName() << " NOT FOUND"); - } - Catch(Exception::WrongName){ - LogError("Registration failed, object: " << - declaration->getName() << "wrong name"); - } - Catch(Exception::NullObject){ - LogError("Registration failed, function: " << - declaration->getName() << "is NULL"); - } - - return false; -} - -void Explorer::printDebug() const -{ - FOREACH(it, m_storage) - { - LogDebug(it->first); - } -} - -void Explorer::loadPluginsIntoIframes() -{ - auto iframes = - WebkitInterfaceSingleton::Instance().getIframesList(m_context); - if(!iframes){ - LogError("Iframes list is null"); - return; - } - - JSObjectPtr newIframe = m_iframeSupport.findNewIframe(iframes); - if(!newIframe) { - LogError("New iframe has not been found"); - return; - } - - m_iframeSupport.registerIframe(newIframe); - m_iframeSupport.addObjectToIframe(m_context,newIframe); -} diff --git a/src/plugin-service/plugin-loading/explorer.h b/src/plugin-service/plugin-loading/explorer.h deleted file mode 100644 index acc0b2e..0000000 --- a/src/plugin-service/plugin-loading/explorer.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file explorer.h - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_EXPLORER_H_ -#define WRT_SRC_PLUGIN_SERVICE_EXPLORER_H_ - -#include -#include - -#include -#include -#include - -#include "js_object.h" -#include "js_object_declaration.h" -#include "js_function_declaration.h" -#include "webkit_interface.h" -#include "plugin_iframe_support.h" - -class Explorer : private DPL::Noncopyable -{ - public: - /** - * Explorer Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, ObjectExist) - DECLARE_EXCEPTION_TYPE(Base, MissingParent) - DECLARE_EXCEPTION_TYPE(Base, WrongName) - DECLARE_EXCEPTION_TYPE(Base, NotFound) - DECLARE_EXCEPTION_TYPE(Base, NullObject) - }; - - public: - explicit Explorer(WebkitInterface::WebkitContext context); - - /** - * register object - * @return true if success - * */ - bool registerObject(const JSObjectDeclarationPtr& declaration); - - bool deregisterObject(const JSObjectDeclarationPtr& declaration); - - void loadPluginsIntoIframes(); - - /** - *register function - * */ - bool registerFunction(const JSFunctionDeclarationPtr& function); - - void printDebug() const; - - private: - - struct ObjectsPair - { - ObjectsPair(const JSObjectPtr& parent, - const JSObjectPtr& child) : - m_parent(parent), - m_child(child) - { - } - - JSObjectPtr m_parent; - JSObjectPtr m_child; - }; - typedef DPL::SharedPtr ObjectsPairPtr; - - struct Hasher - { - size_t operator()(const std::string& __s) const - { - return __gnu_cxx::__stl_hash_string(__s.c_str()); - } - }; - - //map of pairs {fullObjectName,JSObject} - //in fact the key is not the string but the hashed value - //for example {Window.Widget.Multimedia,JSObject} - typedef __gnu_cxx::hash_map Storage; - typedef Storage::iterator StorageIt; - typedef Storage::const_iterator StorageConstIt; - - Storage m_storage; - - IframesSupport m_iframeSupport; - - WebkitInterface::WebkitContext m_context; - - private: - /** - * add object to the storage - * @return ObjectsPair if success - * @throw ObjectExists if object is already registered - * @throw MissingParent if parent object doesnt exist - * @throw WrongName if name is empty - * */ - virtual ObjectsPairPtr addObject(const std::string& name, - const std::string& parentName, - const JSObjectPtr& object); - - /** - * return JSObject for given name - * the name have to be normalized if needed - * @throw NotFound if object doesnt exist - * */ - virtual JSObjectPtr getObject(const std::string& name) const; - - /* - * insert object to the storage with proper name - * @throw ObjectExists if object is already registered - */ - void insertObject(const std::string& name, - const JSObjectPtr& object); - - /** - * check if name has format compatible with names stored by explorer - * */ - std::string normalizeName(const std::string& name) const; - - /** - * create name of object in explorer format - * */ - std::string normalizeName(const std::string& objectName, - const std::string& parentName) const; -}; - -typedef DPL::SharedPtr ExplorerPtr; -#endif diff --git a/src/plugin-service/plugin-loading/js_function_declaration.cpp b/src/plugin-service/plugin-loading/js_function_declaration.cpp deleted file mode 100644 index 3f23cee..0000000 --- a/src/plugin-service/plugin-loading/js_function_declaration.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_function_declaration.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#include -#include - -JSFunctionDeclaration::JSFunctionDeclaration(const std::string& name, - const std::string& parentName, - JSFunction functionPtr) : - m_name(name), - m_parentName(parentName), - m_functionPtr(functionPtr) -{ - if (!functionPtr) { - LogError("Function object: " << name << " is NULL"); - } -} - diff --git a/src/plugin-service/plugin-loading/js_function_declaration.h b/src/plugin-service/plugin-loading/js_function_declaration.h deleted file mode 100644 index d3a4cdc..0000000 --- a/src/plugin-service/plugin-loading/js_function_declaration.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_function_declaration.h - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_JS_FUNCTION_DECLARATION_H_ -#define WRT_SRC_PLUGIN_SERVICE_JS_FUNCTION_DECLARATION_H_ - -#include -#include -#include - -class JSFunctionDeclaration : private DPL::Noncopyable -{ - public: - typedef void* (*JSFunction)(void*); - - public: - JSFunctionDeclaration(const std::string& name, - const std::string& parentName, - JSFunction functionPtr); - - virtual const std::string& getName() const - { - return m_name; - } - - virtual const std::string& getParentName() const - { - return m_parentName; - } - - virtual JSFunction getFunction() const - { - return m_functionPtr; - } - - virtual ~JSFunctionDeclaration() - { - } - - private: - std::string m_name; - std::string m_parentName; - JSFunction m_functionPtr; -}; - -typedef DPL::SharedPtr JSFunctionDeclarationPtr; - -#endif diff --git a/src/plugin-service/plugin-loading/js_function_manager.h b/src/plugin-service/plugin-loading/js_function_manager.h deleted file mode 100644 index ccedf2d..0000000 --- a/src/plugin-service/plugin-loading/js_function_manager.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_function_manager.h - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_JS_FUNCTION_MANGER_H_ -#define WRT_SRC_PLUGIN_SERVICE_JS_FUNCTION_MANGER_H_ - -#include -#include -#include - -#include "js_function_declaration.h" - -class JsFunctionManager : private DPL::Noncopyable -{ - public: - typedef std::list Functions; - typedef Functions::iterator FunctionsIt; - - typedef DPL::SharedPtr FunctionsPtr; - - public: - FunctionsPtr GetFunctions(); - - private: - JsFunctionManager() - { - } - bool initialize(); - - private: - static FunctionsPtr m_functions; - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton JsFunctionManagerSingleton; - -#endif - diff --git a/src/plugin-service/plugin-loading/js_object.cpp b/src/plugin-service/plugin-loading/js_object.cpp deleted file mode 100644 index 25c6bce..0000000 --- a/src/plugin-service/plugin-loading/js_object.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_object.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#include "js_object.h" -#include - -JSObject::JSObject(RealObject object) : m_object(object) -{ - if (!object) { - LogError("Object is NULL"); - } -} - -JSObject::RealObject JSObject::getObject() const -{ - return m_object; -} diff --git a/src/plugin-service/plugin-loading/js_object.h b/src/plugin-service/plugin-loading/js_object.h deleted file mode 100644 index a5ef354..0000000 --- a/src/plugin-service/plugin-loading/js_object.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_object.h - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_JS_OBJECT_H_ -#define WRT_SRC_PLUGIN_SERVICE_JS_OBJECT_H_ - -#include -#include - -class JSObject : private DPL::Noncopyable -{ - public: - typedef void* RealObject; - - public: - explicit JSObject(RealObject object); - - /** - * returns javascript engine object - * @throw NullPtrException - * */ - virtual RealObject getObject() const; - - virtual ~JSObject() - { - } - - private: - RealObject m_object; -}; - -typedef DPL::SharedPtr JSObjectPtr; - -#endif diff --git a/src/plugin-service/plugin-loading/js_object_declaration.cpp b/src/plugin-service/plugin-loading/js_object_declaration.cpp deleted file mode 100644 index df05ac6..0000000 --- a/src/plugin-service/plugin-loading/js_object_declaration.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_object_declaration.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#include -#include -#include "js_object_declaration.h" - -JSObjectDeclaration::JSObjectDeclaration(class_definition_ptr_t classD) : - m_name(classD->object_name), - m_parentName(classD->parent_name), - m_classTemplate(classD->js_class_template) -{ - if(classD->class_options){ - LogDebug("class options is not a null"); - m_options = OptionsPtr(new Options(classD->class_options)); - } -} - -JSObjectDeclaration::~JSObjectDeclaration() -{ - LogDebug("Destroying object: " << m_name); -} - -bool JSObjectDeclaration::checkIframesSupported() const{ - LogDebug("Check iframe supported"); - if(!m_options || - m_options->getIframeObject() == Options::IFrameObject::None) - { - LogDebug("Iframe NOT supported for object: " << getName()); - return false; - } - - LogDebug("Iframe supported for object: " << getName()); - - return true; -} - -JSObjectDeclaration::Options::ClassType - JSObjectDeclaration::Options::getType() const -{ - LogDebug("Get type field from declaration's option"); - Assert(m_options && "Pointer to options is NULL"); - - switch(m_options->type){ - case JS_CLASS: return ClassType::Class; - case JS_FUNCTION: return ClassType::Function; - default: Assert(0 && "Wrong value of type"); - } -} - -JSObjectDeclaration::Options::IFrameObject - JSObjectDeclaration::Options::getIframeObject() const -{ - LogDebug("Get Frame Option"); - Assert(m_options && "Options object is NULL"); - - switch(m_options->iframe_option){ - case NONE: return IFrameObject::None; - case REFERENCE: return IFrameObject::Reference; - case CREATE_INSTANCE: return IFrameObject::CreateInstance; - default: - Assert(0 && "Wrong value of behaviour type"); - } -} - -JSObjectDeclaration::Options::IFrameNotice - JSObjectDeclaration::Options::getIframeNotice() const -{ - LogDebug("Get Frame Option"); - Assert(m_options && "Pointer to options is null"); - - switch(m_options->iframe_notice){ - case NONE_NOTICE: return IFrameNotice::None; - case ALWAYS_NOTICE: return IFrameNotice::AlwaysNotice; - default: - Assert(0 && "Wrong value of notice option"); - } -} - -JSObjectDeclaration::Options::IFrameOverlay - JSObjectDeclaration::Options::getIframeOverlay() const -{ - LogDebug("Get Frame Option"); - Assert(m_options && "Pointer to options is null"); - - switch(m_options->iframe_overlay){ - case USE_ORGINAL: return IFrameOverlay::UseOriginal; - case USE_OVERLAYED: return IFrameOverlay::UseOverlayed; - case OVERLAYED_BEFORE_ORIGINAL: - return IFrameOverlay::OverlayedBeforeOriginal; - default: - Assert(0 && "Wrong value of overlay option"); - } -} - -void JSObjectDeclaration::Options::invokeCallback(JsContext ctx, - ObjectInstance iframe, - ObjectInstance object) const -{ - LogDebug("JS Object create, notice."); - Assert(m_options && m_options->cb && "Empty callback pointer"); - m_options->cb(ctx, iframe, object); -} - -JSObjectDeclaration::Options::PrivateData - JSObjectDeclaration::Options::getPrivateData() const -{ - Assert(m_options && m_options->private_data && "empty private data"); - return m_options->private_data; -} diff --git a/src/plugin-service/plugin-loading/js_object_declaration.h b/src/plugin-service/plugin-loading/js_object_declaration.h deleted file mode 100644 index 668a62b..0000000 --- a/src/plugin-service/plugin-loading/js_object_declaration.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file js_object_declaration.h - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_JS_OBJECT_DECLARATION_H_ -#define WRT_SRC_PLUGIN_SERVICE_JS_OBJECT_DECLARATION_H_ - -#include -#include -#include -#include -#include -#include -#include - -class JSObjectDeclaration : private DPL::Noncopyable -{ - public: - typedef const void* ConstClassTemplate; - typedef void* ClassTemplate; - typedef class_definition_options_t ClassOptions; - - - class Options : DPL::Noncopyable { - public: - enum class ClassType{ - Class, - Function - }; - - enum class IFrameObject{ - None, - Reference, - CreateInstance - }; - - enum class IFrameNotice{ - None, - AlwaysNotice - }; - - //only for function - enum class IFrameOverlay{ - UseOriginal, - UseOverlayed, - OverlayedBeforeOriginal - }; - - typedef js_object_instance_t ObjectInstance; - typedef java_script_context_t JsContext; - typedef void* PrivateData; - - public: - ClassType getType() const; - - IFrameObject getIframeObject() const; - IFrameNotice getIframeNotice() const; - IFrameOverlay getIframeOverlay() const; - - void invokeCallback(JsContext ctx, - ObjectInstance iframe, - ObjectInstance object) const; - - PrivateData getPrivateData() const; - - private: - const ClassOptions* m_options; - - private: - explicit Options(const ClassOptions* options) : m_options(options) - { - assert(options && "Dont create empty options"); - } - - friend class JSObjectDeclaration; - - }; - - typedef std::shared_ptr OptionsPtr; - - public: - - explicit JSObjectDeclaration(class_definition_ptr_t declaration); - - virtual const std::string& getName() const - { - return m_name; - } - - virtual const std::string& getParentName() const - { - return m_parentName; - } - - virtual ConstClassTemplate getClassTemplate() const - { - return m_classTemplate; - } - - const OptionsPtr getOptions() const{ - return m_options; - } - - bool checkIframesSupported() const; - - virtual ~JSObjectDeclaration(); - - private: - std::string m_name; - std::string m_parentName; - ConstClassTemplate m_classTemplate; - OptionsPtr m_options; -}; - -typedef DPL::SharedPtr JSObjectDeclarationPtr; - -#endif diff --git a/src/plugin-service/plugin-loading/plugin.cpp b/src/plugin-service/plugin-loading/plugin.cpp deleted file mode 100755 index d984032..0000000 --- a/src/plugin-service/plugin-loading/plugin.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of plugin - */ -#include "plugin.h" -#include -#include -#include - -Plugin::Plugin(const std::string &fileName, - void *libHandle, - on_widget_start_proc apiOnWidgetStart, - on_widget_stop_proc apiOnWidgetStop, - const ClassPtrList &apiClassList) : - m_fileName(fileName), - m_libHandle(libHandle), - m_apiOnWidgetStart(apiOnWidgetStart), - m_apiOnWidgetStop(apiOnWidgetStop), - m_apiClassList(apiClassList) -{ -} - -Plugin::~Plugin() -{ - LogInfo("Unloading plugin library: " << m_fileName << "..."); - - // Unload library - if (dlclose(m_libHandle) != 0) { - LogError("Cannot close plugin handle"); - } else { - LogDebug("Library is unloaded"); - } -} - -PluginPtr Plugin::LoadFromFile(const std::string& fileName) -{ - ADD_PROFILING_POINT("plugin_load_from_file", "start"); - LogDebug("LoadFromFile" << fileName); - - LogDebug("Loading plugin: " << fileName); - - void *dllHandle; - ADD_PROFILING_POINT("plugin_dlopen", "start"); - dllHandle = dlopen(fileName.c_str(), RTLD_NOW); - ADD_PROFILING_POINT("plugin_dlopen", "stop"); - - if (dllHandle == NULL) { - LogError( - "Failed to load plugin: " << fileName << ". Reason: " << dlerror()); - PluginPtr empty; - return empty; - } - - // Load new plugin API - on_widget_start_proc *onWidgetStartProcPtr = NULL; - on_widget_stop_proc *onWidgetStopProcPtr = NULL; - const class_definition_t *rawClassList = NULL; - get_widget_class_map_proc *getWidgetClassMapProcPtr = NULL; - - ADD_PROFILING_POINT("plugin_find_symbol", "start"); - onWidgetStartProcPtr = - reinterpret_cast(dlsym(dllHandle, - PLUGIN_WIDGET_START_PROC_NAME)); - onWidgetStopProcPtr = - reinterpret_cast(dlsym(dllHandle, - PLUGIN_WIDGET_STOP_PROC_NAME)); - getWidgetClassMapProcPtr = - reinterpret_cast(dlsym(dllHandle, - PLUGIN_GET_CLASS_MAP_PROC_NAME)); - - if( getWidgetClassMapProcPtr ) - { - rawClassList = (*getWidgetClassMapProcPtr)(); - LogDebug("rawClassList : " << rawClassList << "by getWidgetClassMapProcPtr()"); - } - else - { - rawClassList = - static_cast(dlsym(dllHandle, - PLUGIN_CLASS_MAP_NAME)); - LogDebug("rawClassList : " << rawClassList ); - } - - ADD_PROFILING_POINT("plugin_find_symbol", "stop"); - - if (onWidgetStartProcPtr == NULL || onWidgetStopProcPtr == NULL || - rawClassList == NULL) { - LogWarning("#####"); - LogWarning( - "##### Warning: The following plugin does not support new plugin API."); - LogWarning( - "##### Old plugin API is deprecated. Please update it to new API"); - LogWarning("#####"); - LogWarning( - "##### Plugin: " << fileName << - " has got deprecated or invalid API"); - LogWarning("#####"); - - // Will not load plugin - dlclose(dllHandle); - - PluginPtr empty; - return empty; - } - - LogInfo("#####"); - LogInfo("##### Plugin: " << fileName << " supports new plugin API"); - LogInfo("#####"); - LogInfo("##### $onWidgetStartProc: " << *onWidgetStartProcPtr); - LogInfo("##### $onWidgetStopProc " << *onWidgetStopProcPtr); - LogInfo("##### $classMap: " << reinterpret_cast(rawClassList)); - LogInfo("##### "); - LogInfo("##### Class map:"); - - const class_definition_t *rawClassListIterator = rawClassList; - ClassPtrList classList(new Plugin::ClassList()); - - ADD_PROFILING_POINT("plugin_class_parse", "start"); - // Parse all class definitions - while (rawClassListIterator->parent_name != NULL && - rawClassListIterator->object_name != NULL && - rawClassListIterator->js_class_template != NULL) { - // Logging - LogInfo("#####"); - LogInfo("##### [" << rawClassListIterator->object_name << "]: "); - LogInfo("##### Parent: " << rawClassListIterator->parent_name); - - // Register class - classList->push_back(ClassPtr(new Class(rawClassListIterator))); - - // Go to next class - ++rawClassListIterator; - } - ADD_PROFILING_POINT("plugin_class_parse", "stop"); - - LogInfo("#####"); - - // Load export table - LogDebug("Plugin successfuly loaded"); - - // Insert to loaded modules list - - ADD_PROFILING_POINT("plugin_model_creation", "start"); - PluginPtr instance(new Plugin(fileName, - dllHandle, - *onWidgetStartProcPtr, - *onWidgetStopProcPtr, - classList)); - ADD_PROFILING_POINT("plugin_model_creation", "stop"); - - ADD_PROFILING_POINT("plugin_load_from_file", "stop"); - return instance; -} - -std::string Plugin::GetFileName() const -{ - return m_fileName; -} - -void Plugin::OnWidgetStart(int widgetId, - java_script_context_t context, - const engine_interface_t *interface) -{ - m_apiOnWidgetStart(widgetId, context, interface); -} - -void Plugin::OnWidgetStop(int widgetId) -{ - m_apiOnWidgetStop(widgetId); -} - -const Plugin::ClassPtrList Plugin::GetClassList() const -{ - return m_apiClassList; -} diff --git a/src/plugin-service/plugin-loading/plugin.h b/src/plugin-service/plugin-loading/plugin.h deleted file mode 100644 index 96872a1..0000000 --- a/src/plugin-service/plugin-loading/plugin.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of plugin - */ -#ifndef WRT_SRC_PLUGIN_SERVICE_PLUGIN_H_ -#define WRT_SRC_PLUGIN_SERVICE_PLUGIN_H_ - -#include -#include -#include -#include -#include -#include -#include -#include - -class Plugin; -typedef DPL::SharedPtr PluginPtr; - -class Plugin : private DPL::Noncopyable -{ - public: - typedef JSObjectDeclaration Class; - typedef JSObjectDeclarationPtr ClassPtr; - typedef std::list ClassList; - typedef DPL::SharedPtr ClassPtrList; - - private: - ///< Plug-in identifier. Currently plug-in file name is used as the ID - std::string m_fileName; - - ///< Handle for the plug-in library. A plug-in is a dynamic loadable library - void* m_libHandle; - - // Plugin API - on_widget_start_proc m_apiOnWidgetStart; - on_widget_stop_proc m_apiOnWidgetStop; - const ClassPtrList m_apiClassList; - - Plugin(const std::string &fileName, - void *libHandle, - on_widget_start_proc apiOnWidgetStart, - on_widget_stop_proc apiOnWidgetStop, - const ClassPtrList &apiClassList); - - public: - virtual ~Plugin(); - - // Loading - static PluginPtr LoadFromFile(const std::string &fileName); - - // Filename - std::string GetFileName() const; - - // API - void OnWidgetStart(int widgetId, - java_script_context_t context, - const engine_interface_t *interface); - void OnWidgetStop(int widgetId); - const ClassPtrList GetClassList() const; -}; - -#endif // PLUGIN_H diff --git a/src/plugin-service/plugin-loading/plugin_iframe_support.cpp b/src/plugin-service/plugin-loading/plugin_iframe_support.cpp deleted file mode 100644 index 0070428..0000000 --- a/src/plugin-service/plugin-loading/plugin_iframe_support.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_iframe_support.cpp - * @version 1.0 - * @brief - */ - -#include "plugin_iframe_support.h" - -#include - -void IframesSupport::registerDeclaration( - const JSObjectDeclarationPtr& declaration) -{ - LogDebug("Registration iframes-supported plugins " << - declaration->getName()); - - if(declaration->getParentName().find('.') != std::string::npos) - { - LogWarning("The object will not be loaded to iframes"); - return; - } - m_iframesObjects.push_back(declaration); -} - -void IframesSupport::registerIframe(const JSObjectPtr& iframe){ - LogDebug("LoadedIframes size: " << m_loadedIframes.size() ); - m_loadedIframes.insert(iframe); -} - -void IframesSupport::invokeCallbackForMainFrame( - WebkitInterface::WebkitContext ctx, - const JSObjectDeclarationPtr& declaration, - const JSObjectPtr& objectInstance) -{ - LogDebug("Invoke callback for main frame"); - JSObjectPtr globalObject = - WebkitInterfaceSingleton::Instance().getGlobalObject(ctx); - - if(!declaration->getOptions()) - { - LogError("Registration started but option field is null"); - return; - } - - auto iframeNotice = declaration->getOptions()->getIframeNotice(); - - typedef JSObjectDeclaration::Options JO; - - if(iframeNotice == JO::IFrameNotice::AlwaysNotice) - { - LogDebug("Notice plugin"); - declaration->getOptions()->invokeCallback( - ctx, globalObject->getObject(), objectInstance->getObject()); - } -} - -JSObjectPtr IframesSupport::findNewIframe( - const WebkitInterface::ObjectsListPtr& allIframes) -{ - LogDebug("Find new iframe"); - //first, check if the iframe is not on the tail of the list - auto it = allIframes->rbegin(); - if(it==allIframes->rend()){ - return JSObjectPtr(); - } - - //It is assumed that only one new iframe is loaded - auto it_loaded = m_loadedIframes.find(*it); - //object not found, so thats the new iframe - if(it_loaded == m_loadedIframes.end()){ - LogDebug("New iframe found"); - return *it; - } - - LogDebug("searching new iframe deeper"); - FOREACH(it_l, *allIframes) - { - if(m_loadedIframes.find(*it_l) != m_loadedIframes.end()) - { - continue; - } - return *it_l; - } - - return JSObjectPtr(); -} - -void IframesSupport::addObjectToIframe(WebkitInterface::WebkitContext ctx, - const JSObjectPtr& iframe) -{ - LogDebug("Add objects to iframe: " << iframe->getObject()); - FOREACH(decl, m_iframesObjects) - { - addObjectToIframe(ctx, iframe, *decl); - } -} - -JSObjectPtr IframesSupport::addObjectToIframe(WebkitInterface::WebkitContext ctx, - const JSObjectPtr& iframe, - const JSObjectDeclarationPtr& object) -{ - LogDebug("Add object " << object->getName() << - " to iframe " << iframe->getObject()); - - auto iframeObject = object->getOptions()->getIframeObject(); - typedef JSObjectDeclaration::Options JO; - - JSObjectPtr objectInstance; - - if (iframeObject == JO::IFrameObject::Reference) - { - LogDebug("Object: " << object->getName() - << " will be Referenced to iframe"); - objectInstance = WebkitInterfaceSingleton::Instance(). - copyObjectToIframe(ctx, iframe, object->getName()); - } - else if(iframeObject == JO::IFrameObject::CreateInstance) - { - LogDebug("Object: " << object->getName() - << " will be created to iframe"); - - - if (object->getOptions()->getType() == JO::ClassType::Function) - { - JSObjectPtr overlay = - WebkitInterfaceSingleton::Instance(). - createObject(ctx, object); - - JSObjectPtr original = - WebkitInterfaceSingleton::Instance(). - getJSObjectProperty(ctx,iframe, object->getName()); - - objectInstance = - WebkitInterfaceSingleton::Instance(). - createOverlayedFunction(ctx, - original, - overlay, - object->getName() - ); - - } - else - { - objectInstance = WebkitInterfaceSingleton::Instance(). - createObject(ctx, object); - } - - WebkitInterfaceSingleton::Instance().setObjectProperty( - ctx, - iframe, - object->getName(), - objectInstance); - } - - //notice - auto iframeNotice = object->getOptions()->getIframeNotice(); - if (iframeNotice == JO::IFrameNotice::AlwaysNotice) - { - object->getOptions()->invokeCallback(ctx, - iframe->getObject(), - objectInstance->getObject()); - } - - return objectInstance; -} diff --git a/src/plugin-service/plugin-loading/plugin_iframe_support.h b/src/plugin-service/plugin-loading/plugin_iframe_support.h deleted file mode 100644 index ffd8c1d..0000000 --- a/src/plugin-service/plugin-loading/plugin_iframe_support.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_iframe_support.h - * @version 1.0 - * @brief - */ - -#ifndef _WRTENGINE_SRC_PLUGINSERVICE_IFRAME_SUPPORT_H_ -#define _WRTENGINE_SRC_PLUGINSERVICE_IFRAME_SUPPORT_H_ - -#include -#include -#include "js_object_declaration.h" -#include "js_object.h" -#include "webkit_interface.h" - -class IframesSupport -{ - public: - void registerDeclaration(const JSObjectDeclarationPtr& declaration); - - void registerIframe(const JSObjectPtr& iframe); - - void invokeCallbackForMainFrame(WebkitInterface::WebkitContext ctx, - const JSObjectDeclarationPtr& declaration, - const JSObjectPtr& objectInstance); - - JSObjectPtr findNewIframe( - const WebkitInterface::ObjectsListPtr& allIframes); - - void addObjectToIframe(WebkitInterface::WebkitContext ctx, - const JSObjectPtr& iframe); - - JSObjectPtr addObjectToIframe(WebkitInterface::WebkitContext ctx, - const JSObjectPtr& iframe, - const JSObjectDeclarationPtr& object); - - private: - std::list m_iframesObjects; - std::set m_loadedIframes; -}; - -#endif diff --git a/src/plugin-service/plugin-loading/plugin_logic.cpp b/src/plugin-service/plugin-loading/plugin_logic.cpp deleted file mode 100644 index 22df1b7..0000000 --- a/src/plugin-service/plugin-loading/plugin_logic.cpp +++ /dev/null @@ -1,689 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_logic.cpp - * @author Piotr Fatyga (p.fatyga@samsung.com) - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of plugin and - * feature loading routines - * @brief This code is intended to work behind view controller - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace WrtDB; - -namespace { -const char *STANDARD_FEATURES_LIST_FILE = "standard-features-list"; -const char *LIBRARY_PATH_SEPARATOR = "/"; -const char *SCALE_PROPERTY_NAME = "scale"; -} - - -IMPLEMENT_SINGLETON(PluginLogic); - -PluginLogic::PluginLogic() : - m_sessionStarted(false) -{ - LogDebug("Initializing Plugin Logic..."); - - // Retrieve plugin model list - readPlugins(); - - // Retrieve features model list - readFeatures(); - - // Reading standard features list from file - readStandardFeaturesList(); -} - -PluginLogic::~PluginLogic() -{ - Assert(!m_sessionStarted && "Must stop widget session before exit!"); - - LogDebug("Deinitializing plugin Logic..."); - - // Remove all plugin models - m_pluginModels.clear(); - - // Remove all feature models - m_featureModels.clear(); - - // Clear standard features list - m_standardFeatureList.clear(); -} - -bool PluginLogic::addPluginToSession(const PluginPtr& plugin) -{ - LogInfo("Adding Plugin '" << plugin->GetFileName() << - "' to session of widget '" << m_widgetHandle << "'"); - - if (isLoaded(plugin)) { - LogWarning("Loading Feature " << plugin->GetFileName() << - " IGNORED. Plugin already loaded"); - return false; - } - - LogDebug("Registering first feature from plugin."); - - // Save plugin to map - m_loadedPlugins.insert(plugin); - - // This is first time for this plugin, start widget session - plugin->OnWidgetStart( - m_widgetHandle, - WebkitInterfaceSingleton::Instance().getGlobalContext(m_view), - m_engineInterface.Get()); - - LogDebug("Emitted WidgetStart for plugin: " << plugin->GetFileName()); - - // Add feature to list - m_objectExplorer->printDebug(); - - // Register new class - FOREACH(it, *(plugin->GetClassList())) - { - m_objectExplorer->printDebug(); - - if (!m_objectExplorer->registerObject(*it)) { - LogError("Object Registration failed : " << (*it)->getName()); - } - } - - LogDebug("Registered feature."); - - return true; -} - -void PluginLogic::addStandardFeaturesToSession() -{ - LogInfo("Installing standard widget features..."); - - //add standard functions - FOREACH(it, *JsFunctionManagerSingleton::Instance().GetFunctions()) - { - m_objectExplorer->registerFunction(*it); - } - - //add standard objects - LogDebug("Installing standard extensions..."); - - FOREACH(it, m_standardFeatureList) - { - FeatureModelPtr feature = findFeatureModel(*it); - if (!feature) { - LogWarning("This feature does not exist in Plugin DB"); - continue; - } - - loadFeatureToSession(feature); - } - - LogInfo("Standard widget features installed."); -} - -bool PluginLogic::loadPluginDependencies(DbPluginHandle pluginHandle, - bool rootObjectOnly) -{ - LogDebug("Instaling dependencies"); - PluginModelPtr pluginModel = findPluginModel(pluginHandle); - if (!pluginModel) { - LogError("ERROR. Plugin model not found. Dont know what to do."); - return false; - } - - if (!pluginModel->LibraryDependencies.Get()) { - LogInfo("Plugin has no dependencies"); - return true; - } - - PluginHandleSetPtr dependencies = pluginModel->LibraryDependencies.Get(); - LogInfo("Number of required dependencies " << dependencies->size()); - - FOREACH(dependency, *dependencies) - { - if (rootObjectOnly) { - ImplementedObjectsList implObjs = - PluginDAOReadOnly::getImplementedObjectsForPluginHandle( - *dependency); - bool rootObject = false; - FOREACH(obj, implObjs) - { - /* This can be optimalized, but would need extra data in - database. There should be a list of features that are - allowed to be installed at widget start */ - if (obj->find(".") == obj->rfind(".")) { - rootObject = true; - break; - } - } - if (!rootObject) { - LogWarning("Ignore dependency"); - continue; - } - } - - if (!loadPluginDependencies(*dependency, rootObjectOnly)) { - LogError("Failed to load dependencies"); - return false; - } - - PluginModelPtr requiredModel = findPluginModel(*dependency); - if (!requiredModel) { - LogError("ERROR. Plugin model not found."); - return false; - } - - //get library instance from model - PluginPtr depPlugin = loadLibrary(requiredModel); - if (!depPlugin) { - LogError("Plugin model NOT found for: " << *dependency); - return false; - } - - if (isLoaded(depPlugin)) { - LogInfo("Plugin already loaded"); - continue; - } - - // Load feature - addPluginToSession(depPlugin); - } - return true; -} - -void PluginLogic::addSpecialFeaturesToSession() -{ - LogInfo("Installing special widget features..."); - - //TODO it have to return LIST NOT SET!!! - WidgetDAOReadOnly widgetDao(m_widgetHandle); - DbWidgetFeatureSet features = widgetDao.getFeaturesList(); - - FOREACH(it, features) - { - if (checkNonStandardSupportRequired(DPL::ToUTF8String(it->name))) { - activateNonStandardFeature(*it); - continue; - } - - ImplementedObjectsList implObjs = - PluginDAOReadOnly::getImplementedObjectsForPluginHandle( - it->pluginId); - bool rootObject = false; - FOREACH(obj, implObjs) - { - /* This can be optimalized, but would need extra data in database. - There should be a list of features that are allowed to be - installed at widget start */ - if (obj->find(".") == obj->rfind(".")) { - rootObject = true; - break; - } - } - if (!rootObject) { - loadPluginDependencies(it->pluginId, true); - LogWarning("Ignore feature " << it->name); - continue; - } - - LogDebug("Installing feature : " << it->name); - - FeatureModelPtr feature = findFeatureModel(DPL::ToUTF8String(it->name)); - if (!feature) { - LogWarning("This feature does not exist in Plugin DB"); - continue; - } - - loadFeatureToSession(feature); - } - - LogInfo("Special widget features installed."); -} - -void PluginLogic::addSpecialFeatureToSession( - const WrtDB::DbWidgetFeature &widgetFeature) -{ - if (!m_sessionStarted) { - LogError("Session not started"); - return; - } - - LogDebug("Installing feature : " << widgetFeature.name); - - FeatureModelPtr feature = findFeatureModel( - DPL::ToUTF8String(widgetFeature.name)); - if (!feature) { - LogWarning("This feature does not exist in Plugin DB"); - return; - } - - loadFeatureToSession(feature); -} - -// This is maintained temporarily for Web UI Framework. -void PluginLogic::addScalePropertyToWindowObject(double scaleFactor) -{ - LogInfo("Scale Factor by plugin-service : " << scaleFactor); - // add extented property of window JSObject for scale factor - JSGlobalContextRef context = - static_cast( - WebkitInterfaceSingleton::Instance().getGlobalContext(m_view)); - JSObjectRef globalObject = JSContextGetGlobalObject(context); - // To use the following code only in case of child object of 'window' - //JSStringRef childString = JSStringCreateWithUTF8CString("child"); - //JSValueRef child = JSObjectGetProperty(context, globalObject, childString , NULL); - //JSObjectRef childObject = JSValueToObject(context, child, NULL); - JSStringRef scaleString = JSStringCreateWithUTF8CString(SCALE_PROPERTY_NAME); - JSObjectSetProperty(context, globalObject, scaleString, - JSValueMakeNumber(context, scaleFactor), - kJSPropertyAttributeReadOnly, - NULL); -} - -void PluginLogic::startSession(int widgetHandle, - WebkitInterface::WebkitView view, - const engine_interface_t &engineInterface, - double scaleFactor) -{ - LogInfo("Starting widget session..."); - - // Check if corresponding session if not already created - if (m_sessionStarted) { - LogWarning("Session already started!"); - return; - } - - // Create js object explorer object - ExplorerPtr explorer(new Explorer( - WebkitInterfaceSingleton::Instance().getGlobalContext(view))); - - m_sessionStarted = true; - m_widgetHandle = widgetHandle; - m_objectExplorer = explorer; - m_loadedPlugins.clear(); - m_engineInterface.Reset(new engine_interface_t(engineInterface)); - m_view = view; - - // Register standard features - addStandardFeaturesToSession(); - - // Register special features - addSpecialFeaturesToSession(); - - // Add scale property to 'windown' object - // This is maintained temporarily for Web UI Framework. - addScalePropertyToWindowObject(scaleFactor); - - LogInfo("Widget session started."); -} - -void PluginLogic::stopSession() -{ - LogInfo("Stopping widget session..."); - - if (!m_sessionStarted) { - LogWarning("Session not started!"); - return; - } - - unloadPluginsFromSession(); - - // Erase widget session - Assert(m_loadedPlugins.empty()); - - m_sessionStarted = false; - - LogInfo("Widget session stopped."); -} - -PluginPtr PluginLogic::findPlugin(const FeatureModelPtr &feature) -{ - LogDebug("Feature located in plugin: " << feature->PHandle.Get()); - PluginModelPtr pluginModel = findPluginModel(feature->PHandle.Get()); - - if (!pluginModel) { - LogError("PluginModel not found"); - return PluginPtr(); - } - - return loadLibrary(pluginModel); -} - -void PluginLogic::unloadPluginsFromSession() -{ - LogDebug("Unload plugins from session"); - - FOREACH(pluginIt, m_loadedPlugins) - { - LogDebug("Unregistering plugin " << (*pluginIt)->GetFileName()); - - (*pluginIt)->OnWidgetStop(m_widgetHandle); - LogDebug("Emitted WidgetStop for plugin: " << - (*pluginIt)->GetFileName()); - - - // Deregister class - FOREACH(it, *((*pluginIt)->GetClassList())) - { - LogDebug("Deregister object " << (*it)->getName()); - if (!m_objectExplorer->deregisterObject(*it)) { - LogError("Object Deregistration failed : " << (*it)->getName()); - } - } - - } - - m_loadedPlugins.clear(); -} - -void PluginLogic::readPlugins() -{ - LogDebug("Retrieving installed plugin list..."); - PluginHandleList plugins = PluginDAOReadOnly::getPluginHandleList(); - PluginHandleList::const_iterator pIter; - - FOREACH(it, plugins) - { - registerPluginModel(*it); - } -} - -void PluginLogic::readFeatures() -{ - FOREACH(pluginIt, m_pluginModels) - { - PluginModelPtr model = *pluginIt; - LogDebug("Analyzing Plugin model: " << model->Handle.Get()); - - FeatureHandleListPtr featureHandles = model->FeatureHandles.Get(); - FOREACH(featureIt, *featureHandles) - { - LogDebug("Analyzing feature: " << *featureIt); - registerFeatureModel(*featureIt, model->Handle.Get()); - } - } -} - -void PluginLogic::readStandardFeaturesList() -{ - LogDebug("Reading standard features list from file..."); - - std::string path = GlobalConfig::GetDevicePluginPath(); - path += "/"; - path += STANDARD_FEATURES_LIST_FILE; - - std::ifstream standardFeatureFile; - standardFeatureFile.open(path.c_str(), std::ifstream::in); - - if (!standardFeatureFile.is_open()) { - LogError("Reading standard features list from file FAILED."); - return; - } - - char buffer[1024]; - - while (!standardFeatureFile.eof()) { - standardFeatureFile.getline(buffer, sizeof(buffer)); - - if (buffer[0] == '\0') { - break; - } - - LogDebug("Standard Feature: <" << buffer << ">"); - m_standardFeatureList.push_back(std::string(buffer)); - } - - standardFeatureFile.close(); -} - -void PluginLogic::registerPluginModel(DbPluginHandle handle) -{ - PluginModelPtr model = findPluginModel(handle); - - if (model) { - LogDebug("Model for plugin:" << handle << " already registered"); - return; - } - - LogDebug("Creating Model for plugin: " << handle); - - if (PluginDAOReadOnly::getInstallationStateForHandle(handle) - != PluginDAOReadOnly::INSTALLATION_COMPLETED) - { - LogWarning("Failed To CreateModel for handle " << handle); - return; - } - - model.Reset(new PluginModel(handle)); - - LogInfo("Model Created. Handle: " << - handle << ", name: " << model->LibraryName.Get()); - - m_pluginModels.insert(model); -} - -void PluginLogic::registerCustomFeatures(DbPluginHandle handle) -{ - PluginModelPtr model = findPluginModel(handle); - LogDebug("Registering custom features for plugin model"); - - if (!model) { - //TODO - //check Installation status before creation - it shouldnt happen but .. - registerPluginModel(handle); - model = findPluginModel(handle); - } - - if (!model) { - LogWarning( - "Cannot register custom features. Plugin modelcannot be created!"); - return; - } - - FeatureHandleListPtr featureHandles = model->FeatureHandles.Get(); - FOREACH(featureIt, *featureHandles) - { - LogInfo("Plugin: " << handle << " Feature: " << *featureIt); - registerFeatureModel(*featureIt, model->Handle.Get()); - } -} - -void PluginLogic::registerFeatureModel(FeatureHandle featureHandle, - WrtDB::DbPluginHandle pluginHandle) -{ - FeatureModelPtr model = findFeatureModel(featureHandle); - - if (model) { - LogDebug("Model for feature:" << featureHandle << " already created"); - return; - } - - LogDebug("Creating Model for feature:" << featureHandle); - - // Create new model - model.Reset(new FeatureModel(featureHandle)); - - // Read DAO data - FeatureDAOReadOnly dao(featureHandle); - // PluginHandle pluginHandle = dao.GetPluginHandle(); - - model->Name.Set(dao.GetName()); - model->DeviceCapabilities.Set(dao.GetDeviceCapabilities()); - model->PHandle.Set(pluginHandle); - - // Insert new model into map - m_featureModels.insert(model); -} - -FeatureModelPtr PluginLogic::findFeatureModel(const std::string &name) -{ - FOREACH(iter, m_featureModels) - { - if ((*iter)->Name.Get() == name) { - return *iter; - } - } - - return FeatureModelPtr(); -} - -FeatureModelPtr PluginLogic::findFeatureModel(const FeatureHandle handle) -{ - FOREACH(iter, m_featureModels) - { - if ((*iter)->FHandle.Get() == handle) { - return *iter; - } - } - - return FeatureModelPtr(); -} - -PluginModelPtr PluginLogic::findPluginModel(DbPluginHandle handle) -{ - FOREACH(pluginModel, m_pluginModels) - { - if ((*pluginModel)->Handle.Get() == handle) { - return *pluginModel; - } - } - - return PluginModelPtr(); -} - -void PluginLogic::performLibrariesUnload() -{ - LogDebug("Perform library unload"); - - size_t unloadedLibraries = 0; - - FOREACH(pluginIt, m_pluginModels) - { - LogDebug("Preparing library: " << (*pluginIt)->LibraryName.Get()); - - PluginPtr plugin = (*pluginIt)->LibraryInstance.Get(); - if (!plugin) { - LogWarning("Library not loaded " << (*pluginIt)->LibraryName.Get()); - continue; - } - unloadedLibraries++; - (*pluginIt)->LibraryInstance.Set(PluginPtr()); - } - - LogInfo("unloaded " << unloadedLibraries << " unreferenced libraries!"); -} - -bool PluginLogic::checkNonStandardSupportRequired( - const std::string &featureName) const -{ - /* currently we have just one feature which require special behaviour */ - return featureName == GlobalConfig::GetW3CGeolocationFeatureName(); -} - -void PluginLogic::activateNonStandardFeature( - const WrtDB::DbWidgetFeature& feature) -{ - string featureName = DPL::ToUTF8String(feature.name); - - if (featureName == GlobalConfig::GetW3CGeolocationFeatureName()) { - LogDebug("Geolocation will be enabled for widget"); - - if (!m_view) { - LogError("Error widget view is NULL"); - return; - } - - WebkitInterfaceSingleton::Instance().setGeolocation(m_view, true); - } -} - -void PluginLogic::loadFeatureToSession(const FeatureModelPtr& feature) -{ - PluginPtr plugin = findPlugin(feature); - if (!plugin) { - LogWarning("Cannot load plugin for feature: " << feature->Name.Get()); - return; - } - if (isLoaded(plugin)) { - LogInfo("Plugin already loaded"); - return; - } - - if (!loadPluginDependencies(feature->PHandle.Get())) { - LogError("Failed to load one of the dependencies for: " << - feature->Name.Get() << " some feature may not work"); - } - - // Load feature - addPluginToSession(plugin); -} - -bool PluginLogic::isLoaded(const PluginPtr& plugin) -{ - //check if feature is already loaded for session - return m_loadedPlugins.find(plugin) != m_loadedPlugins.end(); -} - -PluginPtr PluginLogic::loadLibrary(PluginModelPtr& pluginModel) -{ - PluginPtr pluginLib = pluginModel->LibraryInstance.Get(); - if (!pluginLib) { - std::string path = pluginModel->LibraryPath.Get() + - std::string(LIBRARY_PATH_SEPARATOR) + - pluginModel->LibraryName.Get(); - pluginLib = Plugin::LoadFromFile(path); - } - - if (!pluginLib) { - LogError("Loading library failed"); - } else { - pluginModel->LibraryInstance.Set(pluginLib); - } - - return pluginLib; -} - -void PluginLogic::loadPluginsIntoIframes() -{ - LogDebug("Load plugins into iframes"); - - m_objectExplorer->loadPluginsIntoIframes(); -} diff --git a/src/plugin-service/plugin-loading/plugin_logic.h b/src/plugin-service/plugin-loading/plugin_logic.h deleted file mode 100644 index aa09c4b..0000000 --- a/src/plugin-service/plugin-loading/plugin_logic.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_logic.h - * @author Piotr Fatyga (p.fatyga@samsung.com) - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of plugin and feature - * loading routines - * @brief This code is intended to work behind view controller - */ -#ifndef PLUGIN_LOGIC_H -#define PLUGIN_LOGIC_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class PluginLogic -{ - private: - typedef std::set LoadedPlugins; - - ///< Widget handle using this session - int m_widgetHandle; - - ///< JS object explorer for this session - ExplorerPtr m_objectExplorer; - - ///< All loaded plugins. Each one must be unloaded. Plugins means - //set of features connected with such plugin (library) - LoadedPlugins m_loadedPlugins; - - ///< Engine interface for this session - DPL::ScopedPtr m_engineInterface; - - //view for this session - WebkitInterface::WebkitView m_view; - - bool m_sessionStarted; - - // Main plugin list. Always equal to DB plugin list - typedef std::set PluginModelsContainer; - PluginModelsContainer m_pluginModels; - - // Main feature list. Always equal to DB feature list - typedef std::set FeatureModelContainer; - FeatureModelContainer m_featureModels; - - // Standard features - typedef std::list StandardFeatureList; - StandardFeatureList m_standardFeatureList; - - PluginPtr findPlugin(const WrtDB::FeatureModelPtr &feature); - - PluginPtr loadLibrary(PluginModelPtr& pluginModel); - - // Installing feature routines - void addStandardFeaturesToSession(); - void addSpecialFeaturesToSession(); - void addScalePropertyToWindowObject(double scaleFactor); - bool checkNonStandardSupportRequired(const std::string &featureName) const; - bool loadPluginDependencies(WrtDB::DbPluginHandle pluginHandle, - bool rootObjectOnly = false); - void activateNonStandardFeature(const WrtDB::DbWidgetFeature &feature); - void loadFeatureToSession(const WrtDB::FeatureModelPtr& feature); - - void unloadPluginsFromSession(); - /** - * add feature to session - * @return true if feature was add - * false otherwise - */ - bool addPluginToSession(const PluginPtr& plugin); - - bool isLoaded(const PluginPtr& plugin); - - // Plugin models - void registerPluginModel(WrtDB::DbPluginHandle handle); - - PluginModelPtr findPluginModel(WrtDB::DbPluginHandle handle); - - // Feature models - void registerFeatureModel(WrtDB::FeatureHandle handle, - WrtDB::DbPluginHandle pluginHandle); - - WrtDB::FeatureModelPtr findFeatureModel(const std::string &name); - WrtDB::FeatureModelPtr findFeatureModel(WrtDB::FeatureHandle handle); - - // Reading - void readPlugins(); - void readFeatures(); - void readStandardFeaturesList(); - - public: - virtual ~PluginLogic(); - - // Widget session - void startSession(int widgetHandle, - WebkitInterface::WebkitView view, - const engine_interface_t &engineInterface, - double scaleFactor); - - void stopSession(); - - void performLibrariesUnload(); - - void registerCustomFeatures(WrtDB::DbPluginHandle handle); - - void addSpecialFeatureToSession(const WrtDB::DbWidgetFeature &widgetFeature); - - void loadPluginsIntoIframes(); - - private: - PluginLogic(); - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton PluginLogicSingleton; - -#endif // PLUGIN_LOGIC_H diff --git a/src/plugin-service/plugin-loading/plugin_model.cpp b/src/plugin-service/plugin-loading/plugin_model.cpp deleted file mode 100644 index 8fea239..0000000 --- a/src/plugin-service/plugin-loading/plugin_model.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_model.cpp - * @author Pawel Sikorski (p.sikorski@samgsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samgsung.com) - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief This file contains PluginModel, PluginHandle definitions. - */ - -#include "plugin_model.h" -#include -#include - -using namespace WrtDB; - -template -struct BindToPluginDAO : - DPL::Event::BindToDAO -{ -}; - -template -struct BindToFeatureDAOStatic : - DPL::Event::BindToDAO_Static -{ -}; - -PluginModel::PluginModel(const WrtDB::DbPluginHandle& handle) : - Handle(this, handle), - LibraryName(this, - BindToPluginDAO::Get), - LibraryPath(this, - BindToPluginDAO::Get), - FeatureHandles(this, - BindToFeatureDAOStatic::Get), - LibraryDependencies(this, - BindToPluginDAO::Get), - LibraryInstance(this, PluginPtr()), - InstallURI(this, - BindToPluginDAO::Get), - KeyCn(this, BindToPluginDAO::Get), - RootKey(this, - BindToPluginDAO::Get), - RootKeyFingerprint(this, - BindToPluginDAO::Get) -{ -} - -WrtDB::DbPluginHandle PluginModel::getHandle() const -{ - return Handle.Get(); -} - -bool PluginModel::operator< (const PluginModel& obj) const -{ - return obj.Handle.Get() < Handle.Get(); -} diff --git a/src/plugin-service/plugin-loading/plugin_model.h b/src/plugin-service/plugin-loading/plugin_model.h deleted file mode 100644 index f721f9d..0000000 --- a/src/plugin-service/plugin-loading/plugin_model.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_model.h - * @author Pawel Sikorski (p.sikorski@samgsung.com) - * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com) - * @version - * @brief This file contains PluginModel, PluginHandle definitions. - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_PLUGIN_MODEL_H_ -#define WRT_SRC_PLUGIN_SERVICE_PLUGIN_MODEL_H_ - -#include -#include -#include -#include -#include - -#include -#include -#include - -class PluginModel; - -class PluginModel : public DPL::Event::Model -{ - public: - - /** - *@brief Plugin handle - */ - DPL::Event::Property Handle; - - /** - *@brief LibraryName - */ - DPL::Event::Property LibraryName; - - /** - *@brief Library Path - */ - DPL::Event::Property LibraryPath; - - /** - *@brief Feature set - */ - DPL::Event::Property FeatureHandles; - - /** - *@brief Librarydepencies - */ - DPL::Event::Property LibraryDependencies; - - /** - *@brief Library instance Low Level - * */ - DPL::Event::Property LibraryInstance; - - /** - *@brief InstallUri - */ - DPL::Event::Property InstallURI; - - /** - *@brief RootKeyCN - */ - DPL::Event::Property KeyCn; - - /** - *@brief RootKey - */ - DPL::Event::Property RootKey; - - /** - *@brief RootKeyFingerprint - */ - DPL::Event::Property RootKeyFingerprint; - - public: - PluginModel(const WrtDB::DbPluginHandle& handle); - - bool operator< (const PluginModel& obj) const; - - private: - WrtDB::DbPluginHandle getHandle() const; -}; - -typedef DPL::SharedPtr PluginModelPtr; - -#endif diff --git a/src/plugin-service/plugin-loading/webkit_interface.h b/src/plugin-service/plugin-loading/webkit_interface.h deleted file mode 100644 index 8f91e20..0000000 --- a/src/plugin-service/plugin-loading/webkit_interface.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file WebkitInterface.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Piotr Fatyga (p.fatyga@samsung.com) - * @version 0.1 - * @brief - */ -#ifndef WRT_SRC_PLUGIN_SERVICE_WEBKIT_INTERFACE_H_ -#define WRT_SRC_PLUGIN_SERVICE_WEBKIT_INTERFACE_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class WebkitInterface : DPL::Noncopyable -{ - public: - typedef void *WebkitView; - typedef void *WebkitContext; - typedef std::vector PropertiesList; - - typedef std::list ObjectsList; - typedef std::shared_ptr ObjectsListPtr; - - public: - WebkitContext getGlobalContext(WebkitView webkitView); - - JSObjectPtr getGlobalObject(WebkitContext context); - - // object creation - JSObjectPtr createObject(WebkitContext context, - const JSObjectDeclarationPtr& declaration); - - JSObjectPtr createFunctionInstance(WebkitContext context, - const JSFunctionDeclarationPtr& function); - - //properties - void setObjectProperty(WebkitContext context, - const JSObjectPtr& parentObject, - const std::string &propertyName, - const JSObjectPtr& propertyObject); - - void removeObjectProperty(WebkitContext context, - const JSObjectPtr& parentObject, - const std::string &propertyName); - - PropertiesList getObjectPropertiesList(WebkitContext context, - const JSObjectPtr& object) const; - - void setGeolocation(WebkitView webkitView, - bool state); - - JSObjectPtr copyObjectToIframe( - WebkitInterface::WebkitContext context, - const JSObjectPtr& iframe, - const std::string& name); - - JSObjectPtr createOverlayedFunction(WebkitContext ctx, - const JSObjectPtr& originalFunction, - const JSObjectPtr& overlayFunction, - const std::string& name) const; - - ObjectsListPtr getIframesList(WebkitContext context) const; - - JSObjectPtr getJSObjectProperty(WebkitContext ctx, - const JSObjectPtr& frame, - const std::string& name) const; - - private: - WebkitInterface() - { - } - - friend class DPL::Singleton; -}; - -typedef DPL::Singleton WebkitInterfaceSingleton; - -#endif // _WEBKITINTERFACE_H diff --git a/src/plugin-service/plugin-loading/wrt_plugin_export.h b/src/plugin-service/plugin-loading/wrt_plugin_export.h deleted file mode 100755 index 7b5522c..0000000 --- a/src/plugin-service/plugin-loading/wrt_plugin_export.h +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_plugin_export.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for plugin export API - */ -#ifndef WRT_PLUGIN_EXPORT_H -#define WRT_PLUGIN_EXPORT_H - -#include - -/** - * Widget handle type - */ -typedef int widget_handle_t; - -/** - * Invalid Widget handle - */ -#define INVALID_WIDGET_HANDLE (-1) - -/** - * Parameter which should be used during policy evaluation. - */ -typedef struct ace_param_s -{ - const char *name; - const char *value; -} ace_param_t; - -/** - * List of additional parameters which should be used during policy evaluation. - */ -typedef struct ace_param_list_s -{ - size_t count; - ace_param_t *param; -} ace_param_list_t; - -/** - * Contains list of device capabilities. Each device capability may have - * associated list of function params. - */ -typedef struct ace_device_cap_s -{ - size_t devcapsCount; - const char** dev_cap_names; - size_t paramsCount; - ace_param_list_t* params; -} ace_device_cap_t; - -/** - * List of device capabilities which must be check. - */ -typedef struct ace_device_capabilities_s -{ - size_t count; - const char **device_cap; -} ace_device_capabilities_t; - -/** - * List of api features that must be checked - */ -typedef struct ace_api_features_s -{ - size_t count; - const char **api_feature; -} ace_api_features_t; - -/** - * Data from request will be used to evaluate policy file. - */ -typedef struct ace_request_s -{ - widget_handle_t widget_handle; - const char* feature_api; - const char* function_name; - ace_device_capabilities_t device_capabilities; - ace_param_list_t param_list; -} ace_request_t; - -/** - * Data from request will be used to evaluate policy file. - */ -typedef struct ace_request_2_s -{ - widget_handle_t widget_handle; - ace_api_features_t api_features; - const char* function_name; - ace_device_cap_t device_capabilities; -} ace_request_2_t; - -/** - * info returned by plugin_api_check_access - */ -#define PLUGIN_API_ACCESS_GRANTED 1 -#define PLUGIN_API_ACCESS_DENIED 0 -#define PLUGIN_API_ACCESS_ERROR -1 - - -typedef const void* java_script_context_t; - -typedef struct js_object_properties_s -{ - size_t count; - char** properties; -} js_object_properties_t; - -/* - * Camera API - * */ -typedef void* camera_object; -typedef enum { - CAMERA_TYPE_FRONT, - CAMERA_TYPE_REAR, - CAMERA_TYPE_UNKNOWN -} camera_type; -typedef void* camera_node; -typedef int camera_operation; -typedef void (*camera_capture_success_cb) (const char* filename, void*); -typedef void (*camera_error_cb) (int errorcode, void* userData); -typedef void (*camera_preview_success_cb) (const camera_node element, void*); -typedef void (*camera_set_pending_operation)(camera_operation, - void* private_data); - -struct webkit_camera -{ - camera_object camera; - camera_type type; -}; - -struct webkit_cameras_array -{ - size_t size; - webkit_camera* webkit_cameras; -}; - -/* - * Functions provided by WRT-Engine (to be used from plugin). - * It's passed in on_widget_start callback. - * If some entry is NULL - the corresponding function is not allowed - * by the engine. - */ -typedef struct engine_interface_s -{ - /** - * For a given widget, checks access status to a plugin function. Security - * check is evaluated basing on device-caps - * - * @return PLUGIN_API_ACCESS_GRANTED - access to the function is granted - * PLUGIN_API_ACCESS_DENIED - access to the function is denied - * PLUGIN_API_ACCESS_ERROR - internal error in wrt occured - */ - int (*wrt_check_access2)(const ace_request_2_t *ace_request); - - /** - * Camera API - * */ - void (*wrt_camera_free_webkit_cameras)(webkit_cameras_array* cameras); - - webkit_cameras_array* (*wrt_camera_get_cameras)( - widget_handle_t widgetHandle); - - int (*wrt_camera_remove_camera)(widget_handle_t widgetHandle, - camera_object camera); - - int (*wrt_camera_create_preview_node)( - widget_handle_t widgetHandle, - camera_object camera, - camera_preview_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation operation, - void* data); - - int (*wrt_camera_capture_image)(widget_handle_t widgetHandle, - camera_object camera, - const char* filename, - int highRes, - camera_capture_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation operation, - void* data); - - int (*wrt_camera_start_video_capture)( - widget_handle_t widgetHandle, - camera_object camera, - const char* filename, - int highRes, - camera_capture_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation operation, - void* data); - - int (*wrt_camera_stop_video_capture)(widget_handle_t widgetHandle, - camera_object camera); - - int (*wrt_camera_cancel_async_operation)(widget_handle_t widgetHandle, - camera_object camera, - const camera_operation operation); - -} engine_interface_t; - -typedef const void* js_class_template_t; - -typedef enum class_definition_type_e -{ - JS_CLASS, - JS_FUNCTION -} class_definition_type_t; - -typedef enum class_definition_iframe_behaviour_e -{ - //object should not be initalized in iframes - //it is default one - NONE, - //object should be copied as reference to each iframe - REFERENCE, - //object should be created for each iframe and NOT inform plugin - CREATE_INSTANCE, -} class_definition_iframe_behaviour_t; - -typedef enum class_definition_iframe_notice_e -{ - //it is default one - NONE_NOTICE, - ALWAYS_NOTICE -} class_definition_iframe_notice_t; - -typedef enum class_definition_iframe_overlay_e -{ - USE_ORGINAL, - USE_OVERLAYED, - OVERLAYED_BEFORE_ORIGINAL -} class_definition_iframe_overlay_t; - -typedef void* js_object_instance_t; -//global_context - id -typedef void(*iframe_loaded_cb)(java_script_context_t global_context, - js_object_instance_t iframe, - js_object_instance_t object); - -typedef struct class_definition_options_s -{ - class_definition_type_t type; - class_definition_iframe_behaviour_t iframe_option; - class_definition_iframe_notice_t iframe_notice; - class_definition_iframe_overlay_t iframe_overlay; - iframe_loaded_cb cb; - void * private_data; -} class_definition_options_t; - - -/* - * list of device caps - */ -typedef struct devcaps_s -{ - char** deviceCaps; - size_t devCapsCount; -} devcaps_t; - -/* - * mapping from a feature to corresponding list of device capabilities - */ -typedef struct feature_devcaps_s -{ - char* feature_name; - devcaps_t devCaps; -} feature_devcaps_t; - -/* - * list of feature_devcaps_t structs - */ -typedef struct feature_mapping_s -{ - feature_devcaps_t* features; - size_t featuresCount; -} feature_mapping_t; - -/* - * This is a structure describing a JS class templated, object name and - * it's parent class name (parent_name) - * JS class will be bind to a parent class name (parent_name.jsclass_name). - * @param parent_name - parent name (ie Widget.Device) - * @param object_name - object name (DeviceStatus) - * @param js_class_template - js_class_template required to create JS object - * @param private_data private data for object creator if required - * (usually NULL) - */ -typedef struct class_definition_s -{ - const char *parent_name; - const char *object_name; - js_class_template_t js_class_template; - //class options may be null - default - class_definition_options_t* class_options; -} class_definition_t; - -/** - * FIXME: Add documentation - */ -typedef const class_definition_t *class_definition_ptr_t; - -/** - * Plugin export names - */ -#define PLUGIN_WIDGET_START_PROC on_widget_start -#define PLUGIN_WIDGET_STOP_PROC on_widget_stop -#define PLUGIN_CLASS_MAP class_map -#define PLUGIN_GET_CLASS_PROC_MAP get_widget_class_map - -#define PLUGIN_WIDGET_START_PROC_NAME "on_widget_start" -#define PLUGIN_WIDGET_STOP_PROC_NAME "on_widget_stop" -#define PLUGIN_CLASS_MAP_NAME "class_map" -#define PLUGIN_GET_CLASS_MAP_PROC_NAME "get_widget_class_map" - -/** - * Plugin export typedefs - */ -typedef void (*on_widget_start_proc)(int widgetId, - java_script_context_t context, - const engine_interface_t *interface); - -/** - * FIXME: Add documentation - */ -typedef void (*on_widget_stop_proc)(int widgetId); - -typedef const class_definition_t* (*get_widget_class_map_proc)(); - -#endif // WRT_PLUGIN_EXPORT_H diff --git a/src/plugin-service/plugin_api.cpp b/src/plugin-service/plugin_api.cpp deleted file mode 100644 index ab1b0bf..0000000 --- a/src/plugin-service/plugin_api.cpp +++ /dev/null @@ -1,453 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_plugin_api.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains definitions of wrt plugin api - */ -#include "plugin_api.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; - -const engine_interface_t DEFAULT_ENGINE_INTERFACE = { - &plugin_api_check_access_2, - &plugin_api_camera_free_webkit_cameras, - &plugin_api_camera_get_cameras, - &plugin_api_camera_remove_camera, - &plugin_api_camera_create_preview_node, - &plugin_api_camera_capture_image, - &plugin_api_camera_start_video_capture, - &plugin_api_camera_stop_video_capture, - &plugin_api_camera_cancel_async_operation -}; - -namespace { -const std::string GLOBAL_OBJECT_NAME = "GLOBAL_OBJECT"; - -char *nstrdup(const char *x) -{ - size_t l = strlen(x); - char *r = new char[l + 1]; - strcpy(r, x); - return r; -} - -static std::string TOKEN_PARAM_FUNCTION = "param:function"; - -Request convertToRequest(const ace_request_t *ace_request, - WidgetModel *widgetModel, - FunctionParamImpl *functionParam, - RequestContext *context) -{ - Assert(ace_request); - Assert(widgetModel); - Assert(functionParam); - - functionParam->addAttribute(TOKEN_PARAM_FUNCTION, - ace_request->function_name); - - DPL::OptionalString widgetGUID = widgetModel->GUID.Get(); - - Request request(context->Handle, - WidgetExecutionPhase_Unknown, - functionParam); - - for (size_t i = 0; i < ace_request->device_capabilities.count; ++i) { - request.addDeviceCapability( - ace_request->device_capabilities.device_cap[i]); - } - - for (size_t i = 0; i < ace_request->param_list.count; i++) { - Assert(ace_request->param_list.param[i].name && - ace_request->param_list.param[i].value); - - functionParam->addAttribute( - std::string(ace_request->param_list.param[i].name), - std::string(ace_request->param_list.param[i].value)); - } - return request; -} - -FunctionParams createFunctionParams(const ace_request_2_t* ace_request) -{ - Assert(ace_request); - - const ace_device_cap_t& devcaps = ace_request->device_capabilities; - FunctionParams functionParams(devcaps.devcapsCount); - - for (size_t i = 0; i < devcaps.devcapsCount; ++i) { - FunctionParamImpl functionParam; - functionParam.addAttribute(TOKEN_PARAM_FUNCTION, - ace_request->function_name); - - if (devcaps.paramsCount) { - Assert(devcaps.params); - - for (size_t j = 0; j < devcaps.params[i].count; ++j) { - Assert(devcaps.params[i].param && - devcaps.params[i].param[j].name && - devcaps.params[i].param[j].value); - - functionParam.addAttribute( - std::string(devcaps.params[i].param[j].name), - std::string(devcaps.params[i].param[j].value)); - } - } - - functionParams.push_back(functionParam); - } - - return functionParams; -} - -void convertToRequests(const ace_request_2_t *ace_request, - WidgetModel *widgetModel, - FunctionParams& functionParams, - Requests& outRequests, - RequestContext *context) -{ - Assert(ace_request); - Assert(widgetModel); - - DPL::OptionalString widgetGUID = widgetModel->GUID.Get(); - - for (size_t i = 0; i < ace_request->device_capabilities.devcapsCount; ++i) { - Request request(context->Handle, - context->Phase, - &functionParams[i]); - - Assert(ace_request->device_capabilities.dev_cap_names); - request.addDeviceCapability( - ace_request->device_capabilities.dev_cap_names[i]); - outRequests.push_back(request); - } -} - -} // namespace anonymous - - -int plugin_api_check_access_2(const ace_request_2_t *ace_request) -{ - if (!ace_request) { - LogError("Null request received from plugin"); - return PLUGIN_API_ACCESS_ERROR; - } - - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - WidgetModel *widgetModel = NULL; - - // Post event to widget controller - CONTROLLER_POST_EVENT( - WidgetController, - WidgetControllerEvents::getWidgetModelEvent( - &widgetModel)); - - if (!widgetModel) { - return PLUGIN_API_ACCESS_ERROR; - } - - WidgetDAO widgetDao(ace_request->widget_handle); - WidgetFeatureSet featureContainer = widgetDao.getFeaturesList(); - WidgetFeature feature; - - bool featureFound = false; - for (size_t i = 0; i < ace_request->api_features.count; ++i) { - Assert(ace_request->api_features.api_feature[i]); - DPL::String featureAPIName = - DPL::FromUTF8String(ace_request->api_features.api_feature[i]); - feature.name = featureAPIName; - WidgetFeatureSet::const_iterator it = - featureContainer.find(feature); - - if (it != featureContainer.end()) { - featureFound = true; - break; - } - } - - if (!featureFound) { - LogError("Trying to access to feature that wasn't requested"); - return PLUGIN_API_ACCESS_DENIED; - } - - ViewLogicSingleton::Instance().javaScriptSuspend(widgetModel); - - Requests requests; - FunctionParams functionParams = createFunctionParams(ace_request); - - RequestContext context(widgetModel->Handle.Get(), - WidgetExecutionPhase_Invoke); - - convertToRequests(ace_request, - widgetModel, - functionParams, - requests, - &context); - - bool retValue = true; - PolicyResult result; - FOREACH(it, requests) - { - CONTROLLER_POST_SYNC_EVENT( - SecurityController, - SecurityControllerEvents::CheckFunctionCallSyncEvent( - &result, - &(*it))); - OptionalPolicyEffect effect = result.getEffect(); - if (effect.IsNull()) { - retValue = false; - break; - } - if (*effect != PolicyEffect::PERMIT) { - retValue = false; - break; - } - } - - ViewLogicSingleton::Instance().javaScriptResume(widgetModel); - - if (retValue) { - return PLUGIN_API_ACCESS_GRANTED; - } else { - return PLUGIN_API_ACCESS_DENIED; - } - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -void plugin_api_camera_free_webkit_cameras(webkit_cameras_array* cameras) -{ - delete[] cameras; -} - -webkit_cameras_array* plugin_api_camera_get_cameras( - widget_handle_t widgetHandle) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API get cameras init"); - - PluginApiControllerEventsTypes::CameraGetCamerasEventDataPtr eventData( - new PluginApiControllerEventsTypes:: - PluginCameraGetCamerasDataEvent); - - eventData->widgetHandle = widgetHandle; - eventData->cameras = new webkit_cameras_array(); - CONTROLLER_POST_SYNC_EVENT( - PluginApiController, - PluginApiControllerEvents::GetCamerasEvent(eventData)); - - return eventData->cameras; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int plugin_api_camera_remove_camera(widget_handle_t /*widgetHandle*/, - camera_object camera) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API remove camera"); - PluginApiControllerEventsTypes::CameraBaseEventDataPtr eventData( - new PluginApiControllerEventsTypes::PluginCameraBaseEventData); - - eventData->camera = camera; - - CONTROLLER_POST_EVENT( - PluginApiController, - PluginApiControllerEvents::RemoveCameraEvent(eventData)); - - LogDebug("API remove camera end"); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int plugin_api_camera_create_preview_node( - widget_handle_t widgetHandle, - camera_object camera, - camera_preview_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation pendingOperationCb, - void* userData) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API create preview start"); - - PluginApiControllerEventsTypes::CameraCreatePreviewEventDataPtr - eventData(new PluginApiControllerEventsTypes:: - PluginCameraCreatePreviewEventData); - - eventData->widgetHandle = widgetHandle; - eventData->camera = camera; - eventData->errorCallback = errorCallback; - eventData->userData = userData; - eventData->successCallback = successCallback; - eventData->pending_operation_cb = pendingOperationCb; - - CONTROLLER_POST_EVENT( - PluginApiController, - PluginApiControllerEvents::CreatePreviewEvent(eventData)); - - LogDebug("API create preview end"); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int plugin_api_camera_capture_image( - widget_handle_t widgetHandle, - camera_object camera, - const char* filename, - int highRes, - camera_capture_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation pendingOperationCb, - void* userData) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API camera capture"); - - PluginApiControllerEventsTypes::CameraCaptureImageEventDataPtr - eventData(new PluginApiControllerEventsTypes:: - PluginCameraCaptureImageEventData); - - eventData->widgetHandle = widgetHandle; - eventData->camera = camera; - eventData->errorCallback = errorCallback; - eventData->userData = userData; - eventData->successCallback = successCallback; - eventData->filename = filename; - eventData->highRes = highRes; - eventData->pending_operation_cb = pendingOperationCb; - - CONTROLLER_POST_EVENT( - PluginApiController, - PluginApiControllerEvents::CaptureImageEvent(eventData)); - - LogDebug("API camera capture end"); - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int plugin_api_camera_start_video_capture( - widget_handle_t widgetHandle, - camera_object camera, - const char* filename, - int highRes, - camera_capture_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation pendingOperationCb, - void* userData) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API start video"); - - PluginApiControllerEventsTypes::CameraCaptureImageEventDataPtr - eventData(new PluginApiControllerEventsTypes:: - PluginCameraCaptureImageEventData); - - eventData->widgetHandle = widgetHandle; - eventData->camera = camera; - eventData->errorCallback = errorCallback; - eventData->userData = userData; - eventData->successCallback = successCallback; - eventData->filename = filename; - eventData->highRes = highRes; - eventData->pending_operation_cb = pendingOperationCb; - - CONTROLLER_POST_EVENT( - PluginApiController, - PluginApiControllerEvents::StartVideoCaptureEvent(eventData)); - - LogDebug("API start video end"); - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int plugin_api_camera_stop_video_capture(widget_handle_t /*widgetHandle*/, - camera_object camera) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API stop video"); - - PluginApiControllerEventsTypes::CameraBaseEventDataPtr eventData( - new PluginApiControllerEventsTypes::PluginCameraBaseEventData); - - eventData->camera = camera; - - CONTROLLER_POST_EVENT( - PluginApiController, - PluginApiControllerEvents::StopVideoCaptureEvent(eventData)); - - LogDebug("API stop video end"); - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -int plugin_api_camera_cancel_async_operation(widget_handle_t /*widgetHandle*/, - camera_object camera, - camera_operation operation) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - LogDebug("API cancel"); - - PluginApiControllerEventsTypes::CameraBaseEventDataPtr eventData( - new PluginApiControllerEventsTypes::PluginCameraBaseEventData); - eventData->camera = camera; - eventData->pending_operation = operation; - - CONTROLLER_POST_EVENT( - PluginApiController, - PluginApiControllerEvents::CancelOperationsEvent(eventData)); - - return 0; - } - UNHANDLED_EXCEPTION_HANDLER_END -} diff --git a/src/plugin-service/plugin_api.h b/src/plugin-service/plugin_api.h deleted file mode 100644 index 0d60267..0000000 --- a/src/plugin-service/plugin_api.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_plugin_api.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains declarations of wrt plugin api - */ -/* - * @defgroup wrt_engine_group WebRunTime engine Library - * @ingroup internet_FW - * Functions to APIs to access widget property - */ -#ifndef WRT_PLUGIN_API_H -#define WRT_PLUGIN_API_H - -#include -#include - -extern const engine_interface_t DEFAULT_ENGINE_INTERFACE; - -int plugin_api_camera_start_preview(JSContextRef context, JSValueRef sink); - -int plugin_api_check_access_2(const ace_request_2_t *ace_request); - -void plugin_api_camera_free_webkit_cameras(webkit_cameras_array* cameras); - -webkit_cameras_array* plugin_api_camera_get_cameras( - widget_handle_t widgetHandle); - -int plugin_api_camera_remove_camera(widget_handle_t widgetHandle, - camera_object camera); - -int plugin_api_camera_create_preview_node( - widget_handle_t widgetHandle, - camera_object camera, - camera_preview_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation pendingOpearationCb, - void* userData); - -int plugin_api_camera_capture_image( - widget_handle_t widgetHandle, - camera_object camera, - const char* filename, - int highRes, - camera_capture_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation pendingOpearationCb, - void* userData); - -int plugin_api_camera_start_video_capture( - widget_handle_t widgetHandle, - camera_object camera, - const char* filename, - int highRes, - camera_capture_success_cb successCallback, - camera_error_cb errorCallback, - camera_set_pending_operation pendingOpearationCb, - void* userData); - -int plugin_api_camera_stop_video_capture(widget_handle_t widgetHandle, - camera_object camera); - -int plugin_api_camera_cancel_async_operation(widget_handle_t widgetHandle, - camera_object camera, - camera_operation operation); - -#endif /* WRT_PLUGIN_API_H */ diff --git a/src/plugin-service/plugin_api_controller.cpp b/src/plugin-service/plugin_api_controller.cpp deleted file mode 100644 index a66d80e..0000000 --- a/src/plugin-service/plugin_api_controller.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_api_controller.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @bref implementation file for plugin controller - */ - -#include "plugin_api_controller.h" -#include -#include -#include - -IMPLEMENT_SINGLETON(PluginApiController) - -PluginApiController::PluginApiController() -{ -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::GetCamerasEvent& event) -{ - m_pluginApiLogic.getCameras(event.GetArg0()); -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::CreatePreviewEvent& event) -{ - m_pluginApiLogic.createPreview(event.GetArg0()); -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::StartVideoCaptureEvent& event) -{ - m_pluginApiLogic.startVideoCapture(event.GetArg0()); -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::StopVideoCaptureEvent& event) -{ - m_pluginApiLogic.stopVideoCapture(event.GetArg0()); -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::CaptureImageEvent& event) -{ - m_pluginApiLogic.captureImage(event.GetArg0()); -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::RemoveCameraEvent& event) -{ - m_pluginApiLogic.removeCamera(event.GetArg0()); -} - -void PluginApiController::OnEventReceived( - const PluginApiControllerEvents::CancelOperationsEvent& event) -{ - m_pluginApiLogic.cancelOperations(event.GetArg0()); -} diff --git a/src/plugin-service/plugin_api_controller.h b/src/plugin-service/plugin_api_controller.h deleted file mode 100644 index d176b23..0000000 --- a/src/plugin-service/plugin_api_controller.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_api_controller.h - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @bref Header file for plugin controller - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_PLUGIN_API_CONTROLLER_H_ -#define WRT_SRC_PLUGIN_SERVICE_PLUGIN_API_CONTROLLER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "plugin_api_controller_data_types.h" - -namespace PluginApiControllerEvents { - -//camera events -DECLARE_GENERIC_EVENT_1(CreatePreviewEvent, - PluginApiControllerEventsTypes::CameraCreatePreviewEventDataPtr) -DECLARE_GENERIC_EVENT_1(StartVideoCaptureEvent, - PluginApiControllerEventsTypes::CameraCaptureImageEventDataPtr) -DECLARE_GENERIC_EVENT_1(StopVideoCaptureEvent, - PluginApiControllerEventsTypes::CameraBaseEventDataPtr) -DECLARE_GENERIC_EVENT_1(CaptureImageEvent, - PluginApiControllerEventsTypes::CameraCaptureImageEventDataPtr) -DECLARE_GENERIC_EVENT_1(RemoveCameraEvent, - PluginApiControllerEventsTypes::CameraBaseEventDataPtr) -DECLARE_GENERIC_EVENT_1(GetCamerasEvent, - PluginApiControllerEventsTypes::CameraGetCamerasEventDataPtr) -DECLARE_GENERIC_EVENT_1(CancelOperationsEvent, - PluginApiControllerEventsTypes::CameraBaseEventDataPtr) - -}//namespace PluginControllerEvents - - -typedef DPL::TypeListDecl< - PluginApiControllerEvents::CreatePreviewEvent, - PluginApiControllerEvents::StartVideoCaptureEvent, - PluginApiControllerEvents::StopVideoCaptureEvent, - PluginApiControllerEvents::CaptureImageEvent, - PluginApiControllerEvents::RemoveCameraEvent, - PluginApiControllerEvents::GetCamerasEvent, - PluginApiControllerEvents::CancelOperationsEvent - >::Type - PluginApiControllerEventTypeList; - - -class PluginApiController : - public DPL::Event::Controller -{ - protected: - virtual void OnEventReceived(const PluginApiControllerEvents:: - CreatePreviewEvent& event); - virtual void OnEventReceived(const PluginApiControllerEvents:: - StartVideoCaptureEvent& event); - virtual void OnEventReceived(const PluginApiControllerEvents:: - StopVideoCaptureEvent& event); - virtual void OnEventReceived(const PluginApiControllerEvents:: - CaptureImageEvent& event); - virtual void OnEventReceived(const PluginApiControllerEvents:: - RemoveCameraEvent& event); - virtual void OnEventReceived(const PluginApiControllerEvents:: - GetCamerasEvent& event); - virtual void OnEventReceived(const PluginApiControllerEvents:: - CancelOperationsEvent& event); - - PluginApiController(); - - private: - PluginApiLogic m_pluginApiLogic; - - friend class DPL::Singleton; -}; - - -typedef DPL::Singleton PluginApiControllerSingleton; - - -#endif //WRT_SRC_PLUGIN_SERVICE_PLUGIN_CONTROLLER_H_ diff --git a/src/plugin-service/plugin_api_controller_data_types.h b/src/plugin-service/plugin_api_controller_data_types.h deleted file mode 100644 index 9c8ad04..0000000 --- a/src/plugin-service/plugin_api_controller_data_types.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_api_controller_data_types.h - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @bref Header file for plugin controller event data types - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_PLUGIN_API_CONTROLLER_DATA_TYPES_H_ -#define WRT_SRC_PLUGIN_SERVICE_PLUGIN_API_CONTROLLER_DATA_TYPES_H_ - -#include -#include -#include "wrt_plugin_export.h" - -namespace PluginApiControllerEventsTypes { - -struct PluginCameraBaseEventData -{ - PluginCameraBaseEventData() : camera(NULL), pending_operation(-1) {} - - camera_object camera; - camera_operation pending_operation; -}; -typedef DPL::SharedPtr CameraBaseEventDataPtr; - - -struct PluginCameraEventData : public PluginCameraBaseEventData -{ - PluginCameraEventData() : - widgetHandle(-1), - errorCallback(NULL), - userData(NULL), - pending_operation_cb(NULL) - { - } - - widget_handle_t widgetHandle; - camera_error_cb errorCallback; - void* userData; - camera_set_pending_operation pending_operation_cb; -}; - - -struct PluginCameraCreatePreviewEventData : public PluginCameraEventData -{ - PluginCameraCreatePreviewEventData() : successCallback(NULL) {} - - camera_preview_success_cb successCallback; -}; -typedef DPL::SharedPtr - CameraCreatePreviewEventDataPtr; - - -struct PluginCameraCaptureImageEventData : public PluginCameraEventData -{ - PluginCameraCaptureImageEventData() : - successCallback(NULL), - highRes(0) - { - } - - camera_capture_success_cb successCallback; - std::string filename; - int highRes; -}; -typedef DPL::SharedPtr - CameraCaptureImageEventDataPtr; - - -struct PluginCameraGetCamerasDataEvent -{ - PluginCameraGetCamerasDataEvent() : widgetHandle(-1), cameras(NULL) {} - - widget_handle_t widgetHandle; - webkit_cameras_array* cameras; -}; -typedef DPL::SharedPtr - CameraGetCamerasEventDataPtr; - -} - -#endif diff --git a/src/plugin-service/plugin_api_logic.cpp b/src/plugin-service/plugin_api_logic.cpp deleted file mode 100644 index 01f454b..0000000 --- a/src/plugin-service/plugin_api_logic.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file plugin_api_logic.cpp - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @bref implementation file for plugin api logic - */ - -#include "plugin_api_logic.h" -#include -#include -#include - -void PluginApiLogic::getCameras(const GetCamerasDataPtr& data) const -{ - LogDebug("Get cameras"); - - Assert(data->cameras); - - CameraArray webkit_array; - if (!ewk_view_camera_get_cameras(&webkit_array)) { - LogError("get cameras returned false"); - data->cameras->size = 0; - data->cameras->webkit_cameras = NULL; - return; - } - - LogDebug("Cameras count : " << webkit_array.length); - - data->cameras->size = webkit_array.length; - data->cameras->webkit_cameras = new webkit_camera[webkit_array.length]; - - for (unsigned int i = 0; i < webkit_array.length; ++i) { - data->cameras->webkit_cameras[i].camera = webkit_array.camera[i]; - int type = ewk_view_camera_get_device_index(webkit_array.camera[i]); - switch (type) { - case 0: - data->cameras->webkit_cameras[i].type = CAMERA_TYPE_FRONT; - break; - case 1: - data->cameras->webkit_cameras[i].type = CAMERA_TYPE_REAR; - break; - default: - LogError("Invalid camera type"); - data->cameras->webkit_cameras[i].type = CAMERA_TYPE_UNKNOWN; - } - } - - LogDebug("Get cameras completed"); -} - -void PluginApiLogic::cancelOperations(const BaseDataPtr& data) const -{ - LogDebug("Cancel before webkit"); - ewk_view_camera_cancel(data->camera, data->pending_operation); - LogDebug("Cancel completed"); -} - -void PluginApiLogic::createPreview(const CreatePreviewDataPtr& data) const -{ - LogDebug("create preview start"); - - EvasObject evas = ViewLogicSingleton::Instance().getViewForHandle( - data->widgetHandle); - - if (!evas.IsValid()) { - LogError("The view for handle is null"); - //TODO Throw exception - return; - } - - LogDebug("create preview before webkit"); - Camera_Operation result = ewk_view_camera_create_preview_node( - data->camera, - evas, - reinterpret_cast(data->successCallback), - data->errorCallback, - data->userData); - data->pending_operation_cb(result,data->userData); - - LogDebug("create preview end"); -} - -void PluginApiLogic::startVideoCapture(const CaptureImageDataPtr& data) const -{ - LogDebug("start video"); - - LogDebug("start video before webkit"); - Camera_Operation result = ewk_view_camera_start_video_capture( - data->camera, - data->filename.c_str(), - data->highRes, - data->successCallback, - data->errorCallback, - data->userData); - - data->pending_operation_cb(result,data->userData); - LogDebug("start video end"); -} - -void PluginApiLogic::stopVideoCapture(const BaseDataPtr& data) const -{ - LogDebug("stop video"); - - ewk_view_camera_stop_video_capture(data->camera); - - LogDebug("stop video end"); -} - -void PluginApiLogic::captureImage(const CaptureImageDataPtr& data) const -{ - LogDebug("capture image before webkit"); - Camera_Operation result = ewk_view_camera_capture_image( - data->camera, - data->filename.c_str(), - data->highRes, - data->successCallback, - data->errorCallback, - data->userData); - - data->pending_operation_cb(result,data->userData); - - LogDebug("capture image end"); -} - -void PluginApiLogic::removeCamera(const BaseDataPtr& data) const -{ - LogDebug("remove camera"); - - ewk_view_camera_remove_camera(data->camera); - - LogDebug("remove camera end"); -} diff --git a/src/plugin-service/plugin_api_logic.h b/src/plugin-service/plugin_api_logic.h deleted file mode 100644 index 20f6c0a..0000000 --- a/src/plugin-service/plugin_api_logic.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_api_logic.h - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @bref Header file for plugin api logic - */ - -#ifndef WRT_SRC_PLUGIN_SERVICE_PLUGIN_API_LOGIC_H_ -#define WRT_SRC_PLUGIN_SERVICE_PLUGIN_API_LOGIC_H_ - -#include -#include -//#include "plugin_api_controller.h" -#include "plugin_api_controller_data_types.h" -class PluginApiLogic -{ - public: - typedef PluginApiControllerEventsTypes::CameraCreatePreviewEventDataPtr - CreatePreviewDataPtr; - typedef PluginApiControllerEventsTypes::CameraCaptureImageEventDataPtr - CaptureImageDataPtr; - typedef PluginApiControllerEventsTypes::CameraBaseEventDataPtr - BaseDataPtr; - typedef PluginApiControllerEventsTypes::CameraGetCamerasEventDataPtr - GetCamerasDataPtr; - - public: - - void createPreview(const CreatePreviewDataPtr& data) const; - - void startVideoCapture(const CaptureImageDataPtr& data) const; - - void stopVideoCapture(const BaseDataPtr& data) const; - - void captureImage(const CaptureImageDataPtr& data) const; - - void removeCamera(const BaseDataPtr& camera) const; - - void cancelOperations(const BaseDataPtr& camera) const; - - void getCameras(const GetCamerasDataPtr& data) const; - - private: - PluginApiLogic(){}; - - friend class PluginApiController; -}; - -#endif diff --git a/src/popup-process/CMakeLists.txt b/src/popup-process/CMakeLists.txt deleted file mode 100644 index 8578aab..0000000 --- a/src/popup-process/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -SET(TARGET_WRT_POPUP "wrt-popup") - -PKG_CHECK_MODULES(WRT_POPUP_DEPS - dpl-efl - dpl-event-efl - dpl-popup-efl - dpl-ace-dao-ro - REQUIRED -) - -INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} - ${WRT_POPUP_DEPS_INCLUDE_DIRS} -) - -SET(WRT_POPUP_SRCS - wrt-popup.cpp - PopupSerializer.cpp - YesNoPopup.cpp - ${WRT_SRC_DIR}/domain/efl/CommunicationBox.cpp -) - -ADD_EXECUTABLE(${TARGET_WRT_POPUP} - ${WRT_POPUP_SRCS} -) - -TARGET_LINK_LIBRARIES(${TARGET_WRT_POPUP} - ${WRT_POPUP_DEPS_LIBRARIES} -) - -SET_TARGET_PROPERTIES(${TARGET_WRT_POPUP} PROPERTIES - LINK_FLAGS "-Wl,--as-needed -Wl,--hash-style=both -Wl,--version-script=${PROJECT_SOURCE_DIR}/wrt-engine.map" - BUILD_WITH_INSTALL_RPATH ON - INSTALL_RPATH_USE_LINK_PATH ON -) - -INSTALL(TARGETS ${TARGET_WRT_POPUP} DESTINATION bin) diff --git a/src/popup-process/PopupEnum.h b/src/popup-process/PopupEnum.h deleted file mode 100644 index 2a4d5b3..0000000 --- a/src/popup-process/PopupEnum.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WRT_POPUP_ENUM_H -#define WRT_POPUP_ENUM_H - -enum PopupType { - ACE_PROMPT = 1, - YES_NO_PROMPT -}; - -#endif - diff --git a/src/popup-process/PopupInvoker.cpp b/src/popup-process/PopupInvoker.cpp deleted file mode 100644 index fcd155f..0000000 --- a/src/popup-process/PopupInvoker.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PopupInvoker.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "PopupEnum.h" -#include "PopupSerializer.h" - - -namespace { -const char *POPUP_EXEC = "/usr/bin/wrt-popup"; -} - -PopupInvoker::PopupInvoker() : - m_inputName(tmpnam(NULL)), - m_outputName(tmpnam(NULL)) -{ - Try - { - m_input.Create(m_inputName); - m_output.Create(m_outputName); - LogDebug("Pipes created"); - } - Catch (DPL::Exception) - { - LogError("Cannot create pipes"); - } -} - -PopupInvoker::~PopupInvoker() -{ - Try - { - m_input.Destroy(m_inputName); - m_output.Destroy(m_outputName); - LogDebug("Pipes destroyed"); - } - Catch (DPL::Exception) - { - LogError("Cannot destroy pipes"); - } -} - -Prompt::PromptAnswer - PopupInvoker::showSyncPopup(int popupType, const std::string &resource) -{ - Try - { - DPL::BinaryQueue data; - PopupSerializer::appendArg(ACE_PROMPT, data); - PopupSerializer::appendArg(popupType, data); - PopupSerializer::appendArg(resource, data); - DPL::NamedInputPipe tmp; - tmp.Open(m_outputName); - m_output.Open(m_outputName); - m_input.Open(m_inputName); - m_output.Write(data, data.Size()); - - executePopup(); - - //Result from popup application is available. Read it. - DPL::BinaryQueueAutoPtr resultData = - m_input.Read(std::numeric_limits::max()); - const int result = PopupSerializer::getIntArg(*resultData); - const int validity = PopupSerializer::getIntArg(*resultData); - - Assert(resultData->Empty()); - - tmp.Close(); - m_input.Close(); - m_output.Close(); - - return Prompt::PromptAnswer(result, - static_cast(validity)); - } - Catch(DPL::Exception) - { - LogError("error occured"); - } - // if error then return deny once - return Prompt::PromptAnswer(false, Prompt::Validity::ONCE); -} - -bool PopupInvoker::askYesNo(const std::string& title, const std::string& message) -{ - Try - { - DPL::BinaryQueue data; - PopupSerializer::appendArg(YES_NO_PROMPT, data); - PopupSerializer::appendArg(title, data); - PopupSerializer::appendArg(message, data); - DPL::NamedInputPipe tmp; - tmp.Open(m_outputName); - m_output.Open(m_outputName); - m_input.Open(m_inputName); - m_output.Write(data, data.Size()); - - executePopup(); - - //Result from popup application is available. Read it. - DPL::BinaryQueueAutoPtr resultData = - m_input.Read(std::numeric_limits::max()); - const int result = PopupSerializer::getIntArg(*resultData); - - LogDebug("Popup result is: " << result); - - Assert(resultData->Empty()); - - tmp.Close(); - m_input.Close(); - m_output.Close(); - - return (!!result); - } - Catch(DPL::Exception) - { - LogError("error occured"); - } - - return false; -} - -void PopupInvoker::executePopup() -{ - pid_t pid = fork(); - if (pid == -1) - { - //error occured - LogError("Cannot display popup!"); - Assert(false); - } - if (pid == 0) - { - //child process - int ret = execl(POPUP_EXEC, - POPUP_EXEC, - m_outputName.c_str(), - m_inputName.c_str(), - NULL); - if (ret == -1) { - //execl returns -1 on error - LogError("Cannot display popup!"); - Assert(false); - } - } - - DPL::WaitableHandle handle = m_input.WaitableReadHandle(); - DPL::WaitForSingleHandle(handle); -} \ No newline at end of file diff --git a/src/popup-process/PopupInvoker.h b/src/popup-process/PopupInvoker.h deleted file mode 100644 index 151db05..0000000 --- a/src/popup-process/PopupInvoker.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WRT_POPUP_INVOKER_H -#define WRT_POPUP_INVOKER_H - -#include - -#include -#include -#include - -/* - - Example usage: - - bool result = PopupInvoker().askYesNo("title", "message"); - - */ - -class PopupInvoker -{ -public: - PopupInvoker(); - ~PopupInvoker(); - - Prompt::PromptAnswer showSyncPopup(int popupType, - const std::string &resource); - - bool askYesNo(const std::string &title, const std::string &message); - -private: - - void executePopup(); - - DPL::NamedInputPipe m_input; - DPL::NamedOutputPipe m_output; - const std::string m_inputName; - const std::string m_outputName; -}; - -#endif diff --git a/src/popup-process/PopupSerializer.cpp b/src/popup-process/PopupSerializer.cpp deleted file mode 100644 index f62367c..0000000 --- a/src/popup-process/PopupSerializer.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PopupSerializer.h" -#include - -namespace PopupSerializer { - -void appendArg(int arg, DPL::BinaryQueue &buffer) -{ - size_t argSize = sizeof(arg); - buffer.AppendCopy(&argSize, sizeof(argSize)); - buffer.AppendCopy(&arg, sizeof(arg)); -} - -void appendArg(const std::string &arg, DPL::BinaryQueue &buffer) -{ - size_t argSize = arg.size(); - buffer.AppendCopy(&argSize, sizeof(argSize)); - buffer.AppendCopy(arg.c_str(), argSize); -} - -int getIntArg(DPL::BinaryQueue &buffer) -{ - int result; - size_t argSize; - buffer.FlattenConsume(&argSize, sizeof(argSize)); - buffer.FlattenConsume(&result, argSize); - //TODO: what if argSize != sizeof(int) - //This should not be problem if this is run on the same machine. - return result; -} - -std::string getStringArg(DPL::BinaryQueue &buffer) -{ - std::string::size_type size; - buffer.FlattenConsume(&size, sizeof(size)); - DPL::ScopedArray str(new char[size]); - buffer.FlattenConsume(str.Get(), size); - return std::string(str.Get(), str.Get() + size); -} - -} \ No newline at end of file diff --git a/src/popup-process/PopupSerializer.h b/src/popup-process/PopupSerializer.h deleted file mode 100644 index 1e8102c..0000000 --- a/src/popup-process/PopupSerializer.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WRT_POPUP_SERIALIZER_H -#define WRT_POPUP_SERIALIZER_H - -#include -#include - -namespace PopupSerializer { - -void appendArg(int arg, DPL::BinaryQueue &buffer); -void appendArg(const std::string &arg, DPL::BinaryQueue &buffer); - -int getIntArg(DPL::BinaryQueue &buffer); -std::string getStringArg(DPL::BinaryQueue &buffer); - -} - -#endif \ No newline at end of file diff --git a/src/popup-process/YesNoPopup.cpp b/src/popup-process/YesNoPopup.cpp deleted file mode 100644 index c681df9..0000000 --- a/src/popup-process/YesNoPopup.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file YesNoPopup.cpp - * @author Andrzej Surdej (a.surdej@samsung.com) - * @version 1.0 - * @brief Popup that contains 'Yes' and 'No' buttons. Inplementation - */ - -#include "YesNoPopup.h" -#include -#include -#include -#include "PopupSerializer.h" - -namespace { -const char YES_LABEL[] = "Yes"; -const char NO_LABEL[] = "No"; -const int POPUP_YES_VALUE = 1; -const int POPUP_NO_VALUE = 2; -} //anonymous - -namespace PopupProcess { -using namespace DPL::Popup; - -void YesNoPopup::show(DPL::BinaryQueueAutoPtr data, WrtPopup* parent) -{ - LogDebug("Entered"); - std::string title = PopupSerializer::getStringArg(*data); - std::string message = PopupSerializer::getStringArg(*data); - Assert(data->Empty()); - LogDebug("title: " << title << " message: " << message); - - m_parent = parent; - - CtrlPopupPtr popup = PopupControllerSingleton::Instance().CreatePopup(); - - popup->SetTitle(title); - popup->Append(new PopupObject::Label(message)); - - popup->Append(new PopupObject::Button(YES_LABEL, POPUP_YES_VALUE)); - popup->Append(new PopupObject::Button(NO_LABEL, POPUP_NO_VALUE)); - - ListenForAnswer(popup); - - //nested loop is not used here - ShowPopupEvent event(popup, - MakeAnswerCallback( - this, - &YesNoPopup::responseCallback), - DPL::Event::UNDEFINED_LOOP_HANDLE); - - CONTROLLER_POST_EVENT(PopupController, - event); - - LogDebug("Exited"); - return; -} - -void YesNoPopup::responseCallback(const DPL::Popup::AnswerCallbackData &answer) -{ - bool result = (POPUP_YES_VALUE == answer.buttonAnswer); - DPL::BinaryQueue retValue; - PopupSerializer::appendArg(result, retValue); - m_parent->response(retValue); -} - -} // PopupProcess - diff --git a/src/popup-process/YesNoPopup.h b/src/popup-process/YesNoPopup.h deleted file mode 100644 index ccfbf84..0000000 --- a/src/popup-process/YesNoPopup.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file YesNoPopup.h - * @author Andrzej Surdej (a.surdej@samsung.com) - * @version 1.0 - * @brief Popup that contains 'Yes' and 'No' buttons - */ - -#ifndef WRT_YES_NO_POPUP_H -#define WRT_YES_NO_POPUP_H - -#include "wrt-popup.h" - -namespace PopupProcess { - -class YesNoPopup : public IPopup -{ -public: - virtual void show(DPL::BinaryQueueAutoPtr data, WrtPopup* parent); - -private: - - void responseCallback(const DPL::Popup::AnswerCallbackData &answer); - WrtPopup* m_parent; -}; - -} // PopupProcess - -#endif /* WRT_YES_NO_POPUP_H */ - diff --git a/src/popup-process/wrt-popup.cpp b/src/popup-process/wrt-popup.cpp deleted file mode 100644 index 0576228..0000000 --- a/src/popup-process/wrt-popup.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "wrt-popup.h" -#include -#include - -#include -#include -#include -#include - -#include "PopupEnum.h" -#include "PopupSerializer.h" -#include "YesNoPopup.h" - -#include -#include -#include - -namespace { -struct PopupsUserdata -{ - PopupsUserdata(CommunicationBox* pCommunicationBox) : - communicationBox(pCommunicationBox) - { - } - std::unique_ptr communicationBox; - Prompt::PromptLabelsPtr promptLabels; -}; - -Prompt::PromptLabels* getPromptLabelsFromPolicyEffect( - const PolicyEffect promptEffect, const std::string& resource) -{ - switch(promptEffect) { - case PolicyEffect::PROMPT_ONESHOT: { - return Prompt::PromptModel::getOneShotModel(resource); - } - case PolicyEffect::PROMPT_SESSION: { - return Prompt::PromptModel::getSessionModel(resource); - } - case PolicyEffect::PROMPT_BLANKET: { - return Prompt::PromptModel::getBlanketModel(resource); - } - default: - LogError("Policy Effect not an prompt"); - Assert(0); - return NULL; - } -} - -} // namespace anonymous - -namespace PopupProcess { - -bool WrtPopup::openPipes() -{ - Try - { - if (m_argc != 3) { - LogError("Wrong arguments!"); - return false; - } - m_input.Open(m_argv[1]); - //open output pipe - m_output.Open(m_argv[2]); - - DPL::WaitableHandleWatchSupport::InheritedContext()-> - AddWaitableHandleWatch(this, - m_input.WaitableReadHandle(), - DPL::WaitMode::Read); - m_pipesOpened = true; - return true; - } - Catch(DPL::Exception) - { - LogError("cannot open pipes"); - } - return false; -} - -void WrtPopup::closePipes() -{ - Try - { - if (m_pipesOpened) - { - DPL::WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, - m_input.WaitableReadHandle(), - DPL::WaitMode::Read); - m_input.Close(); - m_output.Close(); - m_pipesOpened = false; - } - } - Catch(DPL::Exception) - { - LogError("cannot close pipes"); - } -} - -void WrtPopup::OnEventReceived(const QuitEvent &/* event */) -{ - LogDebug("Quiting"); - closePipes(); - Quit(); -} - -void WrtPopup::OnWaitableHandleEvent(DPL::WaitableHandle waitableHandle, - DPL::WaitMode::Type /*mode*/) -{ - if (waitableHandle == m_input.WaitableReadHandle()) - { - readInputData(); - } -} - -void WrtPopup::readInputData() -{ - DPL::BinaryQueueAutoPtr data = - m_input.Read(std::numeric_limits::max()); - int popupType = PopupSerializer::getIntArg(*data); - LogDebug("popup type " << popupType); - switch(popupType) { - case ACE_PROMPT: - // TODO: fix this to use IPopup interface - showAcePrompt(data); - break; - case YES_NO_PROMPT: { - m_popup.reset(new YesNoPopup()); - m_popup->show(data, this); - break; } - default: - Assert(false); - } -} - -void WrtPopup::showAcePrompt(DPL::BinaryQueueAutoPtr data) -{ - int promptType = PopupSerializer::getIntArg(*data); - std::string resource = PopupSerializer::getStringArg(*data); - Assert(data->Empty()); - LogDebug("PopupType: " << promptType << " resource: " << resource); - - PopupsUserdata* popupsUserdata = - new PopupsUserdata(new CommunicationBox()); - - using namespace Prompt; - popupsUserdata->promptLabels.reset( - getPromptLabelsFromPolicyEffect(static_cast(promptType), - resource)); - popupsUserdata->communicationBox->showAsync( - static_cast( - popupsUserdata->promptLabels->getPromptType()), - popupsUserdata->promptLabels->getMainLabel(), - popupsUserdata->promptLabels->getButtonLabels(), - popupsUserdata->promptLabels->getCheckLabel(), - CommunicationBox::ResponseDelegate( - this, - &WrtPopup::communicationBoxResponse), - popupsUserdata); -} - -void WrtPopup::communicationBoxResponse(int buttonAnswer, - bool checkState, - void* userdata) -{ - LogDebug("Communication box response"); - Assert(userdata); - std::unique_ptr popupsUserdata( - static_cast(userdata)); - //following code can be moved to different place, but this is only a stub - - Prompt::PromptAnswer promptAnswer( - popupsUserdata->promptLabels->getPromptType(), - buttonAnswer, checkState); - - const bool allowed = promptAnswer.isAccessAllowed(); - const Prompt::Validity validity = promptAnswer.getValidity(); - - DPL::BinaryQueue result; - PopupSerializer::appendArg(allowed, result); - PopupSerializer::appendArg(static_cast(validity), result); - m_output.Write(result, result.Size()); - PostEvent(QuitEvent()); -} - -void WrtPopup::response(DPL::BinaryQueue result) -{ - m_output.Write(result, result.Size()); - PostEvent(QuitEvent()); -} - -void WrtPopup::OnStop() -{ - LogInfo("On Stop"); -} - -void WrtPopup::OnCreate() -{ - if (!openPipes()) - { - PostEvent(QuitEvent()); - } - LogInfo("On Create"); -} - -void WrtPopup::OnResume() -{ - LogDebug("OnResume"); -} - -void WrtPopup::OnPause() -{ - LogDebug("OnPause"); -} - -void WrtPopup::OnReset(bundle */*b*/) -{ - LogDebug("OnReset"); -} - -void WrtPopup::OnTerminate() -{ - LogDebug("Wrt Shutdown now"); -} - -WrtPopup::WrtPopup(int argc, char **argv) : - Application(argc, argv, "wrt-popup", false), - m_pipesOpened(false), - m_popup(NULL) -{ - Touch(); - DPL::Popup::PopupControllerSingleton::Instance().Touch(); - DPL::Popup::PopupManagerSingleton::Instance().Initialize( - DPL::Popup::PopupRendererPtr(new DPL::Popup::PopupRenderer)); - LogDebug("App Created"); -} - -WrtPopup::~WrtPopup() -{ - DPL::Popup::PopupManagerSingleton::Instance().Deinitialize(); - LogDebug("App Finished"); -} - -} // PopupProcess - -int main(int argc, char *argv[]) -{ - // Output on stdout will be flushed after every newline character, - // even if it is redirected to a pipe. This is useful for running - // from a script and parsing output. - // (Standard behavior of stdlib is to use full buffering when - // redirected to a pipe, which means even after an end of line - // the output may not be flushed). - setlinebuf(stdout); - DPL::Log::LogSystemSingleton::Instance().SetTag("WRT-POPUP"); - PopupProcess::WrtPopup app(argc, argv); - int ret = app.Exec(); - LogDebug("App returned: " << ret); - return ret; -} diff --git a/src/popup-process/wrt-popup.h b/src/popup-process/wrt-popup.h deleted file mode 100644 index a254d8e..0000000 --- a/src/popup-process/wrt-popup.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WRT_POPUP_H -#define WRT_POPUP_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace PopupProcess { - -DECLARE_GENERIC_EVENT_0(QuitEvent) -class WrtPopup; - -class IPopup : public DPL::Popup::PopupControllerUser -{ -public: - virtual void show(DPL::BinaryQueueAutoPtr data, WrtPopup* parent) = 0; -}; - -typedef std::unique_ptr IPopupPtr; - - -class WrtPopup : - public DPL::WaitableHandleWatchSupport::WaitableHandleListener, - public DPL::Application, - private DPL::Event::Controller::Type> -{ -public: - WrtPopup(int argc, char **argv); - virtual ~WrtPopup(); - - void response(DPL::BinaryQueue result); - -protected: - //DPL::Application functions - virtual void OnStop(); - virtual void OnCreate(); - virtual void OnResume(); - virtual void OnPause(); - virtual void OnReset(bundle *b); - virtual void OnTerminate(); - virtual void OnEventReceived(const QuitEvent &event); - virtual void OnWaitableHandleEvent(DPL::WaitableHandle waitableHandle, - DPL::WaitMode::Type mode); -private: - - void showAcePrompt(DPL::BinaryQueueAutoPtr data); - void communicationBoxResponse(int buttonAnswer, - bool checkState, - void* userdata); - bool m_pipesOpened; - IPopupPtr m_popup; - - bool openPipes(); - void closePipes(); - void readInputData(); - - DPL::NamedInputPipe m_input; - DPL::NamedOutputPipe m_output; -}; - -} // PopupProcess - -#endif // WRT_POPUP_H diff --git a/src/profiling/ace-dependencies/build.sh b/src/profiling/ace-dependencies/build.sh deleted file mode 100755 index 106da07..0000000 --- a/src/profiling/ace-dependencies/build.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -SRC=./src -BUILD=build -mkdir $BUILD 2>/dev/null -g++ $SRC/test_empty.cpp -o $BUILD/empty -g++ $SRC/test_timer.cpp -o $BUILD/timer -g++ $SRC/test_openssl.cpp `pkg-config --libs openssl` -o $BUILD/ssl -g++ $SRC/test_pcre.cpp `pkg-config --libs libpcre` -o $BUILD/pcre -g++ $SRC/test_xml2.cpp `pkg-config --cflags libxml-2.0` `pkg-config --libs libxml-2.0` -o $BUILD/xml -g++ $SRC/test_xmlsec.cpp `pkg-config --cflags xmlsec1` `pkg-config --libs xmlsec1` -o $BUILD/xmlsec diff --git a/src/profiling/ace-dependencies/runTests.sh b/src/profiling/ace-dependencies/runTests.sh deleted file mode 100755 index 67b7d85..0000000 --- a/src/profiling/ace-dependencies/runTests.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -set -o nounset # Treat unset variables as an error - -CLEAR_CACHE_ENABLE=0 - - -function runTest(){ -echo -e "\nTesting..." $2 - -if [ $CLEAR_CACHE_ENABLE -eq 1 ]; then -#Clear cache -/sbin/sysctl vm.drop_caches=3; -fi - -START=$(date +%s.%N) -$1 -END=$(date +%s.%N) -DIFF=$(echo "$END - $START" | bc) -MS=$(echo "$DIFF" | sed 's/\([0-9]*\)[.]\([0-9][0-9][0-9]\).*/\1s \2ms/' | sed 's/^s/0s/'); -echo -e "Result for" $2 " " $MS "\n" -} - - -pushd ./build > /dev/null -runTest ./empty "None" -runTest ./timer "Timer" -runTest ./ssl "OpenSSL" -runTest ./pcre "Pcre" -runTest ./xml "Xml2" -runTest ./xmlsec "XmlSec" "internally linked with openssl and xml2" -popd > /dev/null diff --git a/src/profiling/ace-dependencies/src/test_empty.cpp b/src/profiling/ace-dependencies/src/test_empty.cpp deleted file mode 100644 index 092e7a5..0000000 --- a/src/profiling/ace-dependencies/src/test_empty.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -int main(int argc, const char *argv[]) -{ - return 0; -} diff --git a/src/profiling/ace-dependencies/src/test_openssl.cpp b/src/profiling/ace-dependencies/src/test_openssl.cpp deleted file mode 100644 index 0be9a5f..0000000 --- a/src/profiling/ace-dependencies/src/test_openssl.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include -#include - -int main(int argc, const char *argv[]) -{ - struct timeval start; - struct timeval end; - - - gettimeofday(&start, NULL); - SSL_library_init(); - gettimeofday(&end, NULL); - - - uint32_t st; - uint32_t en; - - st = start.tv_sec * 1000 + start.tv_usec / 1000; - en = end.tv_sec * 1000 + end.tv_usec / 1000; - - printf("Command execution time :\t %d ms %d us\n", en-st, (end.tv_usec - start.tv_usec)%1000); - - return 0; -} diff --git a/src/profiling/ace-dependencies/src/test_pcre.cpp b/src/profiling/ace-dependencies/src/test_pcre.cpp deleted file mode 100644 index 74aeace..0000000 --- a/src/profiling/ace-dependencies/src/test_pcre.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include -#include - -int main(int argc, const char *argv[]) -{ - struct timeval start; - struct timeval end; - - - gettimeofday(&start, NULL); - pcre_version(); - gettimeofday(&end, NULL); - - - uint32_t st; - uint32_t en; - - st = start.tv_sec * 1000 + start.tv_usec / 1000; - en = end.tv_sec * 1000 + end.tv_usec / 1000; - - printf("Command execution time :\t %d ms %d us\n", en-st, (end.tv_usec - start.tv_usec)%1000); - - return 0; -} diff --git a/src/profiling/ace-dependencies/src/test_timer.cpp b/src/profiling/ace-dependencies/src/test_timer.cpp deleted file mode 100644 index 8950c24..0000000 --- a/src/profiling/ace-dependencies/src/test_timer.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include - -int main(int argc, const char *argv[]) -{ - struct timeval start; - struct timeval end; - - - gettimeofday(&start, NULL); - gettimeofday(&end, NULL); - - uint32_t st; - uint32_t en; - - st = start.tv_sec * 1000 + start.tv_usec / 1000; - en = end.tv_sec * 1000 + end.tv_usec / 1000; - - printf("Command execution time :\t %d ms %d us\n", en-st, (end.tv_usec - start.tv_usec)%1000); - - return 0; -} diff --git a/src/profiling/ace-dependencies/src/test_xml2.cpp b/src/profiling/ace-dependencies/src/test_xml2.cpp deleted file mode 100644 index a2040ce..0000000 --- a/src/profiling/ace-dependencies/src/test_xml2.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include -#include - - -int main(int argc, const char *argv[]) -{ - struct timeval start; - struct timeval end; - - - gettimeofday(&start, NULL); - xmlCleanupGlobals(); - gettimeofday(&end, NULL); - - - uint32_t st; - uint32_t en; - - st = start.tv_sec * 1000 + start.tv_usec / 1000; - en = end.tv_sec * 1000 + end.tv_usec / 1000; - - printf("Command execution time :\t %d ms %d us\n", en-st, (end.tv_usec - start.tv_usec)%1000); - - return 0; -} diff --git a/src/profiling/ace-dependencies/src/test_xmlsec.cpp b/src/profiling/ace-dependencies/src/test_xmlsec.cpp deleted file mode 100644 index b5b3e15..0000000 --- a/src/profiling/ace-dependencies/src/test_xmlsec.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include -#include - - -int main(int argc, const char *argv[]) -{ - struct timeval start; - struct timeval end; - - - gettimeofday(&start, NULL); - xmlSecInit(); - gettimeofday(&end, NULL); - - - uint32_t st; - uint32_t en; - - st = start.tv_sec * 1000 + start.tv_usec / 1000; - en = end.tv_sec * 1000 + end.tv_usec / 1000; - - printf("Command execution time :\t %d ms %d us\n", en-st, (end.tv_usec - start.tv_usec)%1000); - - return 0; -} diff --git a/src/profiling/script/test-widgets/wac2_0Test.wgt b/src/profiling/script/test-widgets/wac2_0Test.wgt deleted file mode 100644 index 948f1a9ff076f884bf3384fccc1f2a4589f04c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57770 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 diff --git a/src/rpc/security-daemon/api/ace_server_api.cpp b/src/rpc/security-daemon/api/ace_server_api.cpp deleted file mode 100644 index 652930b..0000000 --- a/src/rpc/security-daemon/api/ace_server_api.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ace_server_api.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains constants for ACE server interface & methods. - */ - -#include "ace_server_api.h" - -namespace RPC { - -const std::string AceServerApi::INTERFACE_NAME = - "org.tizen.AceCheckAccessInterface"; -const std::string AceServerApi::ECHO_METHOD = "echo"; -const std::string AceServerApi::CHECK_ACCESS_METHOD = "check_access"; - -} // namespace RPC diff --git a/src/rpc/security-daemon/api/ace_server_api.h b/src/rpc/security-daemon/api/ace_server_api.h deleted file mode 100644 index f4901ec..0000000 --- a/src/rpc/security-daemon/api/ace_server_api.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ace_server_api.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains definitions ACE server interface & methods. - */ -#ifndef WRT_SRC_RPC_SECURITY_DAEMON_ACE_SERVER_API_H_ -#define WRT_SRC_RPC_SECURITY_DAEMON_ACE_SERVER_API_H_ - -#include - -namespace RPC { - -struct AceServerApi { - // DBus interface name - static const std::string INTERFACE_NAME; - // RPC test function - // IN std::string - // OUT std::string - static const std::string ECHO_METHOD; - // IN string subject - // IN string resource - // IN vector function param names - // IN vector function param values - // OUT int allow, deny, popup type - static const std::string CHECK_ACCESS_METHOD; -}; - -} // namespace RPC - -#endif // WRT_SRC_RPC_SECURITY_DAEMON_ACE_SERVER_API_H_ diff --git a/src/rpc/security-daemon/api/ocsp_server_api.cpp b/src/rpc/security-daemon/api/ocsp_server_api.cpp deleted file mode 100644 index 2611267..0000000 --- a/src/rpc/security-daemon/api/ocsp_server_api.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ocsp_server_api.cpp - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief This file contains constants for OCSP server interface & methods. - */ - -#include "ocsp_server_api.h" - -namespace RPC { - -const std::string OcspServerApi::INTERFACE_NAME = - "org.tizen.OcspCheck"; -const std::string OcspServerApi::ECHO_METHOD = "echo"; -const std::string OcspServerApi::CHECK_ACCESS_METHOD = "OcspCheck"; - -} // namespace RPC diff --git a/src/rpc/security-daemon/api/ocsp_server_api.h b/src/rpc/security-daemon/api/ocsp_server_api.h deleted file mode 100644 index 4b3e0ae..0000000 --- a/src/rpc/security-daemon/api/ocsp_server_api.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file ocsp_server_api.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief This file contains definitions OCSP server interface & methods. - */ -#ifndef WRT_SRC_RPC_SECURITY_DAEMON_OCSP_SERVER_API_H_ -#define WRT_SRC_RPC_SECURITY_DAEMON_OCSP_SERVER_API_H_ - -#include - -namespace RPC { - -struct OcspServerApi { - // DBus interface name - static const std::string INTERFACE_NAME; - // RPC test function - // IN std::string - // OUT std::string - static const std::string ECHO_METHOD; - // Function checks WidgetStatus for installed widget. - // https://106.116.37.24/wiki/WebRuntime/Security/Widget_Signatures - // IN WidgetHandle Widget ID in Database - // OUT WidgetStatus GOOD/REVOKED - static const std::string CHECK_ACCESS_METHOD; -}; - -} // namespace RPC - -#endif // WRT_SRC_RPC_SECURITY_DAEMON_OCSP_SERVER_API_H_ diff --git a/src/rpc/security-daemon/api/popup_ace_data_types.h b/src/rpc/security-daemon/api/popup_ace_data_types.h deleted file mode 100644 index e8535a6..0000000 --- a/src/rpc/security-daemon/api/popup_ace_data_types.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_ace_data_types.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef POPUP_ACE_DATA_TYPES_H_ -#define POPUP_ACE_DATA_TYPES_H_ - -#include -#include -#include - -// additional data needed by PolicyEvaluaor to recognize Popup Response -struct AceUserdata -{ - //TODO INVALID_WIDGET_HANDLE is defined in wrt_plugin_export.h. - // I do not want to include that file here... - AceUserdata(): handle(-1) {} - - WidgetHandle handle; - std::string subject; - std::string resource; - std::vector paramKeys; - std::vector paramValues; - std::string session; -}; - -typedef bool SecurityStatus; - -#endif /* POPUP_ACE_DATA_TYPES_H_ */ diff --git a/src/rpc/security-daemon/api/popup_response_service_api.h b/src/rpc/security-daemon/api/popup_response_service_api.h deleted file mode 100644 index c8359d5..0000000 --- a/src/rpc/security-daemon/api/popup_response_service_api.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_response_service_api.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef WRT_SRC_RPC_SECURITY_DAEMON_API_POPUP_RESPONSE_SERVICE_API_H -#define WRT_SRC_RPC_SECURITY_DAEMON_API_POPUP_RESPONSE_SERVICE_API_H - -#include - -namespace RPC -{ - -struct PopupResponseServiceApi -{ - static std::string getInterfaceName() - { - return "org.tizen.PopupResponse"; - } - - static std::string getValidationMethodName() - { - return "validate"; - } -}; - -} - -#endif // WRT_SRC_RPC_SECURITY_DAEMON_API_POPUP_RESPONSE_SERVICE_API_H diff --git a/src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.cpp b/src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.cpp deleted file mode 100644 index fe38a03..0000000 --- a/src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_response_dispatcher.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#include "popup_response_dispatcher.h" -#include -#include -#include -#include -#include -#include -#include - -namespace RPC -{ - -void PopupResponseDispatcher::onMethodCall(GDBusConnection* /*connection*/, - const gchar* /*sender*/, - const gchar* /*objectPath*/, - const gchar* /*interfaceName*/, - const gchar* methodName, - GVariant* parameters, - GDBusMethodInvocation* invocation) -{ - if (0 == g_strcmp0(methodName, - PopupResponseServiceApi:: - getValidationMethodName().c_str())) - { - // popup answer data - bool allowed = false; - int iValid = 0; - - // ACE data - AceUserdata acedata; - - if (!DPL::DBus::ServerDeserialization::deserialize(parameters, - &allowed, - &iValid, - &(acedata.handle), - &(acedata.subject), - &(acedata.resource), - &(acedata.paramKeys), - &(acedata.paramValues))){ - g_dbus_method_invocation_return_dbus_error( - invocation, - "org.tizen.PopupResponse.UnknownError", - "Error in deserializing input parameters"); - return; - } - - if (acedata.paramKeys.size() != acedata.paramValues.size()) { - g_dbus_method_invocation_return_dbus_error( - invocation, - "org.tizen.PopupResponse.UnknownError", - "Varying sizes of parameter names and parameter values"); - return; - } - - // TODO create right prompt model (but this one is currently ok) - Prompt::PromptLabelsPtr promptDataPtr( - Prompt::PromptModel::getOneShotModel(acedata.resource)); - - Prompt::Validity valid = static_cast(iValid); - // assign SMACK labels basing on allowed/valid value - (void) allowed; - (void) valid; - - //TODO: SecurityDaemon actions - bool response = true; - - // IMPORTANT!!! Both things mentioned above: - // - assign SMACK labels... - // - "SecurityDaemon actions" - // must be handled in the Security Controller, - // here just need to post ONE appropriate event - // to the Controller and implement it there. - - g_dbus_method_invocation_return_value( - invocation, - DPL::DBus::ServerSerialization::serialize(response)); - } -} - -} diff --git a/src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.h b/src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.h deleted file mode 100644 index feff898..0000000 --- a/src/rpc/security-daemon/popup_response_service/popup_response_dispatcher.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_response_dispatcher.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef WRT_SRC_RPC_DAEMON_SERVICE_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_DISPATCHER_H -#define WRT_SRC_RPC_DAEMON_SERVICE_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_DISPATCHER_H - -#include - -namespace RPC { - -class PopupResponseDispatcher : public DPL::DBus::Dispatcher -{ -public: - void onMethodCall(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *methodName, - GVariant *parameters, - GDBusMethodInvocation *invocation); -}; - -} - -#endif // WRT_SRC_RPC_DAEMON_SERVICE_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_DISPATCHER_H diff --git a/src/rpc/security-daemon/popup_response_service/popup_response_service.cpp b/src/rpc/security-daemon/popup_response_service/popup_response_service.cpp deleted file mode 100644 index 7289488..0000000 --- a/src/rpc/security-daemon/popup_response_service/popup_response_service.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_response_service.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#include -#include -#include -#include "popup_response_service.h" -#include "popup_response_service_config.h" - -namespace -{ -const std::string nodeInfo = - "" - "" - " " - " " - // popup answer data - " " - " " - - // this is copied from ace_server_dbus_interface - " " - " " - " " - " " - " " - - " " - " " - " " - ""; -} - -namespace RPC { - -void PopupResponseService::initialize() -{ - g_type_init(); - - auto ifaces = DPL::DBus::Interface::fromXMLString(nodeInfo); - if (ifaces.empty()) - { - ThrowMsg(DPL::Exception, "No interface description."); - } - - auto iface = ifaces.at(0); - - m_dispatcher.reset(new PopupResponseDispatcher()); - iface->setDispatcher(m_dispatcher.get()); - - m_object = DPL::DBus::Object::create(PopupResponseServiceConfig::getObjectPath(), - iface); -} - -void PopupResponseService::deinitialize() -{ - m_object.reset(); - m_dispatcher.reset(); -} - -void PopupResponseService::start() -{ - m_connection = DPL::DBus::Connection::systemBus(); - m_connection->registerObject(m_object); - m_connection->registerService(PopupResponseServiceConfig::getServiceName()); -} - -void PopupResponseService::stop() -{ - m_connection.reset(); -} - -} - -DAEMON_REGISTER_SERVICE_MODULE(RPC::PopupResponseService) diff --git a/src/rpc/security-daemon/popup_response_service/popup_response_service.h b/src/rpc/security-daemon/popup_response_service/popup_response_service.h deleted file mode 100644 index 6b4c933..0000000 --- a/src/rpc/security-daemon/popup_response_service/popup_response_service.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_response_service.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef WRT_RPC_SECURITY_DAEMON_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_SERVICE_H -#define WRT_RPC_SECURITY_DAEMON_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_SERVICE_H - -#include -#include -#include -#include -#include "popup_response_dispatcher.h" - -namespace RPC { - -class PopupResponseService : public SecurityDaemon::DaemonService -{ -public: - void initialize(); - - void deinitialize(); - - void start(); - - void stop(); - -private: - DPL::DBus::ConnectionPtr m_connection; - DPL::DBus::ObjectPtr m_object; - std::unique_ptr m_dispatcher; -}; - -} - -#endif // WRT_RPC_SECURITY_DAEMON_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_SERVICE_H diff --git a/src/rpc/security-daemon/popup_response_service/popup_response_service_config.h b/src/rpc/security-daemon/popup_response_service/popup_response_service_config.h deleted file mode 100644 index 5be50aa..0000000 --- a/src/rpc/security-daemon/popup_response_service/popup_response_service_config.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file popup_response_service_info.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef WRT_SRC_RPC_SECURITY_DAEMON_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_SERVICE_CONFIG_H -#define WRT_SRC_RPC_SECURITY_DAEMON_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_SERVICE_CONFIG_H - -namespace RPC -{ - -struct PopupResponseServiceConfig -{ - static std::string getObjectPath() - { - return "/org/tizen/PopupResponse"; - } - - static std::string getServiceName() - { - return "org.tizen.PopupResponse"; - } -}; - -} - -#endif // WRT_SRC_RPC_SECURITY_DAEMON_POPUP_RESPONSE_SERVICE_POPUP_RESPONSE_SERVICE_CONFIG_H diff --git a/src/rpc/security-daemon/security_daemon_dbus_config.cpp b/src/rpc/security-daemon/security_daemon_dbus_config.cpp deleted file mode 100644 index 386063b..0000000 --- a/src/rpc/security-daemon/security_daemon_dbus_config.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file security_daemon_dbus_config.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains security daemon DBus configuration constants. - */ -#include "security_daemon_dbus_config.h" - -#include - -namespace RPC { - -const std::string SecurityDaemonConfig::OBJECT_PATH = - "/org/tizen/SecurityDaemon"; -const std::string SecurityDaemonConfig::SERVICE_NAME = - "org.tizen.SecurityDaemon"; - -} // namespace RPC diff --git a/src/rpc/security-daemon/security_daemon_dbus_config.h b/src/rpc/security-daemon/security_daemon_dbus_config.h deleted file mode 100644 index 2dd30fb..0000000 --- a/src/rpc/security-daemon/security_daemon_dbus_config.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file security_daemon_dbus_config.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains security daemon DBus configuration. - */ -#ifndef WRT_SRC_RPC_SECURITY_DAEMON_DBUS_CONFIG_H_ -#define WRT_SRC_RPC_SECURITY_DAEMON_DBUS_CONFIG_H_ - -#include - -namespace RPC { - -struct SecurityDaemonConfig { - static const std::string OBJECT_PATH; - static const std::string SERVICE_NAME; -}; - -} // namespace RPC - -#endif // WRT_SRC_RPC_SECURITY_DAEMON_DBUS_CONFIG_H_ diff --git a/src/rpc/ui-process/fake_rpc_connection.cpp b/src/rpc/ui-process/fake_rpc_connection.cpp deleted file mode 100644 index 7aded06..0000000 --- a/src/rpc/ui-process/fake_rpc_connection.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file fake_rpc_connection.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of fake RPC connection - */ -#include "fake_rpc_connection.h" - -using namespace DPL; -using namespace DPL::RPC; - -// This is helper class for defining servers in Client side via string address -// (the same as with sockets). -// It is is used as Singleton (it is for private usage for Client and Server -class FakeRpcServerMapper{ -private: - FakeRpcServerMapper() {} - ~FakeRpcServerMapper() {} - static void RegisterServer(FakeRpcServer *server, const Address &addr) - { - LogPedantic("Registering Server..."); - m_servers.insert(std::make_pair(addr, server)); - } - - static void UnregisterServer(const Address &addr) - { - LogPedantic("Unregistering Server..."); - m_servers.erase(addr); - } - - static FakeRpcServer *GetServer(const Address &addr) - { - LogPedantic("Getting Server..."); - AddServMap::iterator ret = m_servers.find(addr); - if(ret == m_servers.end()) - return NULL; - return ret->second; - } - - typedef std::map AddServMap; - static AddServMap m_servers; - - friend class FakeRpcServer; - friend class FakeRpcClient; -}; -FakeRpcServerMapper::AddServMap FakeRpcServerMapper::m_servers; - -FakeRpcConnection::FakeRpcConnection(FakeRpcConnector *connector) -: m_other(NULL), - m_connector(connector) -{ -} - -FakeRpcConnection::~FakeRpcConnection() -{ - LogPedantic("DTOR"); - if(m_connector) - m_connector->Close(this); -} - -void FakeRpcConnection::AsyncCall(const RPCFunction &function) -{ - typedef AbstractRPCConnectionEvents::AsyncCallEvent AsyncCallEvent; - - m_other->EventSupport::EmitEvent( - AsyncCallEvent(RPCFunction(function), EventSender(this)), - DPL::Event::EmitMode::Queued); -} - -/////////////////////////////////// - -FakeRpcClient::FakeRpcClient(): m_connection(NULL) -{ - Touch(); -} - -FakeRpcClient::~FakeRpcClient() -{ - Close(); -} - -void FakeRpcClient::Open(const std::string &addr) -{ - LogPedantic("Openning Client..."); - if (m_connection){ - //todo throw that already Opened - LogPedantic("Client already opened!"); - return; - } - - FakeRpcServer *serv = FakeRpcServerMapper::GetServer(Address(addr)); - - if(NULL == serv){ - LogPedantic("Server not found."); - return; - } - - LogPedantic("Server found."); - - m_connection = new FakeRpcConnection(this); - - LogPedantic("client->server Connecting event emit..."); - - FakeRPCEvents::ConnectingEvent ret(this, m_connection); - serv->DPL::Event::ControllerEventHandler - ::PostEvent(ret); -} - -void FakeRpcClient::Close(FakeRpcConnection */*connection*/) -{ - if(m_connection){ - LogPedantic("Closing Client..."); - m_connection->m_connector = NULL; - m_connection = NULL; - } -} - -void FakeRpcClient::OnEventReceived(const FakeRPCEvents::ConnectingEvent &event) -{ - LogPedantic("Client On ConnectingEvent..."); - typedef AbstractRPCConnectorEvents::ConnectionEstablishedEvent - EstablishedEvent; - - FakeRpcConnection *server_connection = event.GetArg1(); - m_connection->m_other = server_connection; - - EventSupport::EmitEvent( - EstablishedEvent(NULL, m_connection, EventSender(this)), - DPL::Event::EmitMode::Queued); -} - - -/////////////////////////////////// - -FakeRpcServer::FakeRpcServer() -{ - Touch(); -} - -FakeRpcServer::~FakeRpcServer() -{ - CloseAll(); -} - -void FakeRpcServer::Open(const std::string &addr) -{ - LogPedantic("Opening Server..."); - FakeRpcServerMapper::RegisterServer(this,Address(addr)); -} - -void FakeRpcServer::Close(FakeRpcConnection *connection) -{ - std::set::iterator it = m_connections.find(connection); - if(it != m_connections.end()){ - connection->m_connector = NULL; - m_connections.erase(it); - } -} - -void FakeRpcServer::CloseAll() -{ - LogPedantic("Closing Server..."); - FOREACH(it, m_connections){ - (*it)->m_connector = NULL; - } - m_connections.clear(); - LogPedantic("Connections closed"); -} - -void FakeRpcServer::OnEventReceived(const FakeRPCEvents::ConnectingEvent &event) -{ - LogPedantic("Server On ConnectingEvent..."); - typedef AbstractRPCConnectorEvents::ConnectionEstablishedEvent - EstablishedEvent; - - FakeRpcClient* client = event.GetArg0(); - FakeRpcConnection* client_connection = event.GetArg1(); - - FakeRpcConnection* server_connection = new FakeRpcConnection(this); - server_connection->m_other = client_connection; - - LogPedantic("Storing connection"); - m_connections.insert(server_connection); - - FakeRPCEvents::ConnectingEvent ret(client, server_connection); - - LogPedantic("Established event emit..."); - EventSupport::EmitEvent( - EstablishedEvent(NULL, server_connection, EventSender(this)), - DPL::Event::EmitMode::Queued); - - LogPedantic("server->client Connecting event emit..."); - client->DPL::Event::ControllerEventHandler - ::PostEvent(ret); -} - diff --git a/src/rpc/ui-process/fake_rpc_connection.h b/src/rpc/ui-process/fake_rpc_connection.h deleted file mode 100644 index c45860b..0000000 --- a/src/rpc/ui-process/fake_rpc_connection.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file fake_rpc_connection.h - * @author Pawel Sikorski (p.sikorsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for fake RPC connection - */ - -#ifndef DPL_FAKE_RPC_CONNECTION_H -#define DPL_FAKE_RPC_CONNECTION_H - -#include -#include -#include -#include -#include -#include - -class FakeRpcClient; -class FakeRpcServer; -class FakeRpcConnection; -class FakeRpcConnector; - -namespace FakeRPCEvents{ -DECLARE_GENERIC_EVENT_2(ConnectingEvent, FakeRpcClient *, FakeRpcConnection *) -} - -class FakeRpcConnector -: public DPL::RPC::AbstractRPCConnector - ,public DPL::Event::Controller::Type> -{ -public: - virtual void Close(FakeRpcConnection *) = 0; -}; - -// This is Fake Connection, that during Async call emmits (to itself) -class FakeRpcConnection : public DPL::RPC::AbstractRPCConnection -{ -public: - virtual ~FakeRpcConnection(); - virtual void AsyncCall(const DPL::RPC::RPCFunction &function); - virtual void Ping() { /*empty*/} -protected: - explicit FakeRpcConnection(FakeRpcConnector *); - FakeRpcConnection *m_other; - FakeRpcConnector *m_connector; - friend class FakeRpcServer; - friend class FakeRpcClient; -}; - -// This is FakeRpc Client. During connection opening, it looks through -// registered servers to find appropriate one. If server is found, event is -// emitted to the server with information about the connection, which should -// be used for AsyncCall. -class FakeRpcClient -: public FakeRpcConnector -{ -public: - FakeRpcClient(); - virtual ~FakeRpcClient(); - void Open(const std::string &addr); - virtual void Close(FakeRpcConnection *connection = NULL); -protected: - void OnEventReceived(const FakeRPCEvents::ConnectingEvent &event); - - FakeRpcConnection * m_connection; - friend class FakeRpcServer; -}; - -// This is FakeRpc Server. During opening the server for listening, server -// registers itself to "common map", so Clients will be able to connect -// to him. -// Server listens for ConnectingEvent. -class FakeRpcServer -: public FakeRpcConnector -{ -public: - FakeRpcServer(); - virtual ~FakeRpcServer(); - void Open(const std::string &addr); - void CloseAll(); - virtual void Close(FakeRpcConnection *); -protected: - void OnEventReceived(const FakeRPCEvents::ConnectingEvent &event); - - std::set m_connections; - friend class FakeRpcClient; -}; - -#endif /* DPL_FAKE_RPC_CONNECTION_H */ diff --git a/src/rpc/ui-process/rpc_client.cpp b/src/rpc/ui-process/rpc_client.cpp deleted file mode 100644 index 6548643..0000000 --- a/src/rpc/ui-process/rpc_client.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file rpc_client.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - */ - -#include "rpc_client.h" - -#include -#include -#include -#include - -#include "ui_process_rpc.h" - -namespace UIProcess { - -RpcClient::RpcClient() : - m_initialized(false), - m_requestCount(0), - m_popupLoopHandle(0) -{ - DPL::Event::EventSupport::AddListener(this); - LogDebug("Opening Connection"); - - //FIXME check for errors - Open(connectionName); -} - -RpcClient::~RpcClient() -{ - Assert(m_requestCount == 0); - closeConnection(); -} - -void RpcClient::stopNestedLoop(const bool isAccessAllowed) -{ - DPL::Event::NestedLoopManagerSingleton::Instance().exit( - m_popupLoopHandle, - new PopupResponse(isAccessAllowed)); -} - -UniquePopupResponsePtr RpcClient::showSyncPopup(PolicyEffect popupType, - const AceUserdata &aceData) -{ - - if(!m_connection || !m_initialized) { - Throw(Exception::NotConnected); - } - - DPL::RPC::RPCFunction proc; - - //FIXME really lock all m_responseDelegate???? - Assert(++m_requestCount == 1); - m_responseDelegate = ResponseDelegate(this, &RpcClient::stopNestedLoop); - proc.AppendArg(popupType); - - // ACE additional data - proc.AppendArg(aceData.handle); - proc.AppendArg(aceData.subject); - proc.AppendArg(aceData.resource); - DPL::Serialization::Serialize(proc, aceData.paramKeys); - DPL::Serialization::Serialize(proc, aceData.paramValues); - - m_connection->AsyncCall(proc); - - m_popupLoopHandle = - DPL::Event::NestedLoopManagerSingleton::Instance().getNewHandle(); - - UniquePopupResponsePtr decision( - static_cast( - DPL::Event::NestedLoopManagerSingleton::Instance().begin( - m_popupLoopHandle)) - ); - m_popupLoopHandle = 0; - return std::move(decision); -} - -void RpcClient::OnEventReceived(const ConnectionEstablishedEvent& /*event*/) -{ - // using m_connection from FakeRPC parent - m_initialized = true; - Assert(m_connection); - - // Only one connection. Ignore any attempts to establish new one - DPL::Event::EventSupport::RemoveListener(this); - - m_connection->DPL::Event::EventSupport::AddListener(this); - m_connection->DPL::Event::EventSupport::AddListener(this); - m_connection->DPL::Event::EventSupport::AddListener(this); - - DPL::Event::EventSupport::EmitEvent( - AcceptingCallsEvent()); -} - -void RpcClient::OnEventReceived(const ConnectionClosedEvent& /*event*/) -{ - Assert(m_connection); - closeConnection(); -} - -void RpcClient::OnEventReceived(const ConnectionBrokenEvent& /*event*/) -{ - Assert(m_connection); - closeConnection(); -} - -void RpcClient::closeConnection() -{ - m_initialized = false; - if (m_connection) { - m_connection->DPL::Event::EventSupport::RemoveListener( - this); - m_connection->DPL::Event::EventSupport::RemoveListener( - this); - m_connection->DPL::Event::EventSupport::RemoveListener(this); - Close(m_connection); - } -} - -void RpcClient::OnEventReceived(const AsyncCallEvent& event) -{ - DPL::RPC::RPCFunction fun = event.GetArg0(); - - // consume rpc function - bool isAccessAllowed; - fun.ConsumeArg(isAccessAllowed); - - Assert(--m_requestCount == 0); - m_responseDelegate(isAccessAllowed); -} - -} // namespace UIProcess diff --git a/src/rpc/ui-process/rpc_client.h b/src/rpc/ui-process/rpc_client.h deleted file mode 100644 index 7e094f7..0000000 --- a/src/rpc/ui-process/rpc_client.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file rpc_client.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - */ - -#ifndef WRT_SRC_RPC_UI_PROCESS_RPC_CLIENT_H_ -#define WRT_SRC_RPC_UI_PROCESS_RPC_CLIENT_H_ - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include "fake_rpc_connection.h" - -namespace UIProcess { - -DECLARE_GENERIC_EVENT_0(AcceptingCallsEvent) - -struct PopupResponse -{ - PopupResponse(bool pIsAccessAllowed) : - isAccessAllowed(pIsAccessAllowed) - { - } - bool isAccessAllowed; -}; - -typedef std::unique_ptr UniquePopupResponsePtr; - -class RpcClient : - public FakeRpcClient, - public DPL::Event::EventSupport, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::AsyncCallEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectorEvents::ConnectionEstablishedEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::ConnectionClosedEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::ConnectionBrokenEvent> -{ - public: - typedef DPL::FastDelegate - ResponseDelegate; - - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, NotConnected) - }; - - RpcClient(); - virtual ~RpcClient(); - - UniquePopupResponsePtr showSyncPopup( - PolicyEffect effect, - const AceUserdata &aceData); - - private: - typedef DPL::RPC::AbstractRPCConnectionEvents::AsyncCallEvent AsyncCallEvent; - typedef DPL::RPC::AbstractRPCConnectorEvents::ConnectionEstablishedEvent - ConnectionEstablishedEvent; - typedef DPL::RPC::AbstractRPCConnectionEvents::ConnectionClosedEvent - ConnectionClosedEvent; - typedef DPL::RPC::AbstractRPCConnectionEvents::ConnectionBrokenEvent - ConnectionBrokenEvent; - - void closeConnection(); - - virtual void OnEventReceived(const ConnectionEstablishedEvent &event); - virtual void OnEventReceived(const ConnectionClosedEvent& event); - virtual void OnEventReceived(const ConnectionBrokenEvent& event); - virtual void OnEventReceived(const AsyncCallEvent& event); - - void stopNestedLoop(bool isAccessAllowed); - - bool m_initialized; - int m_requestCount; - ResponseDelegate m_responseDelegate; - DPL::Event::LoopHandle m_popupLoopHandle; -}; -} // namespace UIProcess - -#endif /* WRT_SRC_RPC_UI_PROCESS_RPC_CLIENT_H_ */ diff --git a/src/rpc/ui-process/rpc_server.cpp b/src/rpc/ui-process/rpc_server.cpp deleted file mode 100644 index e2a73ac..0000000 --- a/src/rpc/ui-process/rpc_server.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file rpc_server.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - */ - -#include "rpc_server.h" -#include -#include -#include - -#include "ui_process_rpc.h" -#include -#include -#include - - -IMPLEMENT_SINGLETON(UIProcess::RpcServer) - -namespace UIProcess { - - -RpcServer::RpcServer() : FakeRpcServer() -{ - DPL::Event::EventSupport::AddListener(this); - Open(connectionName); -} - -RpcServer::~RpcServer() -{ - closeConnection(); -} - - -void RpcServer::promptResult(const bool isAccessAllowed, - AceUserdata const * userData) -{ - if(!m_connection) { - Throw(Exception::NotConnected); - } - - Assert(userData); - //we should free ACE Userdata after sending it to rpc_client - std::unique_ptr data (const_cast(userData)); - - (void) data; - - DPL::RPC::RPCFunction fun; - fun.AppendArg(isAccessAllowed); - m_connection->AsyncCall(fun); -} - -void RpcServer::closeConnection() -{ - if(!!m_connection) - { - m_connection->DPL::Event::EventSupport::RemoveListener( - this); - m_connection->DPL::Event::EventSupport::RemoveListener( - this); - m_connection->DPL::Event::EventSupport::RemoveListener(this); - Close(m_connection.Get()); - m_connection.Reset(); - } -} - -void RpcServer::OnEventReceived(const AsyncCallEvent& event) -{ - DPL::RPC::RPCFunction fun = event.GetArg0(); - - // consume rpc function - PolicyEffect popupType; - fun.ConsumeArg(popupType); - - //prompt result will free memory of data - AceUserdata* data = new AceUserdata(); - fun.ConsumeArg(data->handle); - fun.ConsumeArg(data->subject); - fun.ConsumeArg(data->resource); - DPL::Deserialization::Deserialize(fun,data->paramKeys); - DPL::Deserialization::Deserialize(fun,data->paramValues); - - PopupsServerSingleton::Instance().showACEPopup(popupType, - data, - PopupsServer::IPCResponseDelegate(this, - &RpcServer::promptResult)); -} - -void RpcServer::OnEventReceived(const ConnectionEstablishedEvent& event) -{ - Assert(!m_connection); - m_connection.Reset(static_cast(event.GetArg1())); - - // Only one connection. Ignore any attempts to establish new one - DPL::Event::EventSupport::RemoveListener(this); - - m_connection->DPL::Event::EventSupport::AddListener(this); - m_connection->DPL::Event::EventSupport::AddListener(this); - m_connection->DPL::Event::EventSupport::AddListener(this); -} - -void RpcServer::OnEventReceived(const ConnectionClosedEvent& /*event*/) -{ - Assert(!!m_connection); - closeConnection(); -} - -void RpcServer::OnEventReceived(const ConnectionBrokenEvent& /*event*/) -{ - Assert(!!m_connection); - closeConnection(); -} -} // namespace UIProcess diff --git a/src/rpc/ui-process/rpc_server.h b/src/rpc/ui-process/rpc_server.h deleted file mode 100644 index a9e55a9..0000000 --- a/src/rpc/ui-process/rpc_server.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file rpc_server.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - */ - -#ifndef WRT_SRC_RPC_UI_PROCESS_RPC_SERVER_H_ -#define WRT_SRC_RPC_UI_PROCESS_RPC_SERVER_H_ - -#include -#include -#include -#include -#include "fake_rpc_connection.h" - - -namespace UIProcess { - -class RpcServer : - public FakeRpcServer, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::AsyncCallEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectorEvents::ConnectionEstablishedEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::ConnectionClosedEvent>, - private DPL::Event::EventListener< - DPL::RPC::AbstractRPCConnectionEvents::ConnectionBrokenEvent> -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, NotConnected) - }; - - virtual ~RpcServer(); - - private: - typedef DPL::RPC::AbstractRPCConnectionEvents::AsyncCallEvent AsyncCallEvent; - typedef DPL::RPC::AbstractRPCConnectorEvents::ConnectionEstablishedEvent - ConnectionEstablishedEvent; - typedef DPL::RPC::AbstractRPCConnectionEvents::ConnectionClosedEvent - ConnectionClosedEvent; - typedef DPL::RPC::AbstractRPCConnectionEvents::ConnectionBrokenEvent - ConnectionBrokenEvent; - - friend class DPL::Singleton; - - RpcServer(); - void promptResult(const bool isAccessAllowed, - AceUserdata const * userData); - void closeConnection(); - - virtual void OnEventReceived(const ConnectionEstablishedEvent &event); - virtual void OnEventReceived(const ConnectionClosedEvent& event); - virtual void OnEventReceived(const ConnectionBrokenEvent& event); - virtual void OnEventReceived(const AsyncCallEvent& event); - - DPL::ScopedPtr m_connection; -}; - -} // namespace UIProcess - -typedef DPL::Singleton RpcServerSingleton; - -#endif /* WRT_SRC_RPC_UI_PROCESS_RPC_SERVER_H_ */ diff --git a/src/rpc/ui-process/ui_process_rpc.h b/src/rpc/ui-process/ui_process_rpc.h deleted file mode 100644 index aa36471..0000000 --- a/src/rpc/ui-process/ui_process_rpc.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file ui_process_rpc.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Common declarations for ui process server and client - */ - -#ifndef WRT_SRC_RPC_UI_PROCESS_UI_PROCESS_RPC_H_ -#define WRT_SRC_RPC_UI_PROCESS_UI_PROCESS_RPC_H_ - -#include - -namespace UIProcess { - -//FIXME change to connectionName based on widgetName -const std::string connectionName = "UIProcessPopupsServer"; -} - - -#endif /* WRT_SRC_RPC_UI_PROCESS_UI_PROCESS_RPC_H_ */ diff --git a/src/setting/CMakeLists.txt b/src/setting/CMakeLists.txt deleted file mode 100755 index 7e382a6..0000000 --- a/src/setting/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -ADD_SUBDIRECTORY(webapp-detail) diff --git a/src/setting/webapp-detail/CMakeLists.txt b/src/setting/webapp-detail/CMakeLists.txt deleted file mode 100644 index a9d0149..0000000 --- a/src/setting/webapp-detail/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -SET(TARGET_UG_LIB "ug-webapp-detail-efl") -SET(TARGET_UG_EDJ "web-app.edj") -SET(UGDIR "${UG_INSTALL_PREFIX}/ug/lib") -SET(EDJDIR "${UG_INSTALL_PREFIX}/ug/res/edje/${TARGET_UG_LIB}") - -PKG_CHECK_MODULES(UG_WEB_APP_DETAIL_DEPS - ecore - elementary - ui-gadget - dpl-efl - dpl-ace - dpl-ace-dao-rw - dpl-wrt-dao-rw - REQUIRED) - -SET(UG_SOURCES - ug.cpp - view.cpp - mainview.cpp - detailview.cpp - permview.cpp - wac_feature.cpp - tizen_feature.cpp -) - -INCLUDE_DIRECTORIES(${UG_WEB_APP_DETAIL_DEPS_INCLUDE_DIRS}) -ADD_LIBRARY(${TARGET_UG_LIB} SHARED ${UG_SOURCES}) -ADD_DEFINITIONS("-DEDJFILE=\"${EDJDIR}/${TARGET_UG_EDJ}\"") - -STRING(REGEX REPLACE "[^0-9].*" "" UG_MAJOR_VERSION ${CMAKE_PACKAGE_VERSION}) -SET_TARGET_PROPERTIES(${TARGET_UG_LIB} PROPERTIES SOVERSION ${UG_MAJOR_VERSION}) -SET_TARGET_PROPERTIES(${TARGET_UG_LIB} PROPERTIES VERSION ${CMAKE_PACKAGE_VERSION}) -TARGET_LINK_LIBRARIES(${TARGET_UG_LIB} ${UG_WEB_APP_DETAIL_DEPS_LDFLAGS}) -INSTALL(TARGETS ${TARGET_UG_LIB} DESTINATION ${UGDIR}) - -ADD_SUBDIRECTORY(edc) diff --git a/src/setting/webapp-detail/detailview.cpp b/src/setting/webapp-detail/detailview.cpp deleted file mode 100644 index 1575834..0000000 --- a/src/setting/webapp-detail/detailview.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include -#include -#include - -#include "detailview.h" -#include "util.h" - -namespace WebAppDetailSetting { - -void DetailView::getLocalizedInfo(void) -{ - DPL::OptionalString locale; - - Assert(m_dao); - - locale = m_dao->getDefaultlocale(); - if (locale.IsNull()) { - DPL::String lang_tag(L""); - m_localizedInfo = m_dao->getLocalizedInfo(lang_tag); - } else { - m_localizedInfo = m_dao->getLocalizedInfo(*locale); - } -} - -void DetailView::addField(const char *title) -{ - Evas_Object *ly; - - Assert(m_bx && title); - - ly = elm_layout_add(m_bx); - if (!ly) - return; - elm_layout_theme_set(ly, "layout", "dialogue", "title"); - evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0); - elm_object_part_text_set(ly, "elm.text", title); - evas_object_show(ly); - elm_box_pack_end(m_bx, ly); -} - -void DetailView::addField(const char *title, const char *str) -{ - Evas_Object *ly; - Evas_Object *ef; - - Assert(m_bx && title); - - ly = elm_layout_add(m_bx); - if (!ly) - return; - elm_layout_theme_set(ly, "layout", "dialogue", "1icon"); - evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0); - - ef = elm_editfield_add(ly); - if (!ef) { - evas_object_del(ly); - return; - } - - elm_editfield_label_set(ef, title); - if (str) - elm_entry_entry_set(elm_editfield_entry_get(ef), str); - - elm_object_disabled_set(ef, EINA_TRUE); - elm_object_part_content_set(ly, "elm.icon", ef); - evas_object_show(ly); - elm_box_pack_end(m_bx, ly); -} - -void DetailView::addDefInfo(void) -{ - DPL::OptionalString ver; - - Assert(m_dao); - - addField(D_("IDS_COM_BODY_DETAILS_NAME"), - m_localizedInfo.name.IsNull() ? NULL : - DPL::ToUTF8String((*m_localizedInfo.name)).c_str()); - - ver = m_dao->getVersion(); - /* FIXME: i18n */ - addField("Version", - ver.IsNull() ? NULL : - DPL::ToUTF8String((*ver)).c_str()); - - /* FIXME: i18n */ - addField("Domain", - m_dao->isTrusted() ? "Trusted" : "Untrusted"); - - addField(D_("IDS_COM_BODY_DESCRIPTION"), - m_localizedInfo.description.IsNull() ? NULL : - DPL::ToUTF8String((*m_localizedInfo.description)).c_str()); -} - -void DetailView::addViewModes(void) -{ - DPL::String mode; - WrtDB::WindowModeList modes; - - Assert(m_dao); - - modes = m_dao->getWindowModes(); - if (modes.size() > 0) { - FOREACH(it, modes) - mode += *it + L","; - /* remove comma */ - mode.resize(mode.length() - 1); - /* FIXME: i18n */ - addField("View modes", - DPL::ToUTF8String(mode).c_str()); - } else { - /* FIXME: i18n */ - addField("View modes", NULL); - } -} - -void DetailView::addAuthorInfo(void) -{ - DPL::OptionalString name; - DPL::OptionalString email; - DPL::OptionalString homepage; - - Assert(m_dao); - - addField(D_("IDS_COM_BODY_AUTHOR")); - - name = m_dao->getAuthorName(); - addField(D_("IDS_COM_BODY_DETAILS_NAME"), - name.IsNull() ? NULL : - DPL::ToUTF8String((*name)).c_str()); - - email = m_dao->getAuthorEmail(); - if (!email.IsNull()) - addField(D_("IDS_COM_BODY_EMAIL"), - DPL::ToUTF8String((*email)).c_str()); - - homepage = m_dao->getAuthorHref(); - /* FIXME: i18n */ - if (!homepage.IsNull()) - addField("Homepage", - DPL::ToUTF8String((*homepage)).c_str()); -} - -Evas_Object *DetailView::loadView(void) -{ - Evas_Object *scr; - - resetBase(); - - try { - m_dao.Reset(new WrtDB::WidgetDAO(m_appID)); - getLocalizedInfo(); - - scr = elm_scroller_add(m_parent); - if (!scr) - return NULL; - - m_bx = elm_box_add(scr); - if (!m_bx) { - evas_object_del(scr); - return NULL; - } - evas_object_size_hint_weight_set(m_bx, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(m_bx, EVAS_HINT_FILL, 0.0); - elm_object_content_set(scr, m_bx); - evas_object_show(m_bx); - - addDefInfo(); - addViewModes(); - addAuthorInfo(); - resetBase(scr); - - return scr; - - } catch (const std::bad_alloc &) { - return NULL; - } -} - -DetailView::DetailView(Evas_Object *parent, int appID) : - m_parent(parent), - m_bx(NULL), - m_appID(appID) -{ - Assert(parent); - m_dao.Reset(); -} - -DetailView::~DetailView(void) -{ -} - -} /* WebAppDetailSetting */ diff --git a/src/setting/webapp-detail/detailview.h b/src/setting/webapp-detail/detailview.h deleted file mode 100644 index 8a9093a..0000000 --- a/src/setting/webapp-detail/detailview.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_ - -#include - -#undef None -#include - -#include "view.h" - -namespace WebAppDetailSetting { - -class DetailView : public View -{ - Evas_Object *m_parent; - Evas_Object *m_bx; - DPL::ScopedPtr m_dao; - WrtDB::WidgetLocalizedInfo m_localizedInfo; - int m_appID; - - void getLocalizedInfo(void); - - void addField(const char *title); - void addField(const char *title, const char *str); - - void addDefInfo(void); - void addViewModes(void); - void addAuthorInfo(void); - - public: - DetailView(Evas_Object *parent, int appID); - ~DetailView(void); - - Evas_Object *loadView(void); -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_ */ diff --git a/src/setting/webapp-detail/edc/CMakeLists.txt b/src/setting/webapp-detail/edc/CMakeLists.txt deleted file mode 100644 index 30ad99e..0000000 --- a/src/setting/webapp-detail/edc/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -ADD_CUSTOM_TARGET(${TARGET_UG_EDJ} - COMMAND edje_cc - ${CMAKE_CURRENT_SOURCE_DIR}/main.edc ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_UG_EDJ} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/main.edc -) -ADD_DEPENDENCIES(${TARGET_UG_LIB} ${TARGET_UG_EDJ}) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_UG_EDJ} DESTINATION ${EDJDIR}) diff --git a/src/setting/webapp-detail/edc/defs.h b/src/setting/webapp-detail/edc/defs.h deleted file mode 100644 index ace769b..0000000 --- a/src/setting/webapp-detail/edc/defs.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_EDC_DEFS_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_EDC_DEFS_H_ - -#define GRP_CONTENT "content" -#define PART_DETAIL "swallow.detail" -#define PART_PERM "swallow.permission" -#define SIG_SHOW_PERM "show,permission" -#define SIG_SHOW_DETAIL "show,detail" -#define SRC_PROG "prog" - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_EDC_DEFS_H_ */ diff --git a/src/setting/webapp-detail/edc/main.edc b/src/setting/webapp-detail/edc/main.edc deleted file mode 100644 index 6ce44ab..0000000 --- a/src/setting/webapp-detail/edc/main.edc +++ /dev/null @@ -1,58 +0,0 @@ -#include "defs.h" - -collections { - group { - name, GRP_CONTENT; - - parts { - part { - name, PART_DETAIL; - type, SWALLOW; - description { - state, "default" 0.0; - } - description { - state, "permission" 0.0; - inherit, "default" 0.0; - rel1.relative, -1.0 0.0; - rel2.relative, 0.0 1.0; - } - } - - part { - name, PART_PERM; - type, SWALLOW; - description { - state, "default" 0.0; - rel1.relative, 1.0 0.0; - rel2.relative, 2.0 1.0; - } - description { - state, "permission" 0.0; - inherit, "default" 0.0; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - } - } - } - - programs { - program { - name, "show_detail"; - signal, SIG_SHOW_DETAIL; - source, SRC_PROG; - action, STATE_SET "default" 0.0; - target, PART_DETAIL; - target, PART_PERM; - } - program { - name, "show_permission"; - signal, SIG_SHOW_PERM; - source, SRC_PROG; - action, STATE_SET "permission" 0.0; - target, PART_DETAIL; - target, PART_PERM; - } - } - } -} diff --git a/src/setting/webapp-detail/feature.h b/src/setting/webapp-detail/feature.h deleted file mode 100644 index 5f318f4..0000000 --- a/src/setting/webapp-detail/feature.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_FEATURE_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_FEATURE_H_ - -#include -#include - -namespace WebAppDetailSetting { - -class Feature -{ - std::string m_name; - std::string m_uri; - AceDB::PreferenceTypes m_perm; - - public: - Feature(const char *name = NULL, const char *uri = NULL) : - m_perm(AceDB::PreferenceTypes::PREFERENCE_DEFAULT) - { - if (name) - m_name.assign(name); - if (uri) - m_uri.assign(uri); - } - void setPerm(AceDB::PreferenceTypes perm) { m_perm = perm; } - - std::string& getName(void) { return m_name; } - std::string& getUri(void) { return m_uri; } - AceDB::PreferenceTypes getPerm(void) { return m_perm; } -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_FEATURE_H_ */ diff --git a/src/setting/webapp-detail/mainview.cpp b/src/setting/webapp-detail/mainview.cpp deleted file mode 100644 index d867db3..0000000 --- a/src/setting/webapp-detail/mainview.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#include - -#include "mainview.h" -#include "edc/defs.h" -#include "util.h" - -namespace WebAppDetailSetting { - -void MainView::onBackBtnClicked(void *data, - Evas_Object */*eo*/, - void */*event_info*/) -{ - MainView *mainView; - - mainView = static_cast(data); - Assert(mainView); - ug_destroy_me(mainView->getUG()); -} - -void MainView::onSegCtrlChanged(void *data, - Evas_Object */*eo*/, - void *event_info) -{ - MainView *mainView; - Evas_Object *subCtnt; - Elm_Object_Item *it; - - mainView = static_cast(data); - Assert(mainView); - it = reinterpret_cast(event_info); - Assert(it); - - subCtnt = mainView->getSubCtnt(); - if (!subCtnt) - return; - - if (it == mainView->getSegCtrlDetail()) - elm_object_signal_emit(subCtnt, - SIG_SHOW_DETAIL, SRC_PROG); - else if (it == mainView->getSegCtrlPerm()) - elm_object_signal_emit(subCtnt, - SIG_SHOW_PERM, SRC_PROG); -} - -Evas_Object *MainView::createCtrlBar(Evas_Object *parent) -{ - Evas_Object *ctrlBar; - Evas_Object *segCtrl; - - ctrlBar = elm_controlbar_add(parent); - if (!ctrlBar) - return NULL; - elm_object_style_set(ctrlBar, "naviframe"); - - segCtrl = elm_segment_control_add(ctrlBar); - if (!segCtrl) { - evas_object_del(ctrlBar); - return NULL; - } - - m_segCtrlDetail = elm_segment_control_item_add(segCtrl, - NULL, - D_("IDS_COM_BODY_DETAILS")); - /* FIXME: i18n */ - m_segCtrlPerm = elm_segment_control_item_add(segCtrl, NULL, "Permissions"); - elm_segment_control_item_selected_set(m_segCtrlDetail, EINA_TRUE); - elm_controlbar_object_item_append(ctrlBar, segCtrl, 2); - evas_object_smart_callback_add(segCtrl, "changed", onSegCtrlChanged, this); - - return ctrlBar; -} - -Evas_Object *MainView::createContent(Evas_Object *parent) -{ - Evas_Object *nf; - Evas_Object *btn; - Evas_Object *ctrlBar; - Evas_Object *ly; - Elm_Object_Item *it; - - Assert(parent); - nf = elm_naviframe_add(parent); - if (!nf) - return NULL; - - ly = elm_layout_add(nf); - if (!ly) - goto del_nf; - elm_layout_file_set(ly, EDJFILE, GRP_CONTENT); - - btn = elm_button_add(nf); - if (!btn) - goto del_nf; - elm_object_style_set(btn, "naviframe/end_btn/default"); - evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this); - /* FIXME: i18n */ - it = elm_naviframe_item_push(nf, "More details", btn, NULL, ly, NULL); - - ctrlBar = createCtrlBar(nf); - if (!ctrlBar) - goto del_nf; - elm_object_item_part_content_set(it, - ELM_NAVIFRAME_ITEM_OPTIONHEADER, ctrlBar); - - try { - m_detail.Reset(new DetailView(ly, m_appID)); - elm_object_part_content_set(ly, PART_DETAIL, m_detail->loadView()); - m_perm.Reset(new PermView(ly, m_appID)); - elm_object_part_content_set(ly, PART_PERM, m_perm->loadView()); - m_subCtnt = ly; - - return nf; - - } catch (const std::bad_alloc &) { - m_detail.Reset(); - m_perm.Reset(); - } - -del_nf: - evas_object_del(nf); - - return NULL; -} - -Evas_Object *MainView::loadView(void) -{ - Evas_Object *ly; - Evas_Object *eo; - Evas_Object *parent; - - Assert(m_ug); - resetBase(); - - parent = static_cast(ug_get_parent_layout(m_ug)); - Assert(parent); - - ly = elm_layout_add(parent); - if (!ly) - return NULL; - elm_layout_theme_set(ly, "layout", "application", "default"); - - eo = elm_bg_add(ly); - if (!eo) - goto del_ly; - elm_object_part_content_set(ly, "elm.swallow.bg", eo); - - eo = createContent(ly); - if (!eo) - goto del_ly; - elm_object_part_content_set(ly, "elm.swallow.content", eo); - - resetBase(ly); - - return ly; - -del_ly: - evas_object_del(ly); - - return NULL; -} - -MainView::MainView(struct ui_gadget *ug, int appId) : - m_ug(ug), - m_appID(appId), - m_subCtnt(NULL), - m_segCtrlDetail(NULL), - m_segCtrlPerm(NULL) -{ - Assert(ug); - - m_detail.Reset(); - m_perm.Reset(); -} - -MainView::~MainView(void) -{ -} - -} /* WebAppDetailSetting */ diff --git a/src/setting/webapp-detail/mainview.h b/src/setting/webapp-detail/mainview.h deleted file mode 100644 index 53c0e9d..0000000 --- a/src/setting/webapp-detail/mainview.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_MAINVIEW_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_MAINVIEW_H_ - -#include -#include - -#include "detailview.h" -#include "permview.h" -#include "view.h" - -namespace WebAppDetailSetting { - -class MainView : public View -{ - struct ui_gadget *m_ug; - int m_appID; - Evas_Object *m_subCtnt; - DPL::ScopedPtr m_detail; - DPL::ScopedPtr m_perm; - Elm_Object_Item *m_segCtrlDetail; - Elm_Object_Item *m_segCtrlPerm; - - static void onBackBtnClicked(void *data, - Evas_Object *eo, - void *event_info); - static void onSegCtrlChanged(void *data, - Evas_Object *eo, - void *event_info); - - Evas_Object *createContent(Evas_Object *parent); - Evas_Object *createCtrlBar(Evas_Object *parent); - - public: - MainView(struct ui_gadget *ug, int appId); - ~MainView(void); - - Evas_Object *loadView(void); - struct ui_gadget *getUG(void) { return m_ug; } - Evas_Object *getSubCtnt(void) { return m_subCtnt; } - Elm_Object_Item *getSegCtrlDetail(void) { return m_segCtrlDetail; } - Elm_Object_Item *getSegCtrlPerm(void) { return m_segCtrlPerm; } -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_MAINVIEW_H_ */ diff --git a/src/setting/webapp-detail/permview.cpp b/src/setting/webapp-detail/permview.cpp deleted file mode 100644 index 8242f54..0000000 --- a/src/setting/webapp-detail/permview.cpp +++ /dev/null @@ -1,550 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include -#include -#include -#include - -#include "permview.h" -#include "wac_feature.h" -#include "tizen_feature.h" -#include "util.h" - -namespace WebAppDetailSetting { - -void PermView::onFeatureClicked(void */*data*/, - Evas_Object */*obj*/, - void *event_info) -{ - Elm_Object_Item *it; - - it = static_cast(event_info); - Assert(it); - elm_genlist_item_selected_set(it, EINA_FALSE); - elm_genlist_item_expanded_set(it, !elm_genlist_item_expanded_get(it)); -} - -void PermView::onPermClicked(void *data, - Evas_Object */*obj*/, - void *event_info) -{ - PermData *permData; - FeatureData *featureData; - Elm_Object_Item *it; - Elm_Object_Item *parent_it; - - it = static_cast(event_info); - Assert(it); - permData = static_cast(data); - Assert(permData); - featureData = permData->m_featureData; - Assert(featureData); - SettingsLogic::setWidgetDevCapSetting( - featureData->m_feature->getUri(), - featureData->m_appID, - permData->m_type); - featureData->m_feature->setPerm( - SettingsLogic::getWidgetDevCapSetting( - featureData->m_feature->getUri(), - featureData->m_appID)); - elm_genlist_item_selected_set(it, EINA_FALSE); - elm_genlist_item_update(it); - parent_it = elm_genlist_item_parent_get(it); - if (parent_it) - elm_genlist_item_update(parent_it); -} - -void PermView::onExpanded(void */*data*/, Evas_Object *obj, void *event_info) -{ - static Elm_Genlist_Item_Class itc; - Elm_Object_Item *it; - Elm_Object_Item *newIt; - PermData *permData; - FeatureData *featureData; - - Assert(obj && event_info); - it = static_cast(event_info); - featureData = static_cast(elm_object_item_data_get(it)); - Assert(featureData); - - itc.item_style = "dialogue/1text.1icon.2/expandable2"; - itc.func.text_get = getPermStr; - itc.func.content_get = getPermRadio; - itc.func.state_get = NULL; - itc.func.del = delPermData; - - try { - permData = new PermData(featureData, AceDB::PreferenceTypes::PREFERENCE_DENY); - newIt = elm_genlist_item_append(obj, - &itc, - permData, - it, - ELM_GENLIST_ITEM_NONE, - onPermClicked, - permData); - if (!newIt) - delete permData; - - permData = new PermData(featureData, AceDB::PreferenceTypes::PREFERENCE_DEFAULT); - newIt = elm_genlist_item_append(obj, - &itc, - permData, - it, - ELM_GENLIST_ITEM_NONE, - onPermClicked, - permData); - if (!newIt) - delete permData; - - } catch (const std::bad_alloc &) { - } - -} - -void PermView::onContracted(void */*data*/, - Evas_Object */*obj*/, - void *event_info) -{ - Elm_Object_Item *it; - - Assert(event_info); - it = static_cast(event_info); - elm_genlist_item_subitems_clear(it); - -} -char *PermView::getPermStr(void *data, - Evas_Object */*obj*/, - const char */*part*/) -{ - PermData *permData; - - Assert(data); - permData = static_cast(data); - switch (permData->m_type) { - case AceDB::PreferenceTypes::PREFERENCE_DENY: - /* FIXME: i18n */ - return strdup("Deny"); - case AceDB::PreferenceTypes::PREFERENCE_DEFAULT: - default: - /* FIXME: i18n */ - return strdup("Default"); - } - - return NULL; -} - -Evas_Object *PermView::getPermRadio(void *data, - Evas_Object */*obj*/, - const char */*part*/) -{ - PermData *permData; - FeatureData *featureData; - Evas_Object *radio; - Evas_Object *radio_grp; - int type; - - Assert(data); - permData = static_cast(data); - featureData = permData->m_featureData; - Assert(featureData); - - radio_grp = featureData->m_rg; - Assert(radio_grp); - radio = elm_radio_add(radio_grp); - if (!radio) - return NULL; - - type = static_cast(permData->m_type); - elm_radio_state_value_set(radio, type); - elm_radio_group_add(radio, radio_grp); - if (permData->m_type == featureData->m_feature->getPerm()) - elm_radio_value_set(radio, type); - - return radio; -} - -void PermView::delPermData(void *data, Evas_Object */*obj*/) -{ - PermData *permData; - - permData = static_cast(data); - delete permData; -} - -char *PermView::getFeatureTitle(void */*data*/, - Evas_Object */*obj*/, - const char */*part*/) -{ - const char *title; - - /* FIXME: i18n */ - title = "Features"; - - return strdup(title); -} - -char *PermView::getFeatureStr(void *data, - Evas_Object */*obj*/, - const char */*part*/) -{ - const char *str; - FeatureData *featureData; - - featureData = static_cast(data); - if (!featureData) - return NULL; - - str = featureData->m_feature->getName().c_str(); - if (!str) - return NULL; - - return strdup(str); -} - -char *PermView::getFeatureStrWithPerm(void *data, - Evas_Object */*obj*/, - const char *part) -{ - const char *str; - FeatureData *featureData; - - featureData = static_cast(data); - if (!featureData) - return NULL; - - str = NULL; - if (!strcmp(part, "elm.text.1")) { - str = featureData->m_feature->getName().c_str(); - } else if (!strcmp(part, "elm.text.2")) { - - switch (featureData->m_feature->getPerm()) { - case AceDB::PreferenceTypes::PREFERENCE_DENY: - /* FIXME: i18n */ - str = "Deny"; - break; - case AceDB::PreferenceTypes::PREFERENCE_DEFAULT: - default: - /* FIXME: i18n */ - str = "Default"; - break; - } - } - - if (!str) - return NULL; - - return strdup(str); -} - -void PermView::delFeatureData(void *data, Evas_Object */*obj*/) -{ - FeatureData *featureData; - - featureData = static_cast(data); - if (featureData) { - if (featureData->m_rg) - evas_object_del(featureData->m_rg); - delete featureData; - } -} - -char *PermView::getUriTitle(void */*data*/, - Evas_Object */*obj*/, - const char */*part*/) -{ - const char *title; - - /* FIXME: i18n */ - title = "URI"; - - return strdup(title); -} - -char *PermView::getUriStr(void *data, - Evas_Object */*obj*/, - const char */*part*/) -{ - const char *str; - UriData *uriData; - - uriData = static_cast(data); - if (!uriData) - return NULL; - - str = uriData->m_uri.c_str(); - if (!str) - return NULL; - - return strdup(str); -} - -void PermView::delUriData(void *data, Evas_Object */*obj*/) -{ - UriData *uriData; - - uriData = static_cast(data); - delete uriData; -} - -void PermView::addFeatureTitle(Evas_Object *gl) -{ - static Elm_Genlist_Item_Class itc; - - Assert(gl); - itc.item_style = "dialogue/title"; - itc.func.text_get = getFeatureTitle; - itc.func.content_get = NULL; - itc.func.state_get = NULL; - itc.func.del = NULL; - elm_genlist_item_append(gl, - &itc, - NULL, - NULL, - ELM_GENLIST_ITEM_NONE, - NULL, - NULL); -} - -void PermView::addFeatureWithPerm(Evas_Object *gl, int idx) -{ - static Elm_Genlist_Item_Class itc; - FeatureData *featureData; - Elm_Object_Item *it; - Evas_Object *rg; - - Assert(gl); - itc.item_style = "dialogue/2text.3/expandable"; - itc.func.text_get = getFeatureStrWithPerm; - itc.func.content_get = NULL; - itc.func.state_get = NULL; - itc.func.del = delFeatureData; - - rg = elm_radio_add(gl); - if (!rg) - return; - - try { - featureData = new FeatureData(&m_featureMap[idx], m_appID, rg); - it = elm_genlist_item_append(gl, - &itc, - static_cast(featureData), - NULL, - ELM_GENLIST_ITEM_SUBITEMS, - onFeatureClicked, - NULL); - if (!it) { - delete featureData; - return; - } - } catch (const std::bad_alloc &) { - evas_object_del(rg); - } -} - -void PermView::addFeature(Evas_Object *gl, int idx) -{ - static Elm_Genlist_Item_Class itc; - FeatureData *featureData; - Elm_Object_Item *it; - - Assert(gl); - itc.item_style = "dialogue/1text"; - itc.func.text_get = getFeatureStr; - itc.func.content_get = NULL; - itc.func.state_get = NULL; - itc.func.del = delFeatureData; - - try { - featureData = new FeatureData(&m_featureMap[idx], m_appID); - it = elm_genlist_item_append(gl, - &itc, - static_cast(featureData), - NULL, - ELM_GENLIST_ITEM_NONE, - NULL, - NULL); - if (!it) { - delete featureData; - return; - } - elm_genlist_item_display_only_set(it, EINA_TRUE); - } catch (const std::bad_alloc &) { - } -} - -void PermView::addFeatureList(Evas_Object *gl) -{ - std::map::iterator it; - - if (m_featureMap.empty()) - return; - - addFeatureTitle(gl); - switch (m_appType) { - case WrtDB::APP_TYPE_WAC10: - case WrtDB::APP_TYPE_WAC20: - for (it = m_featureMap.begin(); it != m_featureMap.end(); it++) - addFeatureWithPerm(gl, it->first); - break; - case WrtDB::APP_TYPE_TIZENWEBAPP: - for (it = m_featureMap.begin(); it != m_featureMap.end(); it++) - addFeature(gl, it->first); - break; - default: - break; - } - - evas_object_smart_callback_add(gl, "expanded", onExpanded, NULL); - evas_object_smart_callback_add(gl, "contracted", onContracted, NULL); -} - -void PermView::addUriTitle(Evas_Object *gl) -{ - static Elm_Genlist_Item_Class itc; - - Assert(gl); - itc.item_style = "dialogue/title"; - itc.func.text_get = getUriTitle; - itc.func.content_get = NULL; - itc.func.state_get = NULL; - itc.func.del = NULL; - elm_genlist_item_append(gl, - &itc, - NULL, - NULL, - ELM_GENLIST_ITEM_NONE, - NULL, - NULL); -} - -void PermView::addUri(Evas_Object *gl, DPL::String &uri) -{ - UriData *uriData; - static Elm_Genlist_Item_Class itc; - Elm_Object_Item *it; - - Assert(gl); - itc.item_style = "dialogue/1text"; - itc.func.text_get = getUriStr; - itc.func.content_get = NULL; - itc.func.state_get = NULL; - itc.func.del = delUriData; - - try { - uriData = new UriData(DPL::ToUTF8String(uri)); - it = elm_genlist_item_append(gl, - &itc, - static_cast(uriData), - NULL, - ELM_GENLIST_ITEM_NONE, - NULL, - NULL); - if (!it) { - delete uriData; - return; - } - elm_genlist_item_display_only_set(it, EINA_TRUE); - } catch (const std::bad_alloc &) { - } -} - -void PermView::addAccessInfo(Evas_Object *gl) -{ - if (m_accessInfo.empty()) - return; - - addUriTitle(gl); - FOREACH(accessInfo, m_accessInfo) - addUri(gl, accessInfo->strIRI); -} - -Evas_Object *PermView::createContent(Evas_Object *parent) -{ - Evas_Object *eo; - - Assert(parent); - if (m_featureMap.empty() && m_accessInfo.empty()) { - eo = elm_nocontents_add(parent); - if (!eo) - return NULL; - elm_nocontents_label_set(eo, D_("IDS_COM_BODY_NO_CONTENTS")); - return eo; - } - - eo = elm_genlist_add(parent); - if (!eo) - return NULL; - - addFeatureList(eo); - addAccessInfo(eo); - - return eo; -} - -Evas_Object *PermView::loadView(void) -{ - Evas_Object *ctnt; - WrtDB::DbWidgetFeatureSet features; - - resetBase(); - - try { - m_dao.Reset(new WrtDB::WidgetDAO(m_appID)); - features = m_dao->getFeaturesList(); - m_appType = m_dao->getWidgetType().appType; - switch (m_appType) { - case WrtDB::APP_TYPE_WAC10: - case WrtDB::APP_TYPE_WAC20: - m_featureMap = WacFeature::getFeatureMap(features, m_appID); - break; - case WrtDB::APP_TYPE_TIZENWEBAPP: - m_featureMap = TizenFeature::getFeatureMap(features); - break; - default: - break; - } - m_dao->getWidgetAccessInfo(m_accessInfo); - - ctnt = createContent(m_parent); - if (!ctnt) - return NULL; - resetBase(ctnt); - - return ctnt; - - } catch (const std::bad_alloc &) { - return NULL; - } -} - -PermView::PermView(Evas_Object *parent, int appID) : - m_parent(parent), - m_appType(WrtDB::APP_TYPE_UNKNOWN), - m_appID(appID) -{ - m_dao.Reset(); - m_featureMap.clear(); - m_accessInfo.clear(); -} - -PermView::~PermView(void) -{ -} - -} /* WebAppDetailSetting */ diff --git a/src/setting/webapp-detail/permview.h b/src/setting/webapp-detail/permview.h deleted file mode 100644 index 120bf45..0000000 --- a/src/setting/webapp-detail/permview.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_ - -#include - -#include - -#include "view.h" -#include "feature.h" - -namespace WebAppDetailSetting { - -class PermView : public View -{ - Evas_Object *m_parent; - WrtDB::AppType m_appType; - int m_appID; - DPL::ScopedPtr m_dao; - std::map m_featureMap; - WrtDB::WidgetAccessInfoList m_accessInfo; - - /* Smart callbacks */ - static void onFeatureClicked(void *data, - Evas_Object *obj, - void *event_info); - static void onPermClicked(void *data, Evas_Object *obj, void *event_info); - static void onExpanded(void *data, Evas_Object *obj, void *event_info); - static void onContracted(void *data, Evas_Object *obj, void *event_info); - - /* Genlist item callbacks */ - static char *getPermStr(void *data, Evas_Object *obj, const char *part); - static Evas_Object *getPermRadio(void *data, - Evas_Object *obj, - const char *part); - static void delPermData(void *data, Evas_Object *obj); - static char *getFeatureTitle(void *data, Evas_Object *obj, const char *part); - static char *getFeatureStr(void *data, Evas_Object *obj, const char *part); - static char *getFeatureStrWithPerm(void *data, - Evas_Object *obj, - const char *part); - static void delFeatureData(void *data, Evas_Object *obj); - static char *getUriTitle(void *data, Evas_Object *obj, const char *part); - static char *getUriStr(void *data, Evas_Object *obj, const char *part); - static void delUriData(void *data, Evas_Object *obj); - - void addFeatureTitle(Evas_Object *gl); - void addFeature(Evas_Object *gl, int idx); - void addFeatureWithPerm(Evas_Object *gl, int idx); - void addFeatureList(Evas_Object *gl); - void addUriTitle(Evas_Object *gl); - void addUri(Evas_Object *gl, DPL::String &uri); - void addAccessInfo(Evas_Object *gl); - Evas_Object *createContent(Evas_Object *parent); - - public: - PermView(Evas_Object *parent, int appID); - ~PermView(void); - - Evas_Object *loadView(void); - -}; - -class FeatureData -{ - public: - Feature *m_feature; - Evas_Object *m_rg; - int m_appID; - - FeatureData(Feature *feature, int appID, Evas_Object *rg = NULL) : - m_feature(feature), - m_rg(rg), - m_appID(appID) { }; -}; - -class PermData -{ - public: - FeatureData *m_featureData; - AceDB::PreferenceTypes m_type; - - PermData(FeatureData *featureData, AceDB::PreferenceTypes type) : - m_featureData(featureData), - m_type(type) { }; -}; - -class UriData -{ - public: - std::string m_uri; - - UriData(std::string uri) : - m_uri(uri) { }; -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_ */ diff --git a/src/setting/webapp-detail/tizen_feature.cpp b/src/setting/webapp-detail/tizen_feature.cpp deleted file mode 100644 index 2a32951..0000000 --- a/src/setting/webapp-detail/tizen_feature.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "tizen_feature.h" -#include "util.h" - -namespace WebAppDetailSetting { - -const char *TizenFeature::m_feature[] = { - "http://tizen.org/api/application", - "http://tizen.org/api/time", - "http://tizen.org/api/contact", - "http://tizen.org/api/calendar", - "http://tizen.org/api/call", - "http://tizen.org/api/messaging", - "http://tizen.org/api/bluetooth", - "http://tizen.org/api/geocoder", - "http://tizen.org/api/nfc", - "http://tizen.org/api/sensors", - "http://tizen.org/api/systeminfo", -}; - -/* FIXME: i18n */ -const char *TizenFeature::m_featureName[] = { - N_("Installed application"), - N_("Timezone"), - N_("Contacts"), - N_("Calendar"), - N_("Call Log"), - N_("Messaging"), - N_("Bluetooth"), - N_("Geocoder"), - N_("NFC"), - N_("Sensor"), - N_("System infomation"), -}; - -std::map TizenFeature::getFeatureMap( - WrtDB::DbWidgetFeatureSet &features) -{ - std::string uri; - std::map featureMap; - unsigned int i; - - FOREACH(feature, features) { - for (i = 0; i < sizeof(m_feature) / sizeof(*m_feature); i++) { - if (featureMap.find(i) != featureMap.end()) - continue; - - uri = DPL::ToUTF8String(feature->name); - if (!uri.compare(0, - strlen(m_feature[i]), - m_feature[i])) { - featureMap[i] = Feature(m_featureName[i], - uri.c_str()); - break; - } - } - } - - return featureMap; -} - -} /* WebAppDetailSetting */ diff --git a/src/setting/webapp-detail/tizen_feature.h b/src/setting/webapp-detail/tizen_feature.h deleted file mode 100644 index f42e845..0000000 --- a/src/setting/webapp-detail/tizen_feature.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_TIZEN_FEATURE_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_TIZEN_FEATURE_H_ - -#include - -#include "feature.h" - -namespace WebAppDetailSetting { - -enum tizenFeature { - TIZEN_FEATURE_APP = 0x00, - TIZEN_FEATURE_TIME, - TIZEN_FEATURE_CONTACTS, - TIZEN_FEATURE_CALENDAR, - TIZEN_FEATURE_CALL, - TIZEN_FEATURE_MESSAGING, - TIZEN_FEATURE_BLUETOOTH, - TIZEN_FEATURE_GEOCODER, - TIZEN_FEATURE_NFC, - TIZEN_FEATURE_SENSOR, - TIZEN_FEATURE_SYSTEMINFO, - TIZEN_FEATURE_MAX, -}; - -class TizenFeature -{ - static const char *m_feature[]; - static const char *m_featureName[]; - public: - static std::map getFeatureMap( - WrtDB::DbWidgetFeatureSet &features); -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_TIZEN_FEATURE_H_ */ diff --git a/src/setting/webapp-detail/ug.cpp b/src/setting/webapp-detail/ug.cpp deleted file mode 100644 index 6bccb59..0000000 --- a/src/setting/webapp-detail/ug.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include - -#undef None -#include -#include -#include - -#include "mainview.h" - -#define EXPORT_SYMBOL extern "C" __attribute__((visibility("default"))) - -struct priv { - WebAppDetailSetting::MainView *mainView; -}; - -static void *onCreate(struct ui_gadget *ug, - enum ug_mode /*mode*/, - bundle *data, - void *user_data) -{ - struct priv *priv; - int appID; - const char *pkgname; - - Assert(ug && user_data); - priv = static_cast(user_data); - - pkgname = bundle_get_val(data, "pkg_name"); - if (!pkgname) - return NULL; - - appID = static_cast - (WrtDB::WidgetDAOReadOnly::getHandle(DPL::FromASCIIString - (std::string(pkgname)))); - - /* Create MainView */ - try { - priv->mainView = new WebAppDetailSetting::MainView(ug, appID); - return priv->mainView->loadView(); - } catch (const std::bad_alloc &) { - return NULL; - } -} - -static void onDestroy(struct ui_gadget */*ug*/, - bundle */*data*/, - void *user_data) -{ - struct priv *priv; - - Assert(user_data); - priv = static_cast(user_data); - delete priv->mainView; - priv->mainView = NULL; -} - -EXPORT_SYMBOL int UG_MODULE_INIT(struct ug_module_ops *ops) -{ - struct priv *priv; - - Assert(ops); - priv = static_cast(calloc(1, sizeof(*priv))); - if (!priv) - return -1; - - WrtDB::WrtDatabase::attachToThread(); - AceDB::AceDAOReadOnly::attachToThread(); - - memset(ops, 0x00, sizeof(*ops)); - ops->priv = priv; - ops->create = onCreate; - ops->destroy = onDestroy; - ops->opt = UG_OPT_INDICATOR_ENABLE; - - return 0; -} - -EXPORT_SYMBOL void UG_MODULE_EXIT(struct ug_module_ops *ops) -{ - struct priv *priv; - - Assert(ops); - priv = static_cast(ops->priv); - if (priv->mainView) - delete priv->mainView; - free(priv); - - AceDB::AceDAOReadOnly::detachFromThread(); - WrtDB::WrtDatabase::detachFromThread(); -} diff --git a/src/setting/webapp-detail/util.h b/src/setting/webapp-detail/util.h deleted file mode 100644 index 5bb725a..0000000 --- a/src/setting/webapp-detail/util.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_UTIL_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_UTIL_H_ - -#include - -#define D_(str) dgettext("sys_string", str) -#define gettext_noop(str) (str) -#define N_(str) gettext_noop(str) - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_UTIL_H_ */ diff --git a/src/setting/webapp-detail/view.cpp b/src/setting/webapp-detail/view.cpp deleted file mode 100644 index ffdb216..0000000 --- a/src/setting/webapp-detail/view.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include "view.h" - -namespace WebAppDetailSetting { - -void delCb(void *data, - Evas */*e*/, - Evas_Object */*eo*/, - void */*event_info*/) -{ - View *v; - - v = static_cast(data); - Assert(v); - v->onDel(); - v->resetBase(); -} - -void showCb(void *data, - Evas */*e*/, - Evas_Object */*eo*/, - void */*event_info*/) -{ - View *v; - - v = static_cast(data); - Assert(v); - v->onShow(); -} - -void hideCb(void *data, - Evas */*e*/, - Evas_Object */*eo*/, - void */*event_info*/) -{ - View *v; - - v = static_cast(data); - Assert(v); - v->onHide(); -} - -void View::resetBase(Evas_Object *base) -{ - if (m_base) { - evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_DEL, delCb, this); - evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_SHOW, showCb, this); - evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_HIDE, hideCb, this); - } - - m_base = base; - - if (m_base) { - evas_object_event_callback_add(base, EVAS_CALLBACK_DEL, delCb, this); - evas_object_event_callback_add(base, EVAS_CALLBACK_SHOW, showCb, this); - evas_object_event_callback_add(base, EVAS_CALLBACK_HIDE, hideCb, this); - } -} - -View::~View(void) -{ - if (m_base) { - evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_DEL, delCb, this); - evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_SHOW, showCb, this); - evas_object_event_callback_del_full(m_base, EVAS_CALLBACK_HIDE, hideCb, this); - evas_object_del(m_base); - } -} - -} /* WebAppDetailSetting */ diff --git a/src/setting/webapp-detail/view.h b/src/setting/webapp-detail/view.h deleted file mode 100644 index 30fe2f3..0000000 --- a/src/setting/webapp-detail/view.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_VIEW_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_VIEW_H_ - -#include - -namespace WebAppDetailSetting { -class View -{ - Evas_Object *m_base; - - public: - View(void) : m_base(NULL) { }; - ~View(void); - - void resetBase(Evas_Object *base = NULL); - Evas_Object *getBase(void) { return m_base; } - virtual void onShow(void) { }; - virtual void onHide(void) { }; - virtual void onDel(void) { }; -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_VIEW_H_ */ diff --git a/src/setting/webapp-detail/wac_feature.cpp b/src/setting/webapp-detail/wac_feature.cpp deleted file mode 100644 index 70a2762..0000000 --- a/src/setting/webapp-detail/wac_feature.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include - -#include "wac_feature.h" -#include "util.h" - -namespace WebAppDetailSetting { - -const char *WacFeature::m_feature[] = { - "http://wacapps.net/api/accelerometer", - "http://wacapps.net/api/orientation", - "http://wacapps.net/api/camera", - "http://wacapps.net/api/devicestatus", - "http://wacapps.net/api/filesystem", - "http://wacapps.net/api/messaging", - "http://www.w3.org/TR/geolocation-API/", - "http://wacapps.net/api/pim.contact", - "http://wacapps.net/api/pim.calendar", - "http://wacapps.net/api/pim.task", - "http://wacapps.net/api/deviceinteraction", -}; - -/* FIXME: i18n */ -const char *WacFeature::m_featureName[] = { - N_("Accelerometer"), - N_("Rotation"), - N_("Camera"), - N_("Device status"), - N_("File system"), - N_("Messaging"), - N_("Location"), - N_("Contacts"), - N_("Calendar"), - N_("Task"), - N_("Device interaction"), -}; - -std::map WacFeature::getFeatureMap( - WrtDB::DbWidgetFeatureSet &features, - int appID) -{ - std::string uri; - std::map featureMap; - unsigned int i; - - FOREACH(feature, features) { - for (i = 0; i < sizeof(m_feature) / sizeof(*m_feature); i++) { - if (featureMap.find(i) != featureMap.end()) - continue; - - uri = DPL::ToUTF8String(feature->name); - if (!uri.compare(0, - strlen(m_feature[i]), - m_feature[i])) { - featureMap[i] = Feature(m_featureName[i], - m_feature[i]); - - featureMap[i].setPerm( - SettingsLogic::getWidgetDevCapSetting( - m_feature[i], appID)); - - break; - } - } - } - - return featureMap; -} - -} /* WebAppDetailSetting */ diff --git a/src/setting/webapp-detail/wac_feature.h b/src/setting/webapp-detail/wac_feature.h deleted file mode 100644 index 02870c4..0000000 --- a/src/setting/webapp-detail/wac_feature.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_WAC_FEATURE_H_ -#define WEB_SRC_SETTING_WEBAPP_DETAIL_WAC_FEATURE_H_ - -#include - -#include "feature.h" - -namespace WebAppDetailSetting { - -enum wacFeature { - WAC_FEATURE_ACCELEROMETER = 0x00, - WAC_FEATURE_ORIENTATION, - WAC_FEATURE_CAMERA, - WAC_FEATURE_DEV_STAT, - WAC_FEATURE_FILE_SYSTEM, - WAC_FEATURE_MESSAGING, - WAC_FEATURE_GEOLOCATION, - WAC_FEATURE_CONTACTS, - WAC_FEATURE_CALENDAR, - WAC_FEATURE_TASK, - WAC_FEATURE_DEV_INTERATION, - WAC_FEATURE_MAX, -}; - -class WacFeature -{ - static const char *m_feature[]; - static const char *m_featureName[]; - public: - static std::map getFeatureMap( - WrtDB::DbWidgetFeatureSet &features, - int appID); -}; - -} /* WebAppDetailSetting */ - -#endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_WAC_FEATURE_H_ */ diff --git a/src/shared-data/widget_state_property.cpp b/src/shared-data/widget_state_property.cpp deleted file mode 100644 index ce3c66e..0000000 --- a/src/shared-data/widget_state_property.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_state_property.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 0.1 - * @brief - */ - -#include "widget_state_property.h" - -WidgetStateProperty::WidgetStateProperty(DPL::Event::Model *model, - const WrtSharedObjectPtr& sharedObject, - WidgetHandle handle, - WidgetState state) : - Base(model), - m_sharedObject(sharedObject), - m_handle(handle) -{ - // set up default value - Set(state); - - // register value changed - m_sharedObject->AddListener(this); -} - -WidgetStateProperty::~WidgetStateProperty() -{ - // deregister - m_sharedObject->RemoveListener(this); - m_sharedObject->RemoveWidgetData(m_handle); -} - -void WidgetStateProperty::Set(const WidgetState &value) -{ - m_sharedObject->ChangeWidgetState(m_handle, value); -} - -WidgetState WidgetStateProperty::Get() const -{ - return m_sharedObject->GetWidgetState(m_handle); -} - -void WidgetStateProperty::ValueChanged(size_t propertyEnum, - const WidgetDataArray& /*value*/, - const void* info) -{ - Assert(WrtSharedObject::WIDGET_ENTRIES == propertyEnum && - "Unexpected property notification"); - - if (info) { - const WidgetDataChange& change = *static_cast( - info); - - // do not notify about widget removal - if (change.data.handle == m_handle && !change.removed) { - EmitEvent(EventType(change.data.state, this->m_model), - DPL::EmitMode::Auto); - } - } -} diff --git a/src/shared-data/widget_state_property.h b/src/shared-data/widget_state_property.h deleted file mode 100644 index 50c646a..0000000 --- a/src/shared-data/widget_state_property.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_state_property.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 0.1 - * @brief - */ - -#ifndef WRT_SRC_SHAREDDATA_WIDGET_STATE_PROPERTY_H_ -#define WRT_SRC_SHAREDDATA_WIDGET_STATE_PROPERTY_H_ - -#include -#include "wrt_shared_object.h" - -/* - * Internally WidgetStateProperty is bound to a WrtSharedObject::WIDGET_ENTRIES - * array in shared object just like SharedProperty. However, it can only modify - * one specific widget data array element defined by widget handle. It also - * reacts on changes of this particular widget entry state. As a result, it can - * be used just like it was actually bound to a shared widget state. - */ -class WidgetStateProperty : - public DPL::Event::Property, - public DPL::ISharedObjectListener -{ - public: - typedef DPL::PropertyEvent EventType; - - WidgetStateProperty(DPL::Event::Model *model, - const WrtSharedObjectPtr& sharedObject, - WidgetHandle handle, - WidgetState state = WidgetState_Stopped); - - ~WidgetStateProperty(); - - virtual void Set(const WidgetState &value); - virtual WidgetState Get() const; - - protected: - // notify property listeners - virtual void ValueChanged(size_t propertyEnum, - const WidgetDataArray &value, - const void* info); - - private: - typedef DPL::Event::Property Base; - - WrtSharedObjectPtr m_sharedObject; - WidgetHandle m_handle; -}; - -#endif /* WRT_SRC_SHAREDDATA_WIDGET_STATE_PROPERTY_H_ */ diff --git a/src/shared-data/wrt_shared_object.cpp b/src/shared-data/wrt_shared_object.cpp deleted file mode 100644 index fe1aa1d..0000000 --- a/src/shared-data/wrt_shared_object.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * - * @file wrt_shared_object.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 0.1 - * @brief - */ - -#include "wrt_shared_object.h" -#include - -namespace { -const size_t WRT_SHARED_OBJECT_VERSION = 1; -const size_t WRT_SHARED_OBJECT_MAGIC_NUMBER = 666; -const std::string WRT_MSG_QUEUE_PREFIX = - "/wrt_engine_shared_object_msg_queue_"; -const DPL::SharedMemory::Key SHM_KEY = 12345; -const char* SEM_NAME = "/wrt_engine_shared_object_semaphore"; -} - -WrtSharedObjectPtr WrtSharedObject::Create() -{ - return DPL::SharedObjectFactory::Create(SHM_KEY, SEM_NAME); -} - -void WrtSharedObject::RemoveWidgetData(WidgetHandle handle) -{ - Assert(INVALID_WIDGET_HANDLE != handle && "Invalid widget handle"); - - ScopedFlaggedLock lock(*this); - - size_t count = PropertyRef(); - WidgetDataArray array; - memcpy(array, PropertyRef(), sizeof(array)); - - size_t processed = 0; - size_t i = 0; - for (; i < MAX_WIDGETS && processed < count; ++i) { - if (INVALID_WIDGET_HANDLE == array[i].handle) { - continue; - } - - processed++; - if (array[i].handle == handle) { - // TODO any additional logic? Can we always remove it - - // reset widget data in shm - array[i].handle = INVALID_WIDGET_HANDLE; - SetPropertyInternal(count - 1); - - WidgetDataChange change(handle, WidgetState_Stopped, true); - SetPropertyInternal(array, &change); - - LogDebug( - "Widget data removed from shared memory. Widget handle: " << - handle << " idx: " << i); - return; - } - } - LogWarning("Widget handle not found. No data removed"); -} - -void WrtSharedObject::ChangeWidgetState(WidgetHandle handle, - WidgetState state) -{ - Assert(INVALID_WIDGET_HANDLE != handle && "Invalid widget handle"); - - ScopedFlaggedLock lock(*this); - - size_t count = PropertyRef(); - WidgetDataArray array; - memcpy(array, PropertyRef(), sizeof(array)); - - size_t processed = 0; - size_t i = 0; - size_t firstFree = MAX_WIDGETS; - size_t match = MAX_WIDGETS; - for (; i < MAX_WIDGETS && processed < count; ++i) { - if (INVALID_WIDGET_HANDLE != array[i].handle) { - processed++; - if (array[i].handle == handle) { - match = i; - break; - } - } else if (MAX_WIDGETS == firstFree) { - // remember first free slot just in case - firstFree = i; - } - } - - // not found - if (MAX_WIDGETS == match) { - if (MAX_WIDGETS == firstFree) { - // all slots taken, take another one - if (count < MAX_WIDGETS && processed == count) { - firstFree = count; - } else { - LogError("Maximum number of widget entries reached"); - ThrowMsg(Exception::MaxWidgetsReached, - "Maximum number of widget entries reached"); - } - } - - // add new entry - array[firstFree].handle = handle; - array[firstFree].state = state; - SetPropertyInternal(count + 1); - } - // widget entry found - else { - // TODO conditional widget state logic - // Throw Exception::StateChangeFailed if state can't be changed - - array[match].state = state; - } - // add changed widget idx as additional info - WidgetDataChange change(handle, state, false); - SetPropertyInternal(array, &change); -} - -WidgetState WrtSharedObject::GetWidgetState(WidgetHandle handle) const -{ - ScopedFlaggedLock lock(*this); - - size_t count = PropertyRef(); - WidgetDataArray array; - memcpy(array, PropertyRef(), sizeof(array)); - - size_t processed = 0; - size_t i = 0; - for (; i < MAX_WIDGETS && processed < count; ++i) { - if (INVALID_WIDGET_HANDLE != array[i].handle) { - processed++; - if (array[i].handle == handle) { - return array[i].state; - } - } - } - - LogError("Widget " << handle << " has not been found"); - ThrowMsg(Exception::WidgetNotFound, "Widget has not been found"); -} - -void WrtSharedObject::Init() -{ - // TODO read settings from database - SetPropertyInternal(false); -} - -WrtSharedObject::MagicType WrtSharedObject::GetMagicNumber() const -{ - return WRT_SHARED_OBJECT_MAGIC_NUMBER; -} - -WrtSharedObject::VersionType WrtSharedObject::GetVersion() const -{ - return WRT_SHARED_OBJECT_VERSION; -} - -std::string WrtSharedObject::GetMsgQueuePrefix() const -{ - return WRT_MSG_QUEUE_PREFIX; -} diff --git a/src/shared-data/wrt_shared_object.h b/src/shared-data/wrt_shared_object.h deleted file mode 100644 index e6bd735..0000000 --- a/src/shared-data/wrt_shared_object.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * - * @file wrt_shared_object.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 0.1 - * @brief - */ - -#ifndef WRT_SRC_SHAREDDATA_WRTSHAREDOBJECT_H_ -#define WRT_SRC_SHAREDDATA_WRTSHAREDOBJECT_H_ - -#include -#include -#include "widget_data_types.h" -#include "wrt_plugin_export.h" - -namespace { -const size_t WRT_MAX_WIDGET_COUNT = 64; -} // anonymous - -struct WidgetData -{ - WidgetData() : handle(INVALID_WIDGET_HANDLE), - state(WidgetState_Stopped) - { - } - - WidgetData(WidgetHandle widgetHandle, - WidgetState widgetState) : - handle(widgetHandle), - state(widgetState) - { - } - - WidgetHandle handle; - WidgetState state; -}; - -struct WidgetDataChange -{ - WidgetDataChange(WidgetHandle widgetHandle, - WidgetState widgetState, - bool isRemoved) : - data(widgetHandle, widgetState), - removed(isRemoved) - { - } - - WidgetData data; - bool removed; -}; - -typedef WidgetData WidgetDataArray[WRT_MAX_WIDGET_COUNT]; - -// TODO Add remaining types to the list -typedef DPL::TypeListDecl::Type SharedTypeList; - -class WrtSharedObject; -typedef DPL::SharedPtr WrtSharedObjectPtr; - -/* - * - */ -class WrtSharedObject : public DPL::SharedObject -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, MaxWidgetsReached) - DECLARE_EXCEPTION_TYPE(Base, StateChangeFailed) - DECLARE_EXCEPTION_TYPE(Base, WidgetNotFound) - }; - - /* - * Property enum values. The order of enums should correspond with - * the order of types in ShareTypeList - */ - enum - { - WIDGET_COUNT = 0, - WIDGET_ENTRIES, - PARENTAL_MODE - }; - - static const size_t MAX_WIDGETS = sizeof(WidgetDataArray) / - sizeof(WidgetData); - - static WrtSharedObjectPtr Create(); - - ~WrtSharedObject() - { - } - - // Conditional widget state change. - void ChangeWidgetState(WidgetHandle handle, - WidgetState state); - - // Removes widget data from shm - void RemoveWidgetData(WidgetHandle handle); - - WidgetState GetWidgetState(WidgetHandle handle) const; - - protected: - explicit WrtSharedObject(const std::string& semaphore) : - DPL::SharedObject(semaphore) - { - } - - private: - friend class DPL::SharedObjectFactory; - - virtual void Init(); - - virtual MagicType GetMagicNumber() const; - - virtual VersionType GetVersion() const; - - virtual std::string GetMsgQueuePrefix() const; -}; - -#endif /* WRT_SRC_SHAREDDATA_WRTSHAREDOBJECT_H_ */ diff --git a/src/utils/DESCRIPTION b/src/utils/DESCRIPTION deleted file mode 100644 index ff8cc40..0000000 --- a/src/utils/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -General purpose utilities diff --git a/src/utils/FreeLogic.h b/src/utils/FreeLogic.h deleted file mode 100644 index 4383236..0000000 --- a/src/utils/FreeLogic.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file FreeLogic.h - * @author Piotr Kozbial (p.kozbial@samsung.com) - * @version 1.0 - * @brief Common base for Free Logic classes - */ - -#ifndef WRT_UTILS_FREELOGIC_H_ -#define WRT_UTILS_FREELOGIC_H_ - -#include -#include - -/* - * This is the base class for any "Free Logic" class. - * - * A Free Logic is a bit like a Logic, but the difference is - * that a Logic is always coupled with a controller and so - * it is assigned to a single thread, while a Free Logic - * doesn't have a controller, so it doesn't have a designated - * thread. - * - * A Free Logic's public interface may be directly called - * from any thread. For this to be safe, every Free Logic must - * adhere to the following constraints: - * - * 1. Every (no matter how trivial) public API function must - * start with locking the mutex using the following macro: - * - * FREE_LOGIC_LOCK - * - * 2. A Free Logic cannot contact other Logics, that is, - * it cannot POST events to controllers and it cannot - * call methods of other FreeLogics. - * - * 3. A Free Logic cannot emit or receive any events. - * - * 4. A Free Logic cannot do blocking system calls. - * - * 5. A Free Logic cannot use any synchronization - * mechanisms (except the default lock, as described - * above). - */ -class FreeLogic : private DPL::Noncopyable -{ - protected: - mutable DPL::Mutex _freeLogicMutex; -}; - -#define FREE_LOGIC_LOCK \ - DPL::Mutex::ScopedLock _freeLogicLock(&_freeLogicMutex); - -#endif // WRT_UTILS_FREELOGIC_H_ - diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt deleted file mode 100644 index f0fc51a..0000000 --- a/tests/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) -# @version 1.0 -# @brief -# - -# -# Test files -# -# Define all WRT tests sources. -# Runner is responsible for runnint it all and -# generating proper output files -# - -GET_PROPERTY(COMMON_INCLUDE_DIRS GLOBAL PROPERTY TESTS_INCLUDE_DIRS) -GET_PROPERTY(COMMON_LIBRARY_DIRS GLOBAL PROPERTY TESTS_LIBRARY_DIRS) -GET_PROPERTY(COMMON_LIBRARIES GLOBAL PROPERTY TESTS_LIBRARIES) - -# Set DPL tests include directory -SET(WRT_TESTS_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/tests/ - ${PROJECT_SOURCE_DIR}/tests/detail/include - ${COMMON_INCLUDE_DIRS} -) - -SET(WRT_DETAIL_SOURCES -) - -SET(WRT_DETAIL_SOURCES - ${WRT_DETAIL_SOURCES} - ${PROJECT_SOURCE_DIR}/tests/detail/efl/loop_control.cpp -) - -#ADD_SUBDIRECTORY(tests_common_lib) -ADD_SUBDIRECTORY(w3c_tests) -#ADD_SUBDIRECTORY(warp_tests) -#ADD_SUBDIRECTORY(engine_tests) -#ADD_SUBDIRECTORY(dao_tests) -#ADD_SUBDIRECTORY(ace_client_tests) -#ADD_SUBDIRECTORY(smack_tests) -#ADD_SUBDIRECTORY(widget_module_tests) diff --git a/tests/DESCRIPTION b/tests/DESCRIPTION deleted file mode 100644 index 48e5394..0000000 --- a/tests/DESCRIPTION +++ /dev/null @@ -1,2 +0,0 @@ -!!!options!!! stop -Test code diff --git a/tests/ace_client_tests/CMakeLists.txt b/tests/ace_client_tests/CMakeLists.txt deleted file mode 100644 index 2ce3361..0000000 --- a/tests/ace_client_tests/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ -include(FindPkgConfig) - -PKG_CHECK_MODULES(ACE_CLIENT_DEPS - dpl-efl - REQUIRED - ) - -SET(ACE_CLIENT_DIR - ${PROJECT_SOURCE_DIR}/ace_client - ) - -SET(ACE_CLIENT_SRC_DIR - ${ACE_CLIENT_DIR}/src - ) - -SET(ACE_CLIENT_INCLUDE_DIR - ${ACE_CLIENT_DIR}/include - ) - -SET(ACE_CLIENT_SOURCES - ${PROJECT_SOURCE_DIR}/tests/ace_client_tests/ace_client_tests.cpp - ${PROJECT_SOURCE_DIR}/tests/ace_client_tests/test_cases.cpp - ${ACE_CLIENT_SRC_DIR}/ace_client.cpp - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/api/ace_server_api.cpp - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/security_daemon_dbus_config.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/Attribute.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/Serializer.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/NodeFactory.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/Policy.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/Rule.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/Condition.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/Subject.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/simple_roaming_agent.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/common/TreeNode.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/dao/BaseAttribute.cpp - ${PROJECT_SOURCE_DIR}/src/access-control/logic/attribute_facade.cpp - ${PROJECT_SOURCE_DIR}/mockups/AceDAOReadOnly_mock.cpp - ${PROJECT_SOURCE_DIR}/mockups/dbus_client_mock.cpp - ${PROJECT_SOURCE_DIR}/mockups/widget_dao_read_only_mock.cpp - ${PROJECT_SOURCE_DIR}/mockups/rpc_client_mock.cpp - ${PROJECT_SOURCE_DIR}/mockups/PopupInvoker_mock.cpp - ) - -SET(ACE_CLIENT_INCLUDES - ${ACE_CLIENT_DEPS_INCLUDE_DIRS} - ${ACE_CLIENT_INCLUDE_DIR} - ${PROJECT_SOURCE_DIR}/src/access-control/common/ # PolicyEffect - ${PROJECT_SOURCE_DIR}/src/access-control/engine/ # PromptModel - ${PROJECT_SOURCE_DIR}/mockups/ # Mockups - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/ # Security daemon config - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/api/ # AceServerApi - ${PROJECT_SOURCE_DIR}/src/rpc/ui-process/ # RPC connection - ${PROJECT_SOURCE_DIR}/src/common/ # Nested Loop - ${PROJECT_SOURCE_DIR}/src/access-control/logic/ # attribute_facade - ${PROJECT_SOURCE_DIR}/src/dbus/ # DBus client - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/ # Security daemon config - ${PROJECT_SOURCE_DIR}/src/rpc/security-daemon/api/ # AceServerApi - ${PROJECT_SOURCE_DIR}/src/domain/ # widget_data_types - ${PROJECT_SOURCE_DIR}/src/common/ # wrt_db_types - ${PROJECT_SOURCE_DIR}/src/profiling/ # profiling - ${PROJECT_SOURCE_DIR}/src/access-control/engine/ # PolicyInformationPoint - ) - -SET(TARGET_ACE_CLIENT_TEST "wrt-tests-ace-client") - -ADD_DEFINITIONS(${ACE_CLIENT_DEPS_CFLAGS}) -ADD_DEFINITIONS(${ACE_CLIENT_CFLAGS_OTHER}) -ADD_DEFINITIONS(-D ACE_CLIENT_TESTS) - -INCLUDE_DIRECTORIES(${ACE_CLIENT_INCLUDES}) - -WRT_TEST_BUILD(${TARGET_ACE_CLIENT_TEST} ${ACE_CLIENT_SOURCES}) - -WRT_TEST_INSTALL(${TARGET_ACE_CLIENT_TEST}) diff --git a/tests/ace_client_tests/ace_client_tests.cpp b/tests/ace_client_tests/ace_client_tests.cpp deleted file mode 100644 index a8914fa..0000000 --- a/tests/ace_client_tests/ace_client_tests.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file ace_client_tests.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Main executable file for ACE client tests. - */ -#include -#include - -int main(int argc, char *argv[]){ - LogInfo("Starting tests"); - int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); - return status; -} diff --git a/tests/ace_client_tests/test_cases.cpp b/tests/ace_client_tests/test_cases.cpp deleted file mode 100644 index 192cc16..0000000 --- a/tests/ace_client_tests/test_cases.cpp +++ /dev/null @@ -1,733 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_cases.cpp - * @author Tonasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Implementation file for ACE client test cases. - */ -#include - -#include "ace_client.h" -#include "widget_dao_read_only_mock.h" -#include "WrtDatabase_mock.h" -#include "AceDAOReadOnly_mock.h" -#include "dbus_client_mock.h" -#include "PolicyInformationPoint_mock.h" -#include "rpc_client_mock.h" -#include "PopupInvoker_mock.h" - -namespace { - -const char* featureName1 = "feature-1"; -const char* featureName2 = "feature-2"; -const char* devCapName1 = "devCap-1"; -const char* devCapName2 = "devCap-2"; - -enum class AceTestOptionalCachedPolicyResult { - UNDETERMINED, - NOT_APPLICABLE, - PROMPT_BLANKET, - PROMPT_SESSION, - PROMPT_ONESHOT, - PERMIT, - DENY, - NULL_VALUE -}; - -enum class AceTestPolicyResult { - UNDETERMINED, - NOT_APPLICABLE, - PROMPT_BLANKET, - PROMPT_SESSION, - PROMPT_ONESHOT, - PERMIT, - DENY -}; - -enum class AceTestOptionalCachedPromptDecision { - ALLOW_ALWAYS, - DENY_ALWAYS, - ALLOW_THIS_TIME, - DENY_THIS_TIME, - ALLOW_FOR_SESSION, - DENY_FOR_SESSION, - NULL_VALUE -}; - -static void configureTest( - AceTestOptionalCachedPolicyResult cachedPolicyResult, - AceTestOptionalCachedPromptDecision cachedPromptDecision, - const std::string& cachedPromptSession, - AceTestPolicyResult securityDaemonPolicyResult, - bool popupResponse, - bool grantDevCaps, - bool daemonValidation) -{ - // Cached decision from popups - switch (cachedPromptDecision) { - case AceTestOptionalCachedPromptDecision::ALLOW_ALWAYS: { - CachedPromptDecision decision; - decision.decision = PromptDecision::ALLOW_ALWAYS; - decision.session = DPL::FromUTF8String(cachedPromptSession); - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision(decision)); - break; } - case AceTestOptionalCachedPromptDecision::DENY_ALWAYS: { - CachedPromptDecision decision; - decision.decision = PromptDecision::DENY_ALWAYS; - decision.session = DPL::FromUTF8String(cachedPromptSession); - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision(decision)); - break; } - case AceTestOptionalCachedPromptDecision::ALLOW_THIS_TIME: { - CachedPromptDecision decision; - decision.decision = PromptDecision::ALLOW_THIS_TIME; - decision.session = DPL::FromUTF8String(cachedPromptSession); - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision(decision)); - break; } - case AceTestOptionalCachedPromptDecision::DENY_THIS_TIME: { - CachedPromptDecision decision; - decision.decision = PromptDecision::DENY_THIS_TIME; - decision.session = DPL::FromUTF8String(cachedPromptSession); - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision(decision)); - break; } - case AceTestOptionalCachedPromptDecision::ALLOW_FOR_SESSION: { - CachedPromptDecision decision; - decision.decision = PromptDecision::ALLOW_FOR_SESSION; - decision.session = DPL::FromUTF8String(cachedPromptSession); - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision(decision)); - break; } - case AceTestOptionalCachedPromptDecision::DENY_FOR_SESSION: { - CachedPromptDecision decision; - decision.decision = PromptDecision::DENY_FOR_SESSION; - decision.session = DPL::FromUTF8String(cachedPromptSession); - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision(decision)); - break; } - case AceTestOptionalCachedPromptDecision::NULL_VALUE: - default : { - AceDB::AceDAOReadOnly::setPromptDecision( - OptionalCachedPromptDecision()); - break; } - } - - // Daemon response - switch (securityDaemonPolicyResult) { - case AceTestPolicyResult::UNDETERMINED: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult(PolicyResult::Value::UNDETERMINED))); - break; } - case AceTestPolicyResult::NOT_APPLICABLE: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult())); - break; } - case AceTestPolicyResult::PROMPT_BLANKET: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult(PolicyEffect::PROMPT_BLANKET))); - break; } - case AceTestPolicyResult::PROMPT_SESSION: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult(PolicyEffect::PROMPT_SESSION))); - break; } - case AceTestPolicyResult::PROMPT_ONESHOT: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult(PolicyEffect::PROMPT_ONESHOT))); - break; } - case AceTestPolicyResult::PERMIT: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult(PolicyEffect::PERMIT))); - break; } - case AceTestPolicyResult::DENY: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult(PolicyEffect::DENY))); - break; } - default: { - DPL::DBus::Client::setCheckAccessResult(PolicyResult::serialize( - PolicyResult())); - break; } - } - - // Daemon popup answer validation setup - DPL::DBus::Client::setDaemonValidationResult(daemonValidation); - - // Not empty attribute set to be returned - AceDB::BaseAttributeSet attributeSet; - AceDB::BaseAttributePtr attribute(new AceDB::BaseAttribute()); - std::string aname = "attribute-subject-name1"; - attribute->setName(&aname); - attribute->setType(AceDB::BaseAttribute::Type::Subject); - attributeSet.insert(attribute); - AceDB::AceDAOReadOnly::setAttributeSet(attributeSet); - - // Cached response - switch (cachedPolicyResult) { - case AceTestOptionalCachedPolicyResult::UNDETERMINED: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult( - PolicyResult(PolicyResult::Value::UNDETERMINED))); - break; } - case AceTestOptionalCachedPolicyResult::NOT_APPLICABLE: { - AceDB::AceDAOReadOnly::setPolicyResult( - OptionalPolicyResult(PolicyResult())); - break; } - case AceTestOptionalCachedPolicyResult::PROMPT_BLANKET: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult( - PolicyResult(PolicyEffect::PROMPT_BLANKET))); - break; } - case AceTestOptionalCachedPolicyResult::PROMPT_SESSION: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult( - PolicyResult(PolicyEffect::PROMPT_SESSION))); - break; } - case AceTestOptionalCachedPolicyResult::PROMPT_ONESHOT: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult( - PolicyResult(PolicyEffect::PROMPT_ONESHOT))); - break; } - case AceTestOptionalCachedPolicyResult::PERMIT: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult( - PolicyResult(PolicyEffect::PERMIT))); - break; } - case AceTestOptionalCachedPolicyResult::DENY: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult( - PolicyResult(PolicyEffect::DENY))); - break; } - case AceTestOptionalCachedPolicyResult::NULL_VALUE: - default: { - AceDB::AceDAOReadOnly::setPolicyResult(OptionalPolicyResult()); - break; } - } - - static UIProcess::PopupResponse responseTrue(true); - static UIProcess::PopupResponse responseFalse(false); - - // Prompt decisions - UIProcess::RpcClient::setPopupResponse( - popupResponse ? responseTrue : responseFalse); - - // New prompt decisions (piped PopupInvoker) - PopupInvoker::setPromptAnswer(Prompt::PromptAnswer(popupResponse, - Prompt::Validity::ALWAYS)); - - // Granted smack labels - std::set devCapPermissions; - if (grantDevCaps) { - devCapPermissions.insert(DPL::FromASCIIString(devCapName1)); - devCapPermissions.insert(DPL::FromASCIIString(devCapName2)); - } - AceDB::AceDAOReadOnly::setDevCapPermissions(devCapPermissions); -} - -static void fillRequest(AceClient::AceRequest &aceRequest, - AceClient::AceSessionId sessionId) -{ - static const char* apiFeature[] = {featureName1, featureName2}; - static const char* devCapNames[] = {devCapName2, devCapName1}; - static AceClient::AceParamList paramList[2]; - static AceClient::AceParam param("param1-name", "param1-value"); - - paramList[0].count = 1; - paramList[0].param = ¶m; - paramList[1].count = 1; - paramList[1].param = ¶m; - - aceRequest.sessionId = sessionId; - aceRequest.widgetHandle = 0; - aceRequest.apiFeatures.count = 2; - aceRequest.apiFeatures.apiFeature = apiFeature; - aceRequest.functionName = "test-function-name"; - aceRequest.deviceCapabilities.devcapsCount = 2; - aceRequest.deviceCapabilities.devCapNames = devCapNames; - aceRequest.deviceCapabilities.paramsCount = 2; - aceRequest.deviceCapabilities.params = paramList; -} -} // namespace - -// Tests proper initialization -RUNNER_TEST(ace_client_test_01_initialization) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - RUNNER_ASSERT(client.isInitialized()); -} - - -// access granted but no smack label given - need to ask security daemon -// this NEEDS to be first test setting smack, because since we dont have means -// to delete AceThinClient singleton, we cannot remove granted smack labels -// from its internatl structures. -RUNNER_TEST(ace_client_test_02_smack_rules) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PERMIT, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "this-session", - AceTestPolicyResult::DENY, - false, - false, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// pure security daemon answers -RUNNER_TEST(ace_client_test_03_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::ALLOW_ALWAYS, - "this-session", - AceTestPolicyResult::PERMIT, - true, - true, - true); - - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::ALLOW_ALWAYS, - "this-session", - AceTestPolicyResult::DENY, - true, - true, - true); - - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// cached security daemon response -RUNNER_TEST(ace_client_test_04_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PERMIT, - AceTestOptionalCachedPromptDecision::ALLOW_ALWAYS, - "this-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::DENY, - AceTestOptionalCachedPromptDecision::ALLOW_ALWAYS, - "this-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// cached security daemon response on prompt not existing in cache -RUNNER_TEST(ace_client_test_05_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "this-session", - AceTestPolicyResult::DENY, - false, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "this-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); -} - -// cached security daemon response on prompt existing in cache for this session -RUNNER_TEST(ace_client_test_06_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::DENY_FOR_SESSION, - "this-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::ALLOW_FOR_SESSION, - "this-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); -} - -// cached security daemon response on prompt existing in cache for another -// session but decision is 'always' -RUNNER_TEST(ace_client_test_07_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::DENY_ALWAYS, - "another-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::ALLOW_ALWAYS, - "another-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); -} - -// cached security daemon response on prompt existing in cache for another -// session but decision is 'always' -RUNNER_TEST(ace_client_test_08_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_SESSION, - AceTestOptionalCachedPromptDecision::DENY_FOR_SESSION, - "another-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::ALLOW_FOR_SESSION, - "another-session", - AceTestPolicyResult::PERMIT, - false, - false, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// cached security daemon response on prompt existing in cache -// for another session - prompt is 'session' -RUNNER_TEST(ace_client_test_09_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_SESSION, - AceTestOptionalCachedPromptDecision::DENY_FOR_SESSION, - "another-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_SESSION, - AceTestOptionalCachedPromptDecision::ALLOW_FOR_SESSION, - "another-session", - AceTestPolicyResult::PERMIT, - false, - false, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - - -// cached security daemon response on prompt one shot -RUNNER_TEST(ace_client_test_10_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_ONESHOT, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::PERMIT, - false, - false, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_ONESHOT, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::DENY, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); -} - -// No result in cache - policy returns prompt 'oneshot' -RUNNER_TEST(ace_client_test_11_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::PROMPT_ONESHOT, - false, - false, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::PROMPT_ONESHOT, - true, - true, - true); - RUNNER_ASSERT(client.checkFunctionCall(aceRequest)); -} - -// security daemon response is undetermined or inapplicable -RUNNER_TEST(ace_client_test_12_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::UNDETERMINED, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::NOT_APPLICABLE, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// security daemon popup validation response is false (cached policy) -RUNNER_TEST(ace_client_test_13_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_BLANKET, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::UNDETERMINED, - true, - false, - false); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// security daemon popup validation response is false (no cached policy) -RUNNER_TEST(ace_client_test_14_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::NULL_VALUE, - AceTestOptionalCachedPromptDecision::NULL_VALUE, - "another-session", - AceTestPolicyResult::PROMPT_BLANKET, - true, - false, - false); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// few check access last tests -RUNNER_TEST(ace_client_test_15_check_access) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceRequest aceRequest; - - fillRequest(aceRequest, "this-session"); - - configureTest( - AceTestOptionalCachedPolicyResult::PROMPT_SESSION, - AceTestOptionalCachedPromptDecision::DENY_FOR_SESSION, - "this-session", - AceTestPolicyResult::PERMIT, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::UNDETERMINED, - AceTestOptionalCachedPromptDecision::ALLOW_FOR_SESSION, - "another-session", - AceTestPolicyResult::PERMIT, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); - - configureTest( - AceTestOptionalCachedPolicyResult::NOT_APPLICABLE, - AceTestOptionalCachedPromptDecision::ALLOW_FOR_SESSION, - "another-session", - AceTestPolicyResult::PERMIT, - true, - true, - true); - RUNNER_ASSERT(!client.checkFunctionCall(aceRequest)); -} - -// testing resource -RUNNER_TEST(ace_client_test_16_resource_preferences) -{ - AceClient::AceThinClient &client = - AceClient::AceThinClientSingleton::Instance(); - AceClient::AceWidgetHandle handle = 0; - AceClient::AceResource resource = "resource"; - AceClient::AceResource resource2 = "resource2"; - - AceDB::AceDAOReadOnly::setWidgetDevCapSetting( - AceDB::PreferenceTypes::PREFERENCE_BLANKET_PROMPT); - RUNNER_ASSERT(client.getWidgetResourcePreference(resource,handle) == - AceClient::AcePreference::PREFERENCE_BLANKET_PROMPT); - AceDB::AceDAOReadOnly::setWidgetDevCapSetting( - AceDB::PreferenceTypes::PREFERENCE_DEFAULT); - RUNNER_ASSERT(client.getWidgetResourcePreference(resource,handle) == - AceClient::AcePreference::PREFERENCE_DEFAULT); - AceDB::AceDAOReadOnly::setWidgetDevCapSetting( - AceDB::PreferenceTypes::PREFERENCE_DENY); - RUNNER_ASSERT(client.getWidgetResourcePreference(resource,handle) == - AceClient::AcePreference::PREFERENCE_DENY); - AceDB::AceDAOReadOnly::setWidgetDevCapSetting( - AceDB::PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT); - RUNNER_ASSERT(client.getWidgetResourcePreference(resource,handle) == - AceClient::AcePreference::PREFERENCE_ONE_SHOT_PROMPT); - AceDB::AceDAOReadOnly::setWidgetDevCapSetting( - AceDB::PreferenceTypes::PREFERENCE_PERMIT); - RUNNER_ASSERT(client.getWidgetResourcePreference(resource,handle) == - AceClient::AcePreference::PREFERENCE_PERMIT); - AceDB::AceDAOReadOnly::setWidgetDevCapSetting( - AceDB::PreferenceTypes::PREFERENCE_SESSION_PROMPT); - RUNNER_ASSERT(client.getWidgetResourcePreference(resource,handle) == - AceClient::AcePreference::PREFERENCE_SESSION_PROMPT); - - AceDB::PreferenceTypesMap map; - - AceDB::AceDAOReadOnly::setDevCapSettings(map); - AceClient::AceResourcesPreferences* ret = - client.getGlobalResourcesPreferences(); - - RUNNER_ASSERT(ret->empty()); - delete ret; - - map.insert(make_pair(resource, AceDB::PreferenceTypes::PREFERENCE_PERMIT)); - map.insert(make_pair(resource2, AceDB::PreferenceTypes::PREFERENCE_DENY)); - - AceDB::AceDAOReadOnly::setDevCapSettings(map); - ret = client.getGlobalResourcesPreferences(); - RUNNER_ASSERT(2 == ret->size()); - AceClient::AceResourcesPreferences::iterator it; - it = ret->find(resource); - RUNNER_ASSERT((it->second) == AceClient::AcePreference::PREFERENCE_PERMIT); - it = ret->find(resource2); - RUNNER_ASSERT((it->second) == AceClient::AcePreference::PREFERENCE_DENY); - delete ret; -} diff --git a/tests/dao_tests/CMakeLists.txt b/tests/dao_tests/CMakeLists.txt deleted file mode 100644 index a882e91..0000000 --- a/tests/dao_tests/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Pawel Sikorski (p.sikorski@samsung.com) -# @version 1.0 -# @brief -# -SET(TARGET_DAO_TEST "wrt-tests-dao") -# Set engine test sources -FILE(GLOB DAO_TESTS_SOURCES "${PROJECT_SOURCE_DIR}/tests/dao_tests/*.cpp") - -WRT_TEST_BUILD(${TARGET_DAO_TEST} ${DAO_TESTS_SOURCES}) -WRT_TEST_INSTALL(${TARGET_DAO_TEST}) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/dao_tests/wrt_dao_tests_prepare_db.sh - DESTINATION bin - ) \ No newline at end of file diff --git a/tests/dao_tests/TestCases_FeatureDAO.cpp b/tests/dao_tests/TestCases_FeatureDAO.cpp deleted file mode 100644 index 097f215..0000000 --- a/tests/dao_tests/TestCases_FeatureDAO.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file TestCases_FeatureDAO.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains tests for feature dao class. - */ - -#include -#include -#include -#include -#include - -using namespace WrtDB; - -#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ - {std::string tmp(in); \ - RUNNER_ASSERT_MSG(tmp == test, "Equals: [" + tmp + "]");} - -RUNNER_TEST(feature_dao_test_register_features) -{ - PluginHandle plHandle; - { - std::string libraryPath("nfp1 lib_path"); - std::string libraryName("nfp1"); - - PluginMetafileData pluginData; - pluginData.m_libraryName = libraryName; - - plHandle = PluginDAO::registerPlugin(pluginData, libraryPath); - RUNNER_ASSERT(PluginDAO::isPluginInstalled(libraryName) == true); - - FeatureHandleList old = FeatureDAOReadOnly::GetHandleList(); - PluginMetafileData::Feature f; - f.m_name = std::string("new_f1"); - - FeatureHandle handle = FeatureDAO::RegisterFeature(f,plHandle); - RUNNER_ASSERT_MSG(handle != -1, "Already registered"); - RUNNER_ASSERT_MSG(old.size() < FeatureDAOReadOnly::GetHandleList().size(), - "New feature should be saved"); - - FeatureDAOReadOnly dao(handle); - - RUNNER_ASSERT_WHAT_EQUALS(dao.GetName(),"new_f1"); - plHandle = dao.GetPluginHandle(); - } - - { - FeatureHandleList old = FeatureDAOReadOnly::GetHandleList(); - - PluginMetafileData::Feature f; - f.m_name = std::string("new_f2"); - - FeatureHandle handle = FeatureDAO::RegisterFeature(f,plHandle); - RUNNER_ASSERT_MSG(handle != -1, "Already registered"); - RUNNER_ASSERT_MSG(old.size() < FeatureDAOReadOnly::GetHandleList().size(), - "New feature should be saved"); - - FeatureDAOReadOnly dao(handle); - - RUNNER_ASSERT_MSG(plHandle == dao.GetPluginHandle(), - "New plugin registered (should be old used)"); - } -} - -RUNNER_TEST(feature_dao_test_get_feature_properties) -{ - { - FeatureDAOReadOnly dao("feature1"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetName(), "feature1"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetLibraryName(), "plugin1"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetLibraryPath(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetInstallURI(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetKeyCn(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetRootKey(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetRootKeyFingerprint(), ""); - } - - { - FeatureDAOReadOnly dao("feature2"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetName(), "feature2"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetLibraryName(), "p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetLibraryPath(), "path_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetInstallURI(), "uri_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetKeyCn(), "keycn_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetRootKey(), "rkey_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetRootKeyFingerprint(), "rkeyF_to_p4"); - } - - { - FeatureDAOReadOnly dao("feature3"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetName(), "feature3"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetLibraryName(), "p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetLibraryPath(), "path_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetInstallURI(), "uri_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetKeyCn(), "keycn_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetRootKey(), "rkey_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetRootKeyFingerprint(), "rkeyF_to_p4"); - } -} - -RUNNER_TEST(feature_dao_test_feature_constructor_name) -{ - std::list preinstalled; - preinstalled.push_back("feature1"); - preinstalled.push_back("feature2"); - preinstalled.push_back("feature3"); - preinstalled.push_back("feature4"); - - FOREACH(it, preinstalled) - { - FeatureDAOReadOnly dao(*it); - RUNNER_ASSERT_WHAT_EQUALS(dao.GetName(), *it); - } - - //TODO check exception that may occur (feature does not exist) -} - -RUNNER_TEST(feature_dao_test_feature_handle_list) -{ - FeatureHandleList handles = FeatureDAOReadOnly::GetHandleList(); - RUNNER_ASSERT(handles.size() >= 4); -} - -RUNNER_TEST(feature_dao_test_is_feature_installed) -{ - //installed - { - std::list preinstalled; - preinstalled.push_back("feature1"); - preinstalled.push_back("feature2"); - preinstalled.push_back("feature3"); - preinstalled.push_back("feature4"); - - FOREACH(it, preinstalled) - RUNNER_ASSERT(FeatureDAOReadOnly::isFeatureInstalled(*it)); - } - - //not installed - { - RUNNER_ASSERT(FeatureDAOReadOnly::isFeatureInstalled("not_installed1")==false); - RUNNER_ASSERT(FeatureDAOReadOnly::isFeatureInstalled("plugin1") == false); - RUNNER_ASSERT(FeatureDAOReadOnly::isFeatureInstalled("") == false); - RUNNER_ASSERT(FeatureDAOReadOnly::isFeatureInstalled("ff") == false); - } -} - -RUNNER_TEST(feature_dao_test_get_device_capab) -{ -#if 0 - //TODO do more tests - - {//check deviceCaps - Feature f; - f.setName("new_dev_f4"); - f.setLibraryName("new_dev_f4 lib_name"); - - FeatureDAOReadOnly::DeviceCapabilitiesList devList; - devList.insert("new_dev_f4 devcap1"); - devList.insert("new_dev_f4 devcap2"); - - FOREACH(it, devList) - f.addDeviceCapability(*it); - - FeatureHandle handle = FeatureDAO::RegisterFeature(f,"new_dev_f4 path"); - - FeatureDAOReadOnly dao(handle); - - FeatureDAOReadOnly::DeviceCapabilitiesList gotList = - dao.GetDeviceCapabilities(); - RUNNER_ASSERT_MSG(gotList.size() == devList.size(), - "deviceCaps wrong"); - } -#endif -} - -/* - * Checks if FeatureDAOReadOnly::isDeviceCapabilityInstalled works correctly. - */ -RUNNER_TEST(feature_dao_test_is_device_capab_installed) -{ - //installed - std::list preinstalled; - preinstalled.push_back("devicecap1"); - preinstalled.push_back("devicecap2"); - preinstalled.push_back("devicecap3"); - preinstalled.push_back("devicecap4"); - - FOREACH(it, preinstalled) - RUNNER_ASSERT(FeatureDAOReadOnly::isDeviceCapabilityInstalled(*it)); - - //not installed - std::list notinstalled; - notinstalled.push_back("notinstalled1"); - notinstalled.push_back("plugin1"); - notinstalled.push_back(""); - notinstalled.push_back("ff"); - - FOREACH(it, notinstalled) - RUNNER_ASSERT(!FeatureDAOReadOnly::isDeviceCapabilityInstalled(*it)); -} - -#undef RUNNER_ASSERT_WHAT_EQUALS diff --git a/tests/dao_tests/TestCases_GlobalDAO.cpp b/tests/dao_tests/TestCases_GlobalDAO.cpp deleted file mode 100644 index 15b0fac..0000000 --- a/tests/dao_tests/TestCases_GlobalDAO.cpp +++ /dev/null @@ -1,470 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file TestCases_GlobalDAO.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains tests for global dao class. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; - -#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ - {std::string tmp(in); \ - RUNNER_ASSERT_MSG(tmp == test, "Equals: [" + tmp + "]");} - -void RUNNER_ASSERT_POWDER_RULES_EQUALS( - const WrtDB::ChildProtection::PowderRules::CategoryRule& rule1, - const WrtDB::ChildProtection::PowderRules::CategoryRule& rule2) -{ - RUNNER_ASSERT_MSG(rule1.category == rule2.category, - "categories are different"); - RUNNER_ASSERT_MSG(rule1.level == rule2.level, - "levels are different"); - RUNNER_ASSERT_MSG(*(rule1.context) == *(rule2.context), - "contextes are different"); -} - -template -bool CompareContainers(const ContainerType1& container1, - const ContainerType2& container2) -{ - typedef std::multiset Set1; - typedef std::multiset Set2; - Set1 set1(container1.begin(), container1.end()); - Set2 set2(container2.begin(), container2.end()); - return set1 == set2; -} - -namespace -{ -const DPL::String widgetPackage5(L"widgetpackage5"); -} // namespace - -RUNNER_TEST(global_dao_deffered_list) -{ - WidgetPackageList list; - WidgetPackageList match; - match.push_back(L"widgetpackage1"); - match.push_back(L"widgetpackage2"); - match.push_back(L"widgetpackage3"); - match.push_back(L"widgetpackage4"); - - // get - list = GlobalDAO::GetDefferedWidgetPackageInstallationList(); - RUNNER_ASSERT(list == match); - - // add - match.push_back(widgetPackage5); - GlobalDAO::AddDefferedWidgetPackageInstallation(widgetPackage5); - - list = GlobalDAO::GetDefferedWidgetPackageInstallationList(); - RUNNER_ASSERT(list == match); - - // add duplicate - Try { - GlobalDAO::AddDefferedWidgetPackageInstallation(widgetPackage5); - RUNNER_ASSERT_MSG(false, "DatabaseError exception expected"); - } - Catch(GlobalDAO::Exception::DatabaseError){ - RUNNER_ASSERT(true); - } - list = GlobalDAO::GetDefferedWidgetPackageInstallationList(); - RUNNER_ASSERT(list == match); - - // remove - match.pop_front(); - GlobalDAO::RemoveDefferedWidgetPackageInstallation(L"widgetpackage1"); - - list = GlobalDAO::GetDefferedWidgetPackageInstallationList(); - RUNNER_ASSERT(list == match); - - // remove nonexisting - GlobalDAO::RemoveDefferedWidgetPackageInstallation(L"widgetpackage6"); - - list = GlobalDAO::GetDefferedWidgetPackageInstallationList(); - RUNNER_ASSERT(list == match); -} - -RUNNER_TEST(global_dao_developer_mode) -{ - bool prev_mode = GlobalDAO::GetDeveloperMode(); - GlobalDAO::SetDeveloperMode(false); - RUNNER_ASSERT_MSG(!GlobalDAO::GetDeveloperMode(), "set false failed"); - - GlobalDAO::SetDeveloperMode(true); - RUNNER_ASSERT_MSG(GlobalDAO::GetDeveloperMode(), "set true failed"); - GlobalDAO::SetDeveloperMode(prev_mode); -} - -RUNNER_TEST(global_dao_parental_mode) -{ - bool prev_mode = GlobalDAO::GetParentalMode(); - GlobalDAO::SetParentalMode(false); - RUNNER_ASSERT_MSG(!GlobalDAO::GetParentalMode(), "set false failed"); - - GlobalDAO::SetParentalMode(true); - RUNNER_ASSERT_MSG(GlobalDAO::GetParentalMode(), "set true failed"); - GlobalDAO::SetParentalMode(prev_mode); -} - -RUNNER_TEST(global_dao_parental_mode_age) -{ - DPL::OptionalInt prev_age = GlobalDAO::GetParentalAllowedAge(); - - GlobalDAO::SetParentalAllowedAge(DPL::OptionalInt::Null); - RUNNER_ASSERT_MSG((GlobalDAO::GetParentalAllowedAge()).IsNull(), - "failed to set allowed age to null"); - RUNNER_ASSERT_MSG((GlobalDAO::GetPowderRules().ageLimit).IsNull(), - "failed getting allowed age from GetPowderRules()"); - - const int AGE = 15; - DPL::OptionalInt myInt(AGE); - GlobalDAO::SetParentalAllowedAge(myInt); - RUNNER_ASSERT_MSG(!(GlobalDAO::GetParentalAllowedAge()).IsNull() && - AGE == *GlobalDAO::GetParentalAllowedAge(), - "allowed age should be 15"); - - WrtDB::ChildProtection::PowderRules powderRules = GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(!(powderRules.ageLimit).IsNull() && - AGE == *(powderRules.ageLimit), - "failed getting allowed age from GetPowderRules()"); - - GlobalDAO::SetParentalAllowedAge(prev_age); -} - -RUNNER_TEST(global_dao_powder_rules) -{ - RUNNER_ASSERT_MSG(0 == GlobalDAO::GetPowderRules().rules.size(), - "there should be no powder rules"); - - WrtDB::ChildProtection::PowderRules::CategoryRule rule( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::FromASCIIString("artstic")); - GlobalDAO::AddCategoryRule(rule); - - WrtDB::ChildProtection::PowderRules powderRules2 = - GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(1 == powderRules2.rules.size(), - "there should be 1 powder rule"); - - RUNNER_ASSERT_POWDER_RULES_EQUALS(powderRules2.rules[0], rule); - - - GlobalDAO::RemoveCategoryRule(rule); - RUNNER_ASSERT_MSG(0 == GlobalDAO::GetPowderRules().rules.size(), - "there should be no powder rules"); -} - -RUNNER_TEST(global_dao_powder_rules_update_test) -{ - WrtDB::ChildProtection::PowderRules powderRules = GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(0 == powderRules.rules.size(), - "there should be no powder rules"); - - WrtDB::ChildProtection::PowderRules::CategoryRule rule( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::FromASCIIString("artstic")); - - GlobalDAO::AddCategoryRule(rule); - - WrtDB::ChildProtection::PowderRules powderRules2 = - GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(1 == powderRules2.rules.size(), - "there should be 1 powder rule"); - RUNNER_ASSERT_POWDER_RULES_EQUALS(powderRules2.rules[0], rule); - - WrtDB::ChildProtection::PowderRules::CategoryRule - secondRule(DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level4, - DPL::FromASCIIString("artstic")); - - GlobalDAO::UpdateCategoryRule(rule, secondRule); - - powderRules2 = GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(1 == powderRules2.rules.size(), - "there should be 1 powder rule"); - RUNNER_ASSERT_POWDER_RULES_EQUALS(powderRules2.rules[0], secondRule); - - GlobalDAO::RemoveCategoryRule(rule); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "RemoveCategoryRule removed wrong element"); - - GlobalDAO::RemoveCategoryRule(secondRule); - RUNNER_ASSERT_MSG(0 == GlobalDAO::GetPowderRules().rules.size(), - "there should be no powder rules"); -} -RUNNER_TEST(global_dao_powder_rules_add_multiple_values) -{ - WrtDB::ChildProtection::PowderRules powderRules = GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(0 == powderRules.rules.size(), - "there should be no powder rules"); - - WrtDB::ChildProtection::PowderRules::CategoryRule rule( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::OptionalString::Null); - - WrtDB::ChildProtection::PowderRules::CategoryRule artisticSex( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::FromASCIIString("artstic")); - - GlobalDAO::AddCategoryRule(artisticSex); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 1 powder rule"); - - GlobalDAO::AddCategoryRule(artisticSex); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 1 powder rule after " - "adding same values twice"); - - GlobalDAO::AddCategoryRule(rule); - RUNNER_ASSERT_MSG(2 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 2 powder rules"); - - GlobalDAO::RemoveCategoryRule(artisticSex); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be one powder rule after deleting " - "one of two values"); - - GlobalDAO::RemoveCategoryRule(rule); - RUNNER_ASSERT_MSG(0 == GlobalDAO::GetPowderRules().rules.size(), - "there should be no powder rules"); -} - -RUNNER_TEST(global_dao_powder_rule_add_double_null) -{ - WrtDB::ChildProtection::PowderRules powderRules = GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(0 == powderRules.rules.size(), - "there should be no powder rules"); - - WrtDB::ChildProtection::PowderRules::CategoryRule rule( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::OptionalString::Null); - - GlobalDAO::AddCategoryRule(rule); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 1 powder rule"); - - GlobalDAO::AddCategoryRule(rule); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 1 powder rule after adding " - "second NULL"); - - GlobalDAO::RemoveCategoryRule(rule); - RUNNER_ASSERT_MSG(0 == GlobalDAO::GetPowderRules().rules.size(), - "there should be no powder rules"); -} - -RUNNER_TEST(global_dao_powder_rule_remove_null) -{ - WrtDB::ChildProtection::PowderRules powderRules = GlobalDAO::GetPowderRules(); - RUNNER_ASSERT_MSG(0 == powderRules.rules.size(), - "there should be no powder rules"); - - WrtDB::ChildProtection::PowderRules::CategoryRule rule( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::OptionalString::Null); - - WrtDB::ChildProtection::PowderRules::CategoryRule artisticSex( - DPL::FromASCIIString("sex"), - WrtDB::Powder::Description::Level5, - DPL::FromASCIIString("artstic")); - - GlobalDAO::AddCategoryRule(artisticSex); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 1 powder rule"); - - GlobalDAO::AddCategoryRule(rule); - RUNNER_ASSERT_MSG(2 == GlobalDAO::GetPowderRules().rules.size(), - "there should be 2 powder rules"); - - GlobalDAO::RemoveCategoryRule(rule); - RUNNER_ASSERT_MSG(1 == GlobalDAO::GetPowderRules().rules.size(), - "there should be one powder rule after deleting " - "rule with no context"); - - GlobalDAO::RemoveCategoryRule(artisticSex); - RUNNER_ASSERT_MSG(0 == GlobalDAO::GetPowderRules().rules.size(), - "there should be no powder rules"); -} -namespace -{ -const size_t urlListLength = 4; -const DPL::String urlList[urlListLength] = { - DPL::FromASCIIString("www.onet.pl"), - DPL::FromASCIIString("samsung.com"), - DPL::FromASCIIString("www.sprc.pl"), - DPL::FromASCIIString("www.samsung.com")}; -} -RUNNER_TEST(global_dao_adult_blacklist_add) -{ - std::set blacklistSet; - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - blacklistSet.insert(urlList[0]); - GlobalDAO::AddAdultBlackListElement(urlList[0]); - - RUNNER_ASSERT_MSG(GlobalDAO::IsElementOnAdultBlackList(urlList[0]), - "GetAdultBlackList should return true. " - "Element is on blacklist"); - RUNNER_ASSERT_MSG(!GlobalDAO::IsElementOnAdultBlackList(urlList[1]), - "GetAdultBlackList should return false. " - "Element isn't on blacklist"); - - - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - blacklistSet.erase(urlList[0]); - GlobalDAO::RemoveAdultBlackListElement(urlList[0]); - - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); -} - -RUNNER_TEST(global_dao_adult_blacklist_multiple_add) -{ - std::set blacklistSet; - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - blacklistSet.insert(urlList[0]); - GlobalDAO::AddAdultBlackListElement(urlList[0]); - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - blacklistSet.insert(urlList[0]); - GlobalDAO::AddAdultBlackListElement(urlList[0]); - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - blacklistSet.erase(urlList[0]); - GlobalDAO::RemoveAdultBlackListElement(urlList[0]); - - RUNNER_ASSERT_MSG(GlobalDAO::GetAdultBlackList().empty(), - "Blacklist is not equal to other blacklist"); - - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); -} - -RUNNER_TEST(global_dao_adult_blacklist_multiple_update) -{ - std::set blacklistSet(urlList+1, urlList+urlListLength); - RUNNER_ASSERT_MSG(GlobalDAO::GetAdultBlackList().empty(), - "Blacklist should be empty"); - - - FOREACH (it, blacklistSet) { - GlobalDAO::AddAdultBlackListElement(*it); - } - - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - - - blacklistSet.erase(urlList[1]); - blacklistSet.insert(urlList[0]); - GlobalDAO::UpdateAdultBlackList(urlList[1], urlList[0]); - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); - - - FOREACH (it, blacklistSet) { - GlobalDAO::RemoveAdultBlackListElement(*it); - } - blacklistSet.clear(); - - RUNNER_ASSERT_MSG(GlobalDAO::GetAdultBlackList().empty(), - "Blacklist is not equal to other blacklist"); - - RUNNER_ASSERT_MSG(CompareContainers(GlobalDAO::GetAdultBlackList(), - blacklistSet), - "Blacklist is not equal to other blacklist"); -} - -RUNNER_TEST(home_network_data_usage) -{ - GlobalDAO::NetworkAccessMode original = - GlobalDAO::GetHomeNetworkDataUsage(); - - GlobalDAO::SetHomeNetworkDataUsage(GlobalDAO::CONNECT_AUTOMATICALLY); - RUNNER_ASSERT_MSG(GlobalDAO::CONNECT_AUTOMATICALLY == - GlobalDAO::GetHomeNetworkDataUsage(), "Value not updated"); - - GlobalDAO::SetHomeNetworkDataUsage(GlobalDAO::ALWAYS_ASK); - RUNNER_ASSERT_MSG(GlobalDAO::ALWAYS_ASK == - GlobalDAO::GetHomeNetworkDataUsage(), "Value not updated"); - - GlobalDAO::SetHomeNetworkDataUsage(GlobalDAO::NEVER_CONNECT); - RUNNER_ASSERT_MSG(GlobalDAO::NEVER_CONNECT == - GlobalDAO::GetHomeNetworkDataUsage(), "Value not updated"); - - GlobalDAO::SetHomeNetworkDataUsage(original); - RUNNER_ASSERT_MSG(original == GlobalDAO::GetHomeNetworkDataUsage(), - "Value not updated"); -} - -RUNNER_TEST(roaming_data_usage) -{ - GlobalDAO::NetworkAccessMode original = - GlobalDAO::GetRoamingDataUsage(); - - GlobalDAO::SetRoamingDataUsage(GlobalDAO::CONNECT_AUTOMATICALLY); - RUNNER_ASSERT_MSG(GlobalDAO::CONNECT_AUTOMATICALLY == - GlobalDAO::GetRoamingDataUsage(), "Value not updated"); - - GlobalDAO::SetRoamingDataUsage(GlobalDAO::ALWAYS_ASK); - RUNNER_ASSERT_MSG(GlobalDAO::ALWAYS_ASK == - GlobalDAO::GetRoamingDataUsage(), "Value not updated"); - - GlobalDAO::SetRoamingDataUsage(GlobalDAO::NEVER_CONNECT); - RUNNER_ASSERT_MSG(GlobalDAO::NEVER_CONNECT == - GlobalDAO::GetRoamingDataUsage(), "Value not updated"); - - GlobalDAO::SetRoamingDataUsage(original); - RUNNER_ASSERT_MSG(original == GlobalDAO::GetRoamingDataUsage(), - "Value not updated"); -} - -#undef RUNNER_ASSERT_WHAT_EQUALS diff --git a/tests/dao_tests/TestCases_PluginDAO.cpp b/tests/dao_tests/TestCases_PluginDAO.cpp deleted file mode 100644 index b733df7..0000000 --- a/tests/dao_tests/TestCases_PluginDAO.cpp +++ /dev/null @@ -1,403 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file TestCases_PluginDAO.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains tests for feature dao class. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; - -#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ - {std::string tmp(in); \ - RUNNER_ASSERT_MSG(tmp == test, "Equals: [" + tmp + "]");} - -RUNNER_TEST(plugin_dao_test_register_plugins) -{ - { - std::string libraryPath("np1 lib_path"); - std::string libraryName("np1"); - std::string featuresInstallURI("np1 install_uri1"); - std::string featuresKeyCN("np1 keycn"); - std::string featuresRootCN("np1 rkey"); - std::string featuresRootFingerprint("np1 rkeyF"); - - PluginMetafileData pluginData; - pluginData.m_libraryName = libraryName; - pluginData.m_featuresInstallURI = featuresInstallURI; - pluginData.m_featuresKeyCN = featuresKeyCN; - pluginData.m_featuresRootCN = featuresRootCN; - pluginData.m_featuresRootFingerprint = featuresRootFingerprint; - - PluginHandle handle = PluginDAO::registerPlugin(pluginData, libraryPath); - PluginDAO::setPluginInstallationStatus(handle,PluginDAO::INSTALLATION_COMPLETED); - RUNNER_ASSERT(PluginDAO::isPluginInstalled(libraryName) == true); - - PluginDAO dao(handle); - std::string tmp; - tmp = dao.getLibraryPath(); //do for each - RUNNER_ASSERT_MSG(tmp == libraryPath, "Equals: " + tmp); - RUNNER_ASSERT(dao.getInstallURI() == featuresInstallURI); - RUNNER_ASSERT(dao.getKeyCn() == featuresKeyCN); - RUNNER_ASSERT(dao.getRootKey() == featuresRootCN); - RUNNER_ASSERT(dao.getRootKeyFingerprint() == featuresRootFingerprint); - } - - { - std::string libraryName("np2"); - - PluginMetafileData pluginData; - pluginData.m_libraryName = libraryName; - - PluginHandle handle = PluginDAO::registerPlugin(pluginData, ""); - PluginDAO::setPluginInstallationStatus(handle,PluginDAO::INSTALLATION_COMPLETED); - RUNNER_ASSERT(PluginDAO::isPluginInstalled(libraryName) == true); - - PluginDAO dao(handle); - RUNNER_ASSERT(dao.getLibraryPath() == ""); - RUNNER_ASSERT(dao.getInstallURI() == ""); - RUNNER_ASSERT(dao.getKeyCn() == ""); - RUNNER_ASSERT(dao.getRootKey() == ""); - RUNNER_ASSERT(dao.getRootKeyFingerprint() == ""); - } -} - -RUNNER_TEST(plugin_dao_test_register_plugin_implemented_object) -{ - { - std::string libraryPath("np3 lib_path"); - std::string libraryName("np3"); - - PluginMetafileData pluginData; - pluginData.m_libraryName = libraryName; - - PluginHandle handle = - PluginDAO::registerPlugin(pluginData, libraryPath); - RUNNER_ASSERT(PluginDAO::isPluginInstalled(libraryName) == true); - - std::string object1("object1"); - std::string object2("object2"); - PluginDAO::registerPluginImplementedObject(object1, handle); - PluginDAO::registerPluginImplementedObject(object2, handle); - - PluginHandle retHandle1 = - PluginDAO::getPluginHandleForImplementedObject(object1); - PluginHandle retHandle2 = - PluginDAO::getPluginHandleForImplementedObject(object1); - RUNNER_ASSERT(retHandle1 == handle); - RUNNER_ASSERT(retHandle2 == handle); - } -} - -RUNNER_TEST(plugin_dao_test_register_library_dependencies) -{ - { - std::string libraryPath("np4 lib_path"); - std::string libraryName("np4"); - - PluginMetafileData pluginData; - pluginData.m_libraryName = libraryName; - - PluginHandle handle = - PluginDAO::registerPlugin(pluginData, libraryPath); - PluginDAO::setPluginInstallationStatus(handle,PluginDAO::INSTALLATION_COMPLETED); - RUNNER_ASSERT(PluginDAO::isPluginInstalled(libraryName) == true); - - PluginHandle depHandles[] = {117, 119}; - - PluginHandleSetPtr dependencies(new PluginHandleSet); - dependencies->insert(depHandles[1]); - dependencies->insert(depHandles[2]); - - PluginDAO::registerPluginLibrariesDependencies(handle, dependencies); - - PluginDAO dao(handle); - PluginHandleSetPtr retDependencies; - retDependencies = dao.getLibraryDependencies(); - - RUNNER_ASSERT( - retDependencies->size()==sizeof(depHandles)/sizeof(depHandles[0])); - RUNNER_ASSERT( - retDependencies->find(depHandles[1]) != retDependencies->end()); - RUNNER_ASSERT( - retDependencies->find(depHandles[2]) != retDependencies->end()); - } -} - -RUNNER_TEST(plugin_dao_test_register_required_object) -{ - { - std::string libraryPath("np5 lib_path"); - std::string libraryName("np5"); - - PluginMetafileData pluginData; - pluginData.m_libraryName = libraryName; - - PluginHandle handle = - PluginDAO::registerPlugin(pluginData, libraryPath); - PluginDAO::setPluginInstallationStatus(handle,PluginDAO::INSTALLATION_COMPLETED); - RUNNER_ASSERT(PluginDAO::isPluginInstalled(libraryName) == true); - - const size_t numObjects =2; - std::string objectReq [numObjects]; - objectReq[0] = std::string("object1.req"); - objectReq[1] = std::string("object2.req"); - PluginDAO::registerPluginRequiredObject(objectReq[0], handle); - PluginDAO::registerPluginRequiredObject(objectReq[1], handle); - - PluginObjects::ObjectsPtr objects = - PluginDAO::getRequiredObjectsForPluginHandle(handle); - - RUNNER_ASSERT(objects->size() == numObjects - && objects->find(objectReq[0]) != objects->end() - && objects->find(objectReq[1]) != objects->end()); - } -} - -RUNNER_TEST(plugin_dao_test_is_library_installed) -{ - { - //exist - std::list preinstalled; - preinstalled.push_back("plugin1"); - preinstalled.push_back("plugin2"); - preinstalled.push_back("plugin3"); - preinstalled.push_back("p4"); - preinstalled.push_back("p5"); - - FOREACH(it, preinstalled) - RUNNER_ASSERT_MSG(PluginDAO::isPluginInstalled(*it), - std::string("Not found: ") + *it); - } - - { - //does not exist - RUNNER_ASSERT_MSG( - PluginDAO::isPluginInstalled("not_installed1") == false, - "Found not_installed1"); - RUNNER_ASSERT_MSG(PluginDAO::isPluginInstalled("p 4") == false, - "Found p 4"); - RUNNER_ASSERT_MSG(PluginDAO::isPluginInstalled("") == false, - "Found "); - RUNNER_ASSERT_MSG(PluginDAO::isPluginInstalled("p33") == false, - "Found p33"); - RUNNER_ASSERT_MSG(PluginDAO::isPluginInstalled("feature1") == false, - "Found feature1"); - } -} - -RUNNER_TEST(plugin_dao_test_get_plugin_handle_list) -{ - PluginHandleList handles = PluginDAO::getPluginHandleList(); - RUNNER_ASSERT(handles.size() >= 5); -} - -RUNNER_TEST(plugin_dao_test_constructor_name) -{ - { - //exist - std::list preinstalled; - preinstalled.push_back("plugin1"); - preinstalled.push_back("plugin2"); - preinstalled.push_back("plugin3"); - preinstalled.push_back("p4"); - preinstalled.push_back("p5"); - - FOREACH(it, preinstalled) - { - PluginDAO dao(*it); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryName(), *it); - } - } - - { - //does not exist - std::list not_installed; - not_installed.push_back("plugin 1"); - not_installed.push_back(""); - not_installed.push_back("p 3"); - - FOREACH(it, not_installed) - { - Try { - //Plugin not exist - PluginDAO dao(*it); - RUNNER_ASSERT_MSG(false, "should not be found"); - } - Catch (PluginDAO::Exception::PluginNotExist) { - continue; - } - } - } -} - -RUNNER_TEST(plugin_dao_test_get_plugin_properties) -{ - { - PluginDAO dao("p4"); - RUNNER_ASSERT(dao.getPluginHandle() == 4); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryName(), "p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryPath(), "path_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getInstallURI(), "uri_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getKeyCn(), "keycn_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKey(), "rkey_to_p4"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKeyFingerprint(), "rkeyF_to_p4"); - } - - { - PluginDAO dao(5); - RUNNER_ASSERT(dao.getPluginHandle() == 5); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryName(), "p5"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryPath(), "path_to_p5"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getInstallURI(), "uri_to_p5"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getKeyCn(), "keycn_to_p5"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKey(), "rkey_to_p5"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKeyFingerprint(), "rkeyF_to_p5"); - } - - { - PluginDAO dao(2); - RUNNER_ASSERT(dao.getPluginHandle() == 2); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryName(), "plugin2"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryPath(), "path_to_plugin2"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getInstallURI(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getKeyCn(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKey(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKeyFingerprint(), ""); - } - - { - PluginDAO dao(1); - RUNNER_ASSERT(dao.getPluginHandle() == 1); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryName(), "plugin1"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getLibraryPath(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getInstallURI(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getKeyCn(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKey(), ""); - RUNNER_ASSERT_WHAT_EQUALS(dao.getRootKeyFingerprint(), ""); - } -} - -RUNNER_TEST(plugin_dao_test_get_implemented_objects_for_plugin_handle_1) -{ - { - const int handle = 1; - PluginDAOReadOnly dao(handle); - auto dbHandle = dao.getPluginHandle(); - RUNNER_ASSERT(dbHandle == handle); - auto objects = dao.getImplementedObjectsForPluginHandle(dbHandle); - - RUNNER_ASSERT(objects.size() == 0); - } -} - -RUNNER_TEST(plugin_dao_test_get_implemented_objects_for_plugin_handle_2) -{ - { - std::set< std::string > preinstalled = - { - "" - }; - - PluginDAOReadOnly dao(2); - auto dbHandle = dao.getPluginHandle(); - auto objects = dao.getImplementedObjectsForPluginHandle(dbHandle); - - LogError("\n" << objects.size() << " " << preinstalled.size() << "\n"); - - RUNNER_ASSERT(objects.size() == preinstalled.size()); - - FOREACH(dbObject, objects) - { - RUNNER_ASSERT(preinstalled.find(*dbObject) != preinstalled.end()); - } - } -} - -RUNNER_TEST(plugin_dao_test_get_implemented_objects_for_plugin_handle_3) -{ - { - std::set< std::string > preinstalled = - { - "Plugin_3_Object_A" - }; - - PluginDAOReadOnly dao(3); - auto dbHandle = dao.getPluginHandle(); - auto objects = dao.getImplementedObjectsForPluginHandle(dbHandle); - RUNNER_ASSERT(objects.size() == preinstalled.size()); - - FOREACH(dbObject, objects) - { - RUNNER_ASSERT(preinstalled.find(*dbObject) != preinstalled.end()); - } - } -} - -RUNNER_TEST(plugin_dao_test_get_implemented_objects_for_plugin_handle_4) -{ - { - std::set< std::string > preinstalled = - { - "Plugin_4_Object_A", - "Plugin_4_Object_B", - "Plugin_4_Object_C", - }; - - PluginDAOReadOnly dao(4); - auto dbHandle = dao.getPluginHandle(); - auto objects = dao.getImplementedObjectsForPluginHandle(dbHandle); - RUNNER_ASSERT(objects.size() == preinstalled.size()); - - FOREACH(dbObject, objects) - { - RUNNER_ASSERT(preinstalled.find(*dbObject) != preinstalled.end()); - } - } -} - -RUNNER_TEST(plugin_dao_test_get_implemented_objects_for_plugin_handle_5) -{ - { - std::set< std::string > preinstalled = - { - "Plugin_5_Object_B", - }; - - PluginDAOReadOnly dao(5); - auto dbHandle = dao.getPluginHandle(); - auto objects = dao.getImplementedObjectsForPluginHandle(dbHandle); - RUNNER_ASSERT(objects.size() == preinstalled.size()); - - FOREACH(dbObject, objects) - { - RUNNER_ASSERT(preinstalled.find(*dbObject) == preinstalled.end()); - } - } -} - - -#undef RUNNER_ASSERT_WHAT_EQUALS diff --git a/tests/dao_tests/TestCases_PropertyDAO.cpp b/tests/dao_tests/TestCases_PropertyDAO.cpp deleted file mode 100644 index 7425e0c..0000000 --- a/tests/dao_tests/TestCases_PropertyDAO.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file TestCases_PropertyDAO.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains tests for property dao class. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; -using namespace WrtDB::PropertyDAOReadOnly; - -// Widgets used 2000, 2001, 2002, 2003(saved by wrt_dao_tests_prepare_db.sh) - -#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ - {std::string tmp(in); \ - RUNNER_ASSERT_MSG(tmp == test, "Equals: [" + tmp + "]");} - -#define RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(in, test) \ - { \ - if(in.IsNull()) RUNNER_ASSERT_MSG(false, "NULL"); \ - else RUNNER_ASSERT_WHAT_EQUALS(DPL::ToUTF8String(*in),test);\ - } - -RUNNER_TEST(property_dao_get_lists) -{ - {//property list - std::map prefsMap; - prefsMap.insert(std::pair(2000, 2)); - prefsMap.insert(std::pair(2001, 1)); - prefsMap.insert(std::pair(2002, 2)); - prefsMap.insert(std::pair(1, 0)); //no widget - - FOREACH(it, prefsMap) { - PropertyDAOReadOnly::WidgetPreferenceList prefs = - PropertyDAOReadOnly::GetPropertyList(it->first); - RUNNER_ASSERT(prefs.size() == it->second); - } - } - - {//property key list - WidgetPropertyKeyList orig_2000; - orig_2000.push_back(DPL::FromUTF8String("key1_for_2000")); - orig_2000.push_back(DPL::FromUTF8String("key2_for_2000")); - - WidgetPropertyKeyList orig_2001; - orig_2001.push_back(DPL::FromUTF8String("key1_for_2001")); - - WidgetPropertyKeyList orig_2002; - orig_2002.push_back(DPL::FromUTF8String("key1_for_2002")); - orig_2002.push_back(DPL::FromUTF8String("key2_for_2002")); - - std::map prefsKeyMap; - prefsKeyMap.insert(std::pair( - 2000, &orig_2000)); - prefsKeyMap.insert(std::pair( - 2001, &orig_2001)); - prefsKeyMap.insert(std::pair( - 2002, &orig_2002)); - - FOREACH(it_out, prefsKeyMap) { - WidgetPropertyKeyList got = PropertyDAOReadOnly::GetPropertyKeyList( - it_out->first); - RUNNER_ASSERT(got.size() == it_out->second->size()); - //TODO - // FOREACH(it_in, got) - // { - // RUNNER_ASSERT(it_out->second. - // } - } - } -} - -RUNNER_TEST(property_dao_set_update_remove) -{ - WidgetPropertyKeyList keys = PropertyDAOReadOnly::GetPropertyKeyList(2000); - - //ADD - PropertyDAO::SetProperty(2000, - DPL::FromUTF8String("new_key"), - DPL::FromUTF8String("new_value1")); - - RUNNER_ASSERT_MSG( - keys.size() + 1 == PropertyDAOReadOnly::GetPropertyKeyList(2000).size(), - "new property not added"); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL( - PropertyDAOReadOnly::GetPropertyValue(2000, - DPL::FromUTF8String("new_key")), - "new_value1"); - - //UPDATE - PropertyDAO::SetProperty(2000, - DPL::FromUTF8String("new_key"), - DPL::FromUTF8String("new_value2")); - RUNNER_ASSERT_MSG( - keys.size() + 1 == PropertyDAOReadOnly::GetPropertyKeyList(2000).size(), - "new property not added"); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL( - PropertyDAOReadOnly::GetPropertyValue(2000, - DPL::FromUTF8String("new_key")), - "new_value2"); - - //REMOVE - PropertyDAO::RemoveProperty(2000, DPL::FromUTF8String("new_key")); - - RUNNER_ASSERT_MSG( - keys.size() == PropertyDAOReadOnly::GetPropertyKeyList(2000).size(), - "property not removed"); - -} - -RUNNER_TEST(property_dao_get_value) -{ - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL( - PropertyDAOReadOnly::GetPropertyValue( - 2000, DPL::FromUTF8String("key1_for_2000")), - "value_for_key1_2000"); - - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL( - PropertyDAOReadOnly::GetPropertyValue( - 2000, DPL::FromUTF8String("key2_for_2000")), - "value_for_key2_2000"); -} - -#undef RUNNER_ASSERT_WHAT_EQUALS diff --git a/tests/dao_tests/TestCases_WidgetDAO.cpp b/tests/dao_tests/TestCases_WidgetDAO.cpp deleted file mode 100644 index 5758837..0000000 --- a/tests/dao_tests/TestCases_WidgetDAO.cpp +++ /dev/null @@ -1,868 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file TestCases_WidgetDAO.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains tests for widget dao class. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace WrtDB; -using namespace Jobs::WidgetInstall; -using namespace LocalizationUtils; - -namespace { - -WidgetHandle _registerWidget(const WidgetRegisterInfo& regInfo, - const IWacSecurity& sec, - int line) -{ - WidgetHandle handle = INVALID_WIDGET_HANDLE; - Try { - auto previous = WidgetDAO::getHandleList(); - - // register widget - handle = WidgetDAO::registerWidget(regInfo, - sec, - GetUserAgentLanguageTags()); - - RUNNER_ASSERT_MSG(handle != INVALID_WIDGET_HANDLE, - "(called from line " << line << ")"); - - auto current = WidgetDAO::getHandleList(); - RUNNER_ASSERT_MSG(previous.size()+1 == current.size(), - "(called from line " << line << ")"); - - RUNNER_ASSERT_MSG(WidgetDAO::isWidgetInstalled(handle), - "(called from line " << line << ")"); - } - Catch (WidgetDAO::Exception::AlreadyRegistered) { - RUNNER_ASSERT_MSG( - false, - "Unexpected exception (called from line " << line << ")"); - } - return handle; -} - -#define REGISTER_WIDGET(regInfo, sec) _registerWidget((regInfo),(sec), __LINE__) - -} // namespace - -// Widgets used <2300,2500), 2000, 2001, 2002, 2003 - -#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ - {std::string tmp(in); \ - RUNNER_ASSERT_MSG(tmp == test, "Equals: [" + tmp + "]");} - -#define RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(in, test) \ - { \ - if(in.IsNull()) RUNNER_ASSERT_MSG(false, "NULL"); \ - else RUNNER_ASSERT_WHAT_EQUALS(DPL::ToUTF8String(*in),test);\ - } - -#define RUNNER_ASSERT_WHAT_EQUALS_OPTIONALINT(in, test) \ - { \ - if(in.IsNull()) RUNNER_ASSERT_MSG(false, "NULL"); \ - else RUNNER_ASSERT_MSG(*in == test, "Equals: [" + *in + "]"); \ - } - -//2300 -RUNNER_TEST(widget_dao_test_register_widget_empty_strings) -{ - WidgetRegisterInfo regInfo; - - //ext info - regInfo.shareHref = ""; - regInfo.isFactoryWidget = 0; - - //info - regInfo.configInfo.widget_id = DPL::FromUTF8String(""); - regInfo.configInfo.version = DPL::FromUTF8String(""); - regInfo.configInfo.width = 10; - regInfo.configInfo.height = 10; - regInfo.configInfo.authorName = DPL::FromUTF8String(""); - regInfo.configInfo.authorEmail = DPL::FromUTF8String(""); - regInfo.configInfo.authorHref = DPL::FromUTF8String(""); - regInfo.baseFolder = ""; - //TODO authenticated, etc... - regInfo.configInfo.flashNeeded = false; - regInfo.configInfo.minVersionRequired = 1.0; - regInfo.configInfo.backSupported = 1.0; - - //loc info - ConfigParserData::LocalizedData locData; - locData.name = DPL::FromUTF8String(""); - locData.shortName = DPL::FromUTF8String(""); - locData.description = DPL::FromUTF8String(""); - locData.license = DPL::FromUTF8String(""); - locData.licenseFile = DPL::FromUTF8String(""); - locData.licenseHref = DPL::FromUTF8String(""); - regInfo.configInfo.localizedDataSet.insert( - std::make_pair(DPL::FromUTF8String("en"),locData)); - - //userAgentLoc - - //icons - ConfigParserData::Icon icon(DPL::FromUTF8String("")); - icon.width = 10; - icon.height = 10; - LocaleSet locs; - locs.insert(DPL::FromUTF8String("en")); - WidgetRegisterInfo::LocalizedIcon locIcon(icon,locs); - regInfo.localizationData.icons.push_back(locIcon); - - //start file - WidgetRegisterInfo::StartFileProperties prop; - prop.encoding = DPL::FromUTF8String(""); - prop.type = DPL::FromUTF8String(""); - WidgetRegisterInfo::LocalizedStartFile file; - file.path = DPL::FromUTF8String(""); - file.propertiesForLocales.insert( - std::make_pair(DPL::FromUTF8String("en"), prop)); - regInfo.localizationData.startFiles.push_back(file); - - //widget pref - ConfigParserData::Preference pref(DPL::FromUTF8String(""),false); - pref.value = DPL::FromUTF8String(""); - regInfo.configInfo.preferencesList.insert(pref); - - //widget feature - ConfigParserData::Feature feat(DPL::FromUTF8String(""),false); - ConfigParserData::Param par(DPL::FromUTF8String((""))); - par.value = DPL::FromUTF8String(""); - feat.paramsList.insert(par); - regInfo.configInfo.featuresList.insert(feat); - - //win modes - regInfo.configInfo.windowModes.insert(DPL::FromUTF8String("")); - - //WARP info - ConfigParserData::AccessInfo access(DPL::FromUTF8String(""),true); - regInfo.configInfo.accessInfoSet.insert(access); - - //certificates - WidgetCertificateData cert; - cert.owner = WidgetCertificateData::AUTHOR; - cert.type = WidgetCertificateData::ROOT; - cert.chainId = 1; - cert.strMD5Fingerprint = ""; - cert.strSHA1Fingerprint = ""; - cert.strCommonName = DPL::FromUTF8String(""); - - WacSecurity security; - security.getCertificateListRef().push_back(cert); - - //powder - // TODO - - WidgetHandle handle = REGISTER_WIDGET(regInfo,security); - RUNNER_ASSERT_MSG(handle > 2003, "Widget register failed"); -} - -RUNNER_TEST(widget_dao_test_twice_install_same_widget) -{ - WacSecurity sec; - { - WidgetRegisterInfo regInfo; - REGISTER_WIDGET(regInfo, sec); - } - { - WidgetRegisterInfo regInfo; - REGISTER_WIDGET(regInfo, sec); - } - -} - -RUNNER_TEST(widget_dao_test_register_widget_minimum_info) -{ - WacSecurity sec; - const std::size_t NUMBER_OF_WIDGETS = 5; - - DPL::Optional lastHandle; - - for (std::size_t number = 0; number < NUMBER_OF_WIDGETS; ++number) - { - WidgetRegisterInfo regInfo; - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - lastHandle = handle; - - WidgetDAO dao(handle); - //TODO check nulls - } -} - -RUNNER_TEST(widget_dao_test_register_widget_info) -{ - WacSecurity sec; - const std::size_t NUMBER_OF_WIDGETS = 5; - - DPL::Optional lastHandle; - for (std::size_t number = 0; number < NUMBER_OF_WIDGETS; ++number) - { - std::ostringstream str; - str << "register_info_test_" << number; - - WidgetRegisterInfo regInfo; - regInfo.configInfo.widget_id = DPL::FromUTF8String(str.str()); - regInfo.configInfo.version = DPL::FromUTF8String(str.str()); - regInfo.configInfo.width = 10; - regInfo.configInfo.height = 10; - regInfo.configInfo.authorName = DPL::FromUTF8String(str.str()); - regInfo.configInfo.authorEmail = DPL::FromUTF8String(str.str()); - regInfo.configInfo.authorHref = DPL::FromUTF8String(str.str()); - regInfo.baseFolder = str.str(); //base folder at the end has / - regInfo.configInfo.flashNeeded = false; - //TODO authenticated, etc... - regInfo.configInfo.minVersionRequired = 1.0; - regInfo.configInfo.backSupported = true; - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - RUNNER_ASSERT_MSG(lastHandle.IsNull() || *lastHandle < handle, - "Widget handles should grow"); - lastHandle = handle; - - WidgetDAO dao(handle); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getGUID(), str.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getVersion(), str.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorName(), str.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorEmail(), str.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorHref(), str.str()); - RUNNER_ASSERT_WHAT_EQUALS(dao.getBaseFolder(), str.str() + "/"); - RUNNER_ASSERT(dao.getWebkitPluginsRequired() == false); -// RUNNER_ASSERT( -// dao.GetWidgetSecurityDomain() == WacSecurity::Trusted); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getMinimumWacVersion(), "1"); - } - -} - -RUNNER_TEST(widget_dao_test_register_widget_extended_info) -{ - WacSecurity sec; - const std::size_t NUMBER_OF_WIDGETS = 5; - - DPL::Optional lastHandle; - for (std::size_t number = 0; number < NUMBER_OF_WIDGETS; ++number) - { - std::ostringstream str; - str << "register_ext_info_test_" << number; - - WidgetRegisterInfo regInfo; - -// regInfo.shareHref = str.str(); - regInfo.isFactoryWidget = 0; - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - RUNNER_ASSERT_MSG(lastHandle.IsNull() || *lastHandle < handle, - "Widget handles should grow"); - lastHandle = handle; - - WidgetDAO dao(handle); -// RUNNER_ASSERT_WHAT_EQUALS(dao.GetShareHref(), str.str()); - RUNNER_ASSERT(dao.isFactory() == false); - RUNNER_ASSERT(dao.isDeletable() == true); - } -} - -RUNNER_TEST(widget_dao_test_register_widget_localized_info) -{ - WacSecurity sec; - const std::size_t NUMBER_OF_WIDGETS = 5; - - DPL::Optional lastHandle; - for (std::size_t number = 0; number < NUMBER_OF_WIDGETS; ++number) - { - WidgetRegisterInfo regInfo; - std::ostringstream str_en; - std::ostringstream str_pl; - str_en << "register_loc_info_test_en_" << number; - str_pl<< "register_loc_info_test_pl_" << number; - {//EN - ConfigParserData::LocalizedData locDataEn; - locDataEn.name = DPL::FromUTF8String(str_en.str()); - locDataEn.shortName = DPL::FromUTF8String(str_en.str()); - locDataEn.description = DPL::FromUTF8String(str_en.str()); - locDataEn.license = DPL::FromUTF8String(str_en.str()); - locDataEn.licenseFile = DPL::FromUTF8String(str_en.str()); - locDataEn.licenseHref = DPL::FromUTF8String(str_en.str()); - regInfo.configInfo.localizedDataSet.insert( - std::make_pair(DPL::FromUTF8String("en"),locDataEn)); - } - - {//PL - ConfigParserData::LocalizedData locDataPl; - locDataPl.name = DPL::FromUTF8String(str_pl.str()); - locDataPl.shortName = DPL::FromUTF8String(str_pl.str()); - locDataPl.description = DPL::FromUTF8String(str_pl.str()); - locDataPl.license = DPL::FromUTF8String(str_pl.str()); - locDataPl.licenseFile = DPL::FromUTF8String(str_pl.str()); - locDataPl.licenseHref = DPL::FromUTF8String(str_pl.str()); - regInfo.configInfo.localizedDataSet.insert( - std::make_pair(DPL::FromUTF8String("pl"),locDataPl)); - } - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - RUNNER_ASSERT_MSG(lastHandle.IsNull() || *lastHandle < handle, - "Widget handles should grow"); - lastHandle = handle; - - WidgetDAO dao(handle); - RUNNER_ASSERT_MSG(dao.getLanguageTags().size() == 2, - "language tags list invalid"); - - {//EN - WidgetLocalizedInfo locInfo = - dao.getLocalizedInfo(DPL::FromUTF8String("en")); - - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.name, - str_en.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.shortName, - str_en.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.description, - str_en.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.license, - str_en.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.licenseHref, - str_en.str()); - } - - {//PL - WidgetLocalizedInfo locInfo = - dao.getLocalizedInfo(DPL::FromUTF8String("pl")); - - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.name, - str_pl.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.shortName, - str_pl.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.description, - str_pl.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.license, - str_pl.str()); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(locInfo.licenseHref, - str_pl.str()); - } - } -} - -RUNNER_TEST(widget_dao_test_register_widget_user_agent_loc) -{ - RUNNER_TODO_MSG("not yet implemented"); - WacSecurity sec; - WidgetRegisterInfo regInfo; - - // register widget - REGISTER_WIDGET(regInfo, sec); - // TODO what to check? there's no way to read user agent locale -} - -RUNNER_TEST(widget_dao_test_register_widget_icons) -{ - WacSecurity sec; - WidgetRegisterInfo regInfo; - - ConfigParserData::Icon icon(L"icon1"); - icon.width = 10; - icon.height = 10; - LocaleSet locs; - locs.insert(DPL::FromUTF8String("en")); - WidgetRegisterInfo::LocalizedIcon locIcon(icon,locs); - regInfo.localizationData.icons.push_back(locIcon); - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO dao(handle); - WidgetDAOReadOnly::WidgetIconList list = dao.getIconList(); - - RUNNER_ASSERT(list.size() == regInfo.localizationData.icons.size()); - WidgetDAOReadOnly::WidgetIconList::const_iterator it1 = list.begin(); - WidgetRegisterInfo::LocalizedIconList::const_iterator it2 = - regInfo.localizationData.icons.begin(); - for(;it1!=list.end() && it2!=regInfo.localizationData.icons.end(); - ++it1,++it2) - { - RUNNER_ASSERT(it2->height == it1->iconHeight); - RUNNER_ASSERT(it2->width == it1->iconWidth); - RUNNER_ASSERT(it2->src == it1->iconSrc); - RUNNER_ASSERT(it2->availableLocales == locs); - } -} - -RUNNER_TEST(widget_dao_test_register_widget_start_files) -{ - WacSecurity sec; - - WidgetRegisterInfo::LocalizedStartFileList files; - WidgetRegisterInfo::StartFilePropertiesForLocalesMap map1; - WidgetRegisterInfo::StartFileProperties prop1; - prop1.encoding = DPL::FromUTF8String("enc1"); - prop1.type = DPL::FromUTF8String("type1"); - - map1.insert(std::make_pair(DPL::FromUTF8String("en"),prop1)); - map1.insert(std::make_pair(DPL::FromUTF8String("pl"),prop1)); - - WidgetRegisterInfo::LocalizedStartFile file1; - WidgetRegisterInfo::LocalizedStartFile file2; - file1.path = DPL::FromUTF8String("path1"); - file1.propertiesForLocales = map1; - file2.path = DPL::FromUTF8String("path2"); - file2.propertiesForLocales = map1; - - files.push_back(file1); - files.push_back(file1); - - WidgetRegisterInfo regInfo; - regInfo.localizationData.startFiles = files; - - REGISTER_WIDGET(regInfo, sec); - - //TODO no getter in WidgetDAO (getter in LocalizedWidgetDAO, - // but it will be removed -} - -RUNNER_TEST(widget_dao_test_register_widget_features) -{ - WacSecurity sec; - ConfigParserData::FeaturesList features; - features.insert(ConfigParserData::Feature(DPL::FromUTF8String("f1"),true)); - features.insert(ConfigParserData::Feature(DPL::FromUTF8String("f2"))); - features.insert(ConfigParserData::Feature(DPL::FromUTF8String("f3"), - false)); - - WidgetRegisterInfo regInfo; - FOREACH(it, features) - regInfo.configInfo.featuresList.insert(*it); - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO dao(handle); - WidgetFeatureSet out = dao.getFeaturesList(); - RUNNER_ASSERT_MSG(out.size() == features.size(), - "wrong number of features"); -// FOREACH(it, out) -// RUNNER_ASSERT(features.find(*it) != features.end()); -} - -RUNNER_TEST(widget_dao_test_register_widget_win_modes) -{ - WacSecurity sec; - std::set modes; - modes.insert(DPL::FromUTF8String("full")); - modes.insert(DPL::FromUTF8String("window")); - - WidgetRegisterInfo regInfo; - - FOREACH(it, modes) - regInfo.configInfo.windowModes.insert(*it); - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO dao(handle); - std::list wins = dao.getWindowModes(); - RUNNER_ASSERT_MSG(modes.size() == wins.size(), - "wrong number of window modes"); - FOREACH(it, wins) - RUNNER_ASSERT(modes.find(*it) != modes.end()); -} - -RUNNER_TEST(widget_dao_test_register_widget_warp_info) -{ - WacSecurity sec; - ConfigParserData::AccessInfoSet orig; - orig.insert(ConfigParserData::AccessInfo(DPL::FromUTF8String("iri1"), - true)); - orig.insert(ConfigParserData::AccessInfo(DPL::FromUTF8String("iri2"), - false)); - orig.insert(ConfigParserData::AccessInfo(DPL::FromUTF8String("iri3"), - true)); - - WidgetRegisterInfo regInfo; - FOREACH(it, orig) - regInfo.configInfo.accessInfoSet.insert(*it); - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO dao(handle); - - WidgetAccessInfoList out; - dao.getWidgetAccessInfo(out); - RUNNER_ASSERT_MSG(out.size() == orig.size(), - "wrong number of access info elem"); - FOREACH(it, out){ - ConfigParserData::AccessInfo tmp(it->strIRI,it->bSubDomains); - RUNNER_ASSERT(orig.find(tmp) != orig.end()); - } -} - -RUNNER_TEST(widget_dao_test_register_widget_certificates) -{ - WacSecurity sec; - WidgetRegisterInfo regInfo; - - WidgetCertificateData cert; - cert.owner = WidgetCertificateData::AUTHOR; - cert.type = WidgetCertificateData::ROOT; - cert.chainId = 1; - cert.strMD5Fingerprint = "md5"; - cert.strSHA1Fingerprint = "sha1"; - cert.strCommonName = DPL::FromUTF8String("common name"); - - WidgetCertificateDataList& certListRef = sec.getCertificateListRef(); - certListRef.push_back(cert); - - // register widget - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO dao(handle); - - // certificates - WidgetCertificateDataList recList = dao.getCertificateDataList(); - RUNNER_ASSERT(recList.size() == certListRef.size()); - - auto recListIt = recList.begin(); - auto certListIt = certListRef.begin(); - for(;recListIt != recList.end() && certListIt != certListRef.end(); - ++recListIt,++certListIt) - { - RUNNER_ASSERT(recListIt->chainId == certListIt->chainId); - RUNNER_ASSERT(recListIt->owner == certListIt->owner); - RUNNER_ASSERT(recListIt->strCommonName == certListIt->strCommonName); - RUNNER_ASSERT(recListIt->strMD5Fingerprint == - certListIt->strMD5Fingerprint); - RUNNER_ASSERT(recListIt->strSHA1Fingerprint == - certListIt->strSHA1Fingerprint); - RUNNER_ASSERT(recListIt->type == certListIt->type); - } - - // fingerprints - RUNNER_ASSERT(dao.getKeyFingerprints(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY).empty()); - RUNNER_ASSERT(dao.getKeyFingerprints(WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY).empty()); - RUNNER_ASSERT(dao.getKeyFingerprints(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT).empty()); - - FingerPrintList fingerprints = dao.getKeyFingerprints( - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - RUNNER_ASSERT(fingerprints.size() == certListRef.size()*2); - FOREACH(it, certListRef) - { - auto md5 = std::find(fingerprints.begin(), - fingerprints.end(), - it->strMD5Fingerprint); - RUNNER_ASSERT(md5 != fingerprints.end()); - - auto sha = std::find(fingerprints.begin(), - fingerprints.end(), - it->strSHA1Fingerprint); - RUNNER_ASSERT(sha != fingerprints.end()); - } - - // common names - RUNNER_ASSERT(dao.getKeyCommonNameList(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY).empty()); - RUNNER_ASSERT(dao.getKeyCommonNameList(WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY).empty()); - RUNNER_ASSERT(dao.getKeyCommonNameList(WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT).empty()); - - FingerPrintList commonNames = dao.getKeyCommonNameList( - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - RUNNER_ASSERT(commonNames.size() == certListRef.size()); - FOREACH(it, certListRef) - { - auto cn = std::find(commonNames.begin(), - commonNames.end(), - DPL::ToUTF8String(it->strCommonName)); - RUNNER_ASSERT(cn != commonNames.end()); - } -} - -namespace { - -const DPL::String categories[] = - {L"nu",L"se",L"vi",L"la",L"dr",L"ga",L"ha",L"ug"}; -const size_t categoriesLength = sizeof(categories)/sizeof(categories[0]); -const DPL::String contextValues[] = {L"xa",L"xb",L"xc",L"xd",L"xe"}; -const size_t contextValuesLength = - sizeof(contextValues)/sizeof(contextValues[0]); -const size_t levelCount = 3; - -void randomEntries(Powder::Description& description,const DPL::String& category) -{ - Powder::Description::CategoryEntry& categoryEntry = - description.categories[category]; - for(size_t e = 0;e( - random() % (Powder::Description::LevelUnknown + 1)); - - /* - * Random context value between 1 and (2^contextValuesLength-1). - * Every bit corresponds to a single flag from contextValues. - */ - size_t context = random() % (1< 0) { - entry.context.insert(contextValues[c]); - } - } - categoryEntry.levels.push_back(entry); - } -} - -template -void equalityCheck(const std::string& comment, const T& a1, const T& a2) -{ - RUNNER_ASSERT_MSG(a1 == a2, comment << a1 << " not equal to " << a2); -} - -} // namespace - -//2365 -RUNNER_TEST(widget_dao_test_register_widget_powder) -{ - using namespace Powder; - - WacSecurity sec; - WidgetRegisterInfo regInfo; - - srandom(static_cast(time(0))); - - // random age rating - regInfo.powderDescription.ageRating = random() % 100 + 1; - - // create categories - for(size_t c=0;cfirst << "/" << it2->first); - // compare categories names - equalityCheck("Category ",it1->first,it2->first); - // compare level count - equalityCheck("Levels count ", - it1->second.levels.size(), - it2->second.levels.size()); - - auto lit1 = it1->second.levels.begin(); - auto lit2 = it2->second.levels.begin(); - for(;lit2!=it2->second.levels.end() && lit1!=it1->second.levels.end(); - ++lit1,++lit2) - { - LogDebug("Level " << lit1->level << "/" << lit2->level); - // compare levels - equalityCheck("Level ",lit1->level,lit2->level); - // compare context entries - RUNNER_ASSERT_MSG(lit1->context == lit2->context, - "context entries do not match"); - } - } -} - -RUNNER_TEST(widget_dao_test_is_widget_installed) -{ - RUNNER_ASSERT(WidgetDAO::isWidgetInstalled(2000)); - - WacSecurity sec; - WidgetRegisterInfo regInfo; - - WidgetHandle widgetHandle = REGISTER_WIDGET(regInfo, sec); - - RUNNER_ASSERT(WidgetDAO::isWidgetInstalled(widgetHandle)); -} - -RUNNER_TEST(widget_dao_test_unregister_widget) -{ - WacSecurity sec; - WidgetHandleList handles = WidgetDAO::getHandleList(); - - WidgetRegisterInfo regInfo; - - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO::unregisterWidget(handle); - - RUNNER_ASSERT_MSG(handles.size() == WidgetDAO::getHandleList().size(), - "Widget unregister failed"); -} - -RUNNER_TEST(widget_dao_test_get_widget_handle_list) -{ - WidgetHandleList handles = WidgetDAO::getHandleList(); - RUNNER_ASSERT(handles.size() >= 3); -} - -RUNNER_TEST(widget_dao_test_get_widget_attributes) -{ - { - WidgetHandle handle = 2000; - WidgetDAO dao(handle); - - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getGUID(), "w_id_2000"); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getVersion(), "1.0.0"); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorName(), "a_name_2000"); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorEmail(), - "a_email_2000"); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorHref(), "a_href_2000"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getBaseFolder(), "basef_2000/"); - RUNNER_ASSERT(dao.getWebkitPluginsRequired() == true); - RUNNER_ASSERT(dao.getChildProtection().enabled == true); - RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getMinimumWacVersion(), "1.0"); - } -} - -RUNNER_TEST(widget_dao_test_localization) -{ - WacSecurity sec; - - // icon - WidgetRegisterInfo regInfo; - ConfigParserData::Icon icon(L"icon1"); - icon.width = 10; - icon.height = 10; - LocaleSet locs; - locs.insert(DPL::FromUTF8String("en")); - locs.insert(DPL::FromUTF8String("pl")); - WidgetRegisterInfo::LocalizedIcon locIcon(icon,locs); - regInfo.localizationData.icons.push_back(locIcon); - - //start file - WidgetRegisterInfo::StartFileProperties prop_en; - prop_en.encoding = DPL::FromUTF8String("encoding_en"); - prop_en.type = DPL::FromUTF8String("type_en"); - - WidgetRegisterInfo::StartFileProperties prop_pl; - prop_pl.encoding = DPL::FromUTF8String("encoding_pl"); - prop_pl.type = DPL::FromUTF8String("type_pl"); - - WidgetRegisterInfo::LocalizedStartFile file; - file.path = DPL::FromUTF8String("path"); - file.propertiesForLocales.insert( - std::make_pair(DPL::FromUTF8String("en"), prop_en)); - file.propertiesForLocales.insert( - std::make_pair(DPL::FromUTF8String("pl"), prop_pl)); - regInfo.localizationData.startFiles.push_back(file); - - // register widget - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - - WidgetDAO dao(handle); - - // check localized icons - WidgetDAO::WidgetLocalizedIconList locList = dao.getLocalizedIconList(); - RUNNER_ASSERT(locList.size() == locs.size()); - - // non-localized icon - WidgetDAO::WidgetIconList list = dao.getIconList(); - int iconId = list.front().iconId; - - // compare every icon with the origin - auto locsIt = locs.begin(); - auto iconIt = locList.begin(); - for(;locsIt!=locs.end() && iconIt!=locList.end();++locsIt,++iconIt) { - RUNNER_ASSERT(iconIt->appId == handle); - RUNNER_ASSERT(iconIt->iconId == iconId); - RUNNER_ASSERT(iconIt->widgetLocale == *locsIt); - } - - // localized start file list - WidgetDAO::LocalizedStartFileList fList = dao.getLocalizedStartFileList(); - RUNNER_ASSERT(fList.size() == file.propertiesForLocales.size()); - - int startFileId = dao.getStartFileList().front().startFileId; - - FOREACH(it,fList) - { - RUNNER_ASSERT(it->appId == handle); - auto propIt = file.propertiesForLocales.find(it->widgetLocale); - RUNNER_ASSERT(propIt != file.propertiesForLocales.end()); - RUNNER_ASSERT(it->encoding == propIt->second.encoding); - RUNNER_ASSERT(it->type == propIt->second.type); - RUNNER_ASSERT(it->startFileId == startFileId); - } -} - -RUNNER_TEST(widget_dao_test_wac_security) -{ - WacSecurity sec; - WidgetRegisterInfo regInfo; - { - // register widget - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - WidgetDAO dao(handle); - - RUNNER_ASSERT(!dao.isDistributorSigned()); - RUNNER_ASSERT(!dao.isRecognized()); - RUNNER_ASSERT(!dao.isWacSigned()); - } - sec.setDistributorSigned(true); - sec.setRecognized(true); - sec.setWacSigned(true); - { - // register widget - WidgetHandle handle = REGISTER_WIDGET(regInfo, sec); - WidgetDAO dao(handle); - - RUNNER_ASSERT(dao.isDistributorSigned()); - RUNNER_ASSERT(dao.isRecognized()); - RUNNER_ASSERT(dao.isWacSigned()); - } -} - -#undef RUNNER_ASSERT_WHAT_EQUALS diff --git a/tests/dao_tests/tests_dao.cpp b/tests/dao_tests/tests_dao.cpp deleted file mode 100644 index f44e662..0000000 --- a/tests/dao_tests/tests_dao.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file tests_plugin_dao.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains tests for plugin dao class. - */ - -#include -#include -#include -#include - -using namespace LoopControl; - -int main (int argc, char *argv[]) -{ - int ret = system("/usr/bin/wrt_dao_tests_prepare_db.sh start"); - if (ret != 0) { - LogError("Preparation script has return error: " << ret - << ". Quitting"); - return -1; - } - - init_loop(argc, argv); - - WrtDB::WrtDatabase::attachToThread(); - - LogInfo("Starting tests"); - int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); - - WrtDB::WrtDatabase::detachFromThread(); - - quit_loop(); - - ret = system("/usr/bin/wrt_dao_tests_prepare_db.sh stop"); - if (ret != 0) { - LogError("Finalization script has return error: " << ret); - return -1; - } - return status; -} diff --git a/tests/dao_tests/wrt_dao_tests_prepare_db.sh b/tests/dao_tests/wrt_dao_tests_prepare_db.sh deleted file mode 100755 index 65ae5b0..0000000 --- a/tests/dao_tests/wrt_dao_tests_prepare_db.sh +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/sh -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -WRT_DB=/opt/dbspace/.wrt.db -WRT_DB_BCK=/tmp/wrt.db_backup - -if [ "x$1" == "xstart" ]; then - echo start; - cp $WRT_DB $WRT_DB_BCK - wrt_create_clean_db.sh - - #simple plugins - INS_MIN_PLUGINPROP="insert into PluginProperties(PluginPropertiesId, InstallationState, PluginLibraryName" - INS_ALL_PLUGINPROP="insert into PluginProperties(PluginPropertiesId, InstallationState, PluginLibraryName, PluginLibraryPath, InstallURI, KeyCN, RootKeyCN, rootKeyFingerprint)" - INS_PLUGIN_OBJECTS="insert into PluginImplementedObjects(PluginObject, PluginPropertiesId)" - - sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}) VALUES(1, 1, 'plugin1')"; - sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}, PluginLibraryPath) VALUES(2, 1, 'plugin2', 'path_to_plugin2')"; - sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}, InstallURI) VALUES(3, 1, 'plugin3', 'uri_to_plugin3')"; - sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(4, 1, 'p4', 'path_to_p4', 'uri_to_p4', 'keycn_to_p4', 'rkey_to_p4', 'rkeyF_to_p4')"; - sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(5, 1, 'p5', 'path_to_p5', 'uri_to_p5', 'keycn_to_p5', 'rkey_to_p5', 'rkeyF_to_p5')"; - - #plugin dependendencies - #sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES(1, )"; - sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES('', 2)"; - sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES('Plugin_3_Object_A', 3)"; - sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES('Plugin_4_Object_A', 4)"; - sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES('Plugin_4_Object_B', 4)"; - sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES('Plugin_4_Object_C', 4)"; - sqlite3 $WRT_DB "${INS_PLUGIN_OBJECTS} VALUES('Plugin_5_Object_A', 5)"; - - - #simple features - INS_ALL_FEATURESLIST="insert into FeaturesList(FeatureUUID, FeatureName, PluginPropertiesId)" - sqlite3 $WRT_DB "${INS_ALL_FEATURESLIST} VALUES(1, 'feature1', 1)"; - sqlite3 $WRT_DB "${INS_ALL_FEATURESLIST} VALUES(2, 'feature2', 4)"; - sqlite3 $WRT_DB "${INS_ALL_FEATURESLIST} VALUES(3, 'feature3', 4)"; - sqlite3 $WRT_DB "${INS_ALL_FEATURESLIST} VALUES(4, 'feature4', 4)"; - - #device capabilities - INS_ALL_DEVICECAPS="insert into DeviceCapabilities(DeviceCapID, DeviceCapName, DeviceCapDefaultValue)" - sqlite3 $WRT_DB "${INS_ALL_DEVICECAPS} VALUES(1, 'devicecap1', 1)"; - sqlite3 $WRT_DB "${INS_ALL_DEVICECAPS} VALUES(2, 'devicecap2', 2)"; - sqlite3 $WRT_DB "${INS_ALL_DEVICECAPS} VALUES(3, 'devicecap3', 3)"; - sqlite3 $WRT_DB "${INS_ALL_DEVICECAPS} VALUES(4, 'devicecap4', 4)"; - - #DefferedWidgetPackageInstallation - INS_ALL_DEFERRED="insert into DefferedWidgetPackageInstallation(path)" - sqlite3 $WRT_DB "${INS_ALL_DEFERRED} VALUES('widgetpackage1')"; - sqlite3 $WRT_DB "${INS_ALL_DEFERRED} VALUES('widgetpackage2')"; - sqlite3 $WRT_DB "${INS_ALL_DEFERRED} VALUES('widgetpackage3')"; - sqlite3 $WRT_DB "${INS_ALL_DEFERRED} VALUES('widgetpackage4')"; - - #Widgets - INS_ALL_WIDGETEXT="insert into WidgetExtendedInfo(app_id, share_href, signature_type, factory_widget)" - INS_ALL_WIDGET="insert into WidgetInfo(app_id, widget_id, widget_version, widget_width, widget_height, author_name, author_email, author_href, base_folder, webkit_plugins_required, child_protection, recognized, wac_signed, distributor_signed, min_version)" - INS_ALL_WIDGET_LOC="insert into LocalizedWidgetInfo(app_id, widget_locale, widget_name, widget_shortname, widget_description, widget_license, widget_license_file, widget_license_href)" - INS_ALL_USER_AGENT_LOCALES="insert into WidgetUserAgentLocales(app_id, language_tag)" - INS_ALL_WIDGET_ICONS="insert into WidgetIcon(app_id, icon_src, icon_width, icon_height)" - INS_ALL_WIDGET_LOC_ICONS="insert into WidgetLocalizedIcon(app_id, icon_id, widget_locale)" - INS_ALL_WIDGET_STARTFILE="insert into WidgetStartFile(app_id, src)" - INS_ALL_WIDGET_LOC_STARTFILE="insert into WidgetLocalizedStartFile(app_id, start_file_id, widget_locale, type, encoding)" - INS_ALL_WIDGET_DEFPREF="insert into WidgetDefaultPreference(app_id, key_name, key_value, readonly)" - INS_ALL_WIDGET_PREF="insert into WidgetPreference(app_id, key_name, key_value, readonly)" - INS_ALL_WIDGET_FEATURE="insert into WidgetFeature(app_id, name, required)" - INS_ALL_WIDGET_FEATURE_PARAM="insert into FeatureParam(widget_feature_id, name, value)" - INS_ALL_WIDGET_WINMODES="insert into WidgetWindowModes(app_id, window_mode)" - INS_ALL_WIDGET_WARP="insert into WidgetWARPInfo(app_id, iri, subdomain_access)" - INS_ALL_WIDGET_CERT="insert into WidgetCertificateFingerprint(app_id, owner, chainid, type, md5_fingerprint, sha1_fingerprint, common_name)" - INS_ALL_WIDGET_POWDERLEV="insert into PowderLevels(app_id, category, level)" - INS_ALL_WIDGET_POWDERLEV_CONT="insert into PowderLevelContexts(levelid, context)" - - - sqlite3 $WRT_DB "${INS_ALL_WIDGET} VALUES(2000, 'w_id_2000', '1.0.0', 100, 200, 'a_name_2000', 'a_email_2000', 'a_href_2000', 'basef_2000', 1, 1, 1, 1, 1, '1.0')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET} VALUES(2001, 'w_id_2001', '2.0.0', 100, 200, 'a_name_2001', 'a_email_2001', 'a_href_2001', 'basef_2001', 1, 1, 1, 1, 1, '0.5')"; - sqlite3 $WRT_DB "insert into WidgetInfo(app_id, child_protection, back_supported) VALUES(2002, 1, 0)"; - sqlite3 $WRT_DB "insert into WidgetInfo(app_id, child_protection, back_supported) VALUES(2003, 1, 0)"; # for properties tests - - sqlite3 $WRT_DB "${INS_ALL_WIDGETEXT} VALUES(2000, 'share_href_2000', 0, 0)"; - sqlite3 $WRT_DB "${INS_ALL_WIDGETEXT} VALUES(2001, 'share_href_2001', 0, 0)"; - sqlite3 $WRT_DB "insert into WidgetExtendedInfo(app_id) VALUES(2002)"; - sqlite3 $WRT_DB "insert into WidgetExtendedInfo(app_id) VALUES(2003)"; - - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC} VALUES(2000, 'en', 'w_name_2000_en', 'w_shortname_2000_en', 'w_desc_2000_en', 'w_lic_2000_en', 'w_licf_2000_en', 'w_lic_href_2000_en')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC} VALUES(2000, 'pl', 'w_name_2000_pl', 'w_shortname_2000_pl', 'w_desc_2000_pl', 'w_lic_2000_pl', 'w_licf_2000_pl', 'w_lic_href_2000_pl')"; - sqlite3 $WRT_DB "insert into LocalizedWidgetInfo(app_id, widget_locale) VALUES(2002, 'en')"; - sqlite3 $WRT_DB "insert into LocalizedWidgetInfo(app_id, widget_locale) VALUES(2003, 'en')"; - - #TODO not sure what this table represents - sqlite3 $WRT_DB "${INS_ALL_USER_AGENT_LOCALES} VALUES(2000, 'en')"; - sqlite3 $WRT_DB "${INS_ALL_USER_AGENT_LOCALES} VALUES(2000, 'pl')"; - sqlite3 $WRT_DB "${INS_ALL_USER_AGENT_LOCALES} VALUES(2001, 'en')"; - sqlite3 $WRT_DB "${INS_ALL_USER_AGENT_LOCALES} VALUES(2002, 'en')"; - sqlite3 $WRT_DB "${INS_ALL_USER_AGENT_LOCALES} VALUES(2003, 'en')"; - - sqlite3 $WRT_DB "${INS_ALL_WIDGET_ICONS} VALUES(2000, 'icon_src_2000', 50, 50)"; - sqlite3 $WRT_DB "insert into WidgetIcon(app_id, icon_src) VALUES(2002, 'icon_src_2002')"; - - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC_ICONS} VALUES(2000, 1, 'en')"; - - sqlite3 $WRT_DB "${INS_ALL_WIDGET_STARTFILE} VALUES(2000, 'start_file_2000')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_STARTFILE} VALUES(2001, 'start_file_2001')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_STARTFILE} VALUES(2002, 'start_file_2002')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_STARTFILE} VALUES(2003, 'start_file_2003')"; - - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC_STARTFILE} VALUES(2000, 1, 'en', '', '')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC_STARTFILE} VALUES(2001, 2, 'en', '', '')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC_STARTFILE} VALUES(2002, 3, 'en', '', '')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_LOC_STARTFILE} VALUES(2003, 4, 'en', '', '')"; - - #widget properties - sqlite3 $WRT_DB "${INS_ALL_WIDGET_PREF} VALUES(2000, 'key1_for_2000', 'value_for_key1_2000', 0)"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_PREF} VALUES(2000, 'key2_for_2000', 'value_for_key2_2000', 0)"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_PREF} VALUES(2001, 'key1_for_2001', 'value1_for_key_2001', 1)"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_PREF} VALUES(2002, 'key1_for_2002', 'value1_for_key_2002', 0)"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET_PREF} VALUES(2002, 'key2_for_2002', 'value2_for_key_2002', 1)"; - - - exit $? - -elif [ "x$1" == "xstop" ]; then - echo stop; - cp $WRT_DB_BCK $WRT_DB - exit $? -else - exit 1 -fi diff --git a/tests/detail/efl/loop_control.cpp b/tests/detail/efl/loop_control.cpp deleted file mode 100644 index 60d82f9..0000000 --- a/tests/detail/efl/loop_control.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file loop_control.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This is implementation of EFL version of loop control - */ - -#include - -#include - -#include -#include - - -namespace LoopControl -{ -void init_loop(int argc, char *argv[]) -{ - (void)argc; - (void)argv; - g_type_init(); - g_thread_init(NULL); - - LogInfo("Starting"); - elm_init(argc, argv); -} - -void wait_for_wrt_init() -{ - ecore_main_loop_begin(); -} - -void finish_wait_for_wrt_init() -{ - ecore_main_loop_quit(); -} - -void quit_loop() -{ - elm_shutdown(); -} - -void wrt_start_loop() -{ - ecore_main_loop_begin(); -} - -void wrt_end_loop() -{ - ecore_main_loop_quit(); -} - -void *abstract_window() -{ - return elm_win_add(NULL, "hello", ELM_WIN_BASIC); -} - -}//end of LoopControl namespace diff --git a/tests/detail/include/loop_control.h b/tests/detail/include/loop_control.h deleted file mode 100644 index 30aa6e8..0000000 --- a/tests/detail/include/loop_control.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file loop_control.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief This file is the definitions of loop controlling utilities - */ - - -#ifndef LOOP_CONTROL_H_ -#define LOOP_CONTROL_H_ - -namespace LoopControl -{ - -void init_loop(int argc, char *argv[]); -void wait_for_wrt_init(); -void finish_wait_for_wrt_init(); -void quit_loop(); - -void wrt_start_loop(); -void wrt_end_loop(); - -void *abstract_window(); - -} - -#endif /* LOOP_CONTROL_H_ */ diff --git a/tests/engine_tests/CMakeLists.txt b/tests/engine_tests/CMakeLists.txt deleted file mode 100644 index 7c1f58a..0000000 --- a/tests/engine_tests/CMakeLists.txt +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) -# @author Pawel Sikorski (p.sikorski@samsung.com) -# @version 1.0 -# @brief -# -SET(TARGET_ENGINE_TEST "wrt-tests-engine") -# Set engine test sources -FILE(GLOB ENGINE_TESTS_SOURCES "${PROJECT_SOURCE_DIR}/tests/engine_tests/*.cpp") -SET(ENGINE_TESTS_SOURCES - ${ENGINE_TESTS_SOURCES} - ${PROJECT_SOURCE_DIR}/src/domain/widget_version.cpp) -PKG_CHECK_MODULES(ENGINE_TESTS_PKGS - eina - evas - ecore - elementary - appcore-efl - efreet - efreet-mime - efreet-trash - ecore-x - ecore-imf - ecore-ipc - ecore-evas - cert-svc - dpl-efl - dpl-test-efl - REQUIRED - ) - -INCLUDE_DIRECTORIES( - ${ENGINE_TESTS_PKGS_INCLUDE_DIRS} - ${PROJECT_SOURCE_DIR}/src/common - ${PROJECT_SOURCE_DIR}/src/domain - ${CMAKE_CURRENT_SOURCE_DIR} - ) - -LINK_DIRECTORIES(${ENGINE_TESTS_PKGS_LIBRARY_DIRS}) - -ADD_EXECUTABLE(${TARGET_ENGINE_TEST} - ${ENGINE_TESTS_SOURCES} - ) - -TARGET_LINK_LIBRARIES(${TARGET_ENGINE_TEST} - ${ENGINE_TESTS_PKGS_LIBRARIES} - ) -WRT_TEST_INSTALL(${TARGET_ENGINE_TEST}) diff --git a/tests/engine_tests/TestCases.cpp b/tests/engine_tests/TestCases.cpp deleted file mode 100644 index b958858..0000000 --- a/tests/engine_tests/TestCases.cpp +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file TestCases.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for test cases for engine internal tests - */ -#include -#include -#include - - -RUNNER_TEST(WidgetVersion_M2_O0) -{ - DPL::String raw(L"1.2"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == true); - RUNNER_ASSERT(version.Major() == DPL::String(L"1")); - RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional()); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M2_O0_nonwac_1) -{ - DPL::String raw(L"a1.2"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M2_O0_nonwac_2) -{ - DPL::String raw(L"1.2a"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M2_O0_nonwac_3) -{ - DPL::String raw(L"aaa1.2bbb"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M2_O0_nonwac_4) -{ - DPL::String raw(L"1a.a2"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M2_O0_long) -{ - DPL::String raw(L"123456789012345678901234567890.98765432109876543210987654321"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == true); - RUNNER_ASSERT(version.Major() == DPL::String(L"123456789012345678901234567890")); - RUNNER_ASSERT(version.Minor() == DPL::String(L"98765432109876543210987654321")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional()); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O0) -{ - DPL::String raw(L"1.2.3"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == true); - RUNNER_ASSERT(version.Major() == DPL::String(L"1")); - RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional(L"3")); - RUNNER_ASSERT(version.Optional() == DPL::Optional()); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O0_nonwac_1) -{ - DPL::String raw(L"a1a.2.3"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O0_nonwac_2) -{ - DPL::String raw(L"1.b2.3"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O0_nonwac_3) -{ - DPL::String raw(L"1.2.3c"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O0_nonwac_4) -{ - DPL::String raw(L"1.2.3a"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O1_1) -{ - DPL::String raw(L"1.2.3 test111"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == true); - RUNNER_ASSERT(version.Major() == DPL::String(L"1")); - RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional(L"3")); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"test111")); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O1_2) -{ - DPL::String raw(L"1.2.3 111"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == true); - RUNNER_ASSERT(version.Major() == DPL::String(L"1")); - RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional(L"3")); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"111")); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M3_O1_3) -{ - DPL::String raw(L"1.2.3 "); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_M2_O1_1) -{ - DPL::String raw(L"1.2 t"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == true); - RUNNER_ASSERT(version.Major() == DPL::String(L"1")); - RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"t")); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Strange_0) -{ - DPL::String raw(L"1"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Strange_1) -{ - DPL::String raw(L".1"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Strange_2) -{ - DPL::String raw(L"..1"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Strange_3) -{ - DPL::String raw(L"...1"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Strange_4) -{ - DPL::String raw(L"qwerty"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Strange_5) -{ - DPL::String raw(L"!@#$%^&*()_+ ^&%^*&%$^*&%*()& JHKJLHKJLH 685685687"); - WidgetVersion version(raw); - - RUNNER_ASSERT(version.IsWac() == false); - RUNNER_ASSERT(version.Raw() == raw); -} - -RUNNER_TEST(WidgetVersion_Compare_0) -{ - RUNNER_ASSERT(WidgetVersion(L"1.1") < WidgetVersion(L"1.2")); -} - -RUNNER_TEST(WidgetVersion_Compare_1) -{ - RUNNER_ASSERT(WidgetVersion(L"01.001") < WidgetVersion(L"0001.002")); -} - -RUNNER_TEST(WidgetVersion_Compare_2) -{ - RUNNER_ASSERT(WidgetVersion(L"0.1") == WidgetVersion(L"00.1")); -} - -RUNNER_TEST(WidgetVersion_Compare_3) -{ - RUNNER_ASSERT(WidgetVersion(L"1.00000000000000") >= WidgetVersion(L"1.0 test")); -} - -RUNNER_TEST(WidgetVersion_Compare_4) -{ - RUNNER_ASSERT(WidgetVersion(L"19647963733338932479072098437089778943732432.00000000000000004324324324324321") > WidgetVersion(L"4324324324324324324321.000432")); -} - -RUNNER_TEST(WidgetVersion_Compare_5) -{ - RUNNER_ASSERT(WidgetVersion(L"12345.1") == WidgetVersion(L"12345.1")); -} - -RUNNER_TEST(WidgetVersion_Compare_6) -{ - RUNNER_ASSERT(WidgetVersion(L"1.1") != WidgetVersion(L"1.11")); -} - -RUNNER_TEST(WidgetVersion_Compare_7) -{ - RUNNER_ASSERT(WidgetVersion(L"000123000.0 notatest") == WidgetVersion(L"00123000.0 testtesttest")); -} diff --git a/tests/engine_tests/engine_tests.cpp b/tests/engine_tests/engine_tests.cpp deleted file mode 100644 index 9cdbdad..0000000 --- a/tests/engine_tests/engine_tests.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file main.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of main - */ -#include -#include - - -int main(int argc, char *argv[]) -{ - LogInfo("Starting tests"); - int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); - - return status; -} - diff --git a/tests/smack_tests/CMakeLists.txt b/tests/smack_tests/CMakeLists.txt deleted file mode 100644 index 5eb00bd..0000000 --- a/tests/smack_tests/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Bartlomiej Grzelewski (b.grzelewski@samsung.com) -# @version 1.0 -# @brief -# - -SET(TARGET_SMACK_TEST "wrt-tests-smack") - -# Set DPL tests sources -SET(SMACK_TESTS_SOURCES - ${PROJECT_SOURCE_DIR}/tests/smack_tests/smack_tests.cpp - ${PROJECT_SOURCE_DIR}/tests/smack_tests/TestSuite01.cpp - ${PROJECT_SOURCE_DIR}/tests/w3c_tests/W3CTestBase.cpp - ) - -WRT_TEST_BUILD(${TARGET_SMACK_TEST} ${SMACK_TESTS_SOURCES}) - -WRT_TEST_INSTALL(${TARGET_SMACK_TEST}) - - -ADD_SUBDIRECTORY("test-cases") diff --git a/tests/smack_tests/TestSuite01.cpp b/tests/smack_tests/TestSuite01.cpp deleted file mode 100644 index a96ad88..0000000 --- a/tests/smack_tests/TestSuite01.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file TestSuite01.cpp - * @author Bartlomiej Grzelewski - * @brief Test cases for smack. - */ -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include "test_tools.h" - -#define SMACK_TEST_FILE "/opt/media/Downloads/Others/TEST" -#define SMACK_TEST_POLICY "/usr/etc/ace/smack-test.xml" -#define SMACK_TEST_WIDGET01 "/opt/apps/widget/user/smack/smack01.wgt" -#define SMACK_TEST_WIDGET01_NAME "test01" -#define SMACK_TEST_WIDGET02 "/opt/apps/widget/user/smack/smack02.wgt" -#define SMACK_TEST_WIDGET02_NAME "test02" - -#define CLEANENV(d) \ - do{ \ - PolicyChanger changer; \ - changer.updatePolicy(d); \ - AceDB::AceDAO::clearWidgetDevCapSettings(); \ - AceDB::AceDAO::clearDevCapSettings(); \ - }while(0) - -#define TESTSUITE01(n) \ -RUNNER_TEST(ts01_smack_ ## n) - -TESTSUITE01(00_check_compilation_flags){ -#ifdef WRT_SKIP_ACE_SUPPORT - RUNNER_ASSERT(true); -#else - RUNNER_ASSERT(false); -#endif -} - -TESTSUITE01(01){ - CLEANENV(SMACK_TEST_POLICY); - - FileWrapper file(SMACK_TEST_FILE); - file.create(); - - ShellWrapper wrapper(SMACK_TEST_WIDGET01, SMACK_TEST_WIDGET01_NAME); - - wrapper.install(); - wrapper.run(); - - std::vector data = {'1'}; - RUNNER_ASSERT(file.expectContent(data)); -} - -TESTSUITE01(02){ - CLEANENV(SMACK_TEST_POLICY); - - FileWrapper file(SMACK_TEST_FILE); - file.create(); - - ShellWrapper wrapper(SMACK_TEST_WIDGET02, SMACK_TEST_WIDGET02_NAME); - - wrapper.install(); - wrapper.setEnvironment("WRT_SKIP_ACE=1"); - wrapper.run(); - - RUNNER_ASSERT(file.empty()); -} - diff --git a/tests/smack_tests/smack_tests.cpp b/tests/smack_tests/smack_tests.cpp deleted file mode 100644 index 183a18d..0000000 --- a/tests/smack_tests/smack_tests.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file smack_tests.cpp - * @author Bartlomiej Grzelewski - * @brief This file is the implementation file of main - */ -#include - -#include -#include - -#include -#include -#include - -#include - -using namespace LoopControl; - -void init_cb (WrtErrStatus status, void* data) -{ - (void) status; - (void) data; - LogInfo("Init Succesfull"); - finish_wait_for_wrt_init(); -} - -int main (int argc, char *argv[]) -{ - init_loop(argc, argv); - LogInfo("Initializing WRT"); - wrt_init(NULL, &init_cb); - - wait_for_wrt_init(); - LogInfo("Starting tests"); - - LanguageTagsList list; - list.push_back(L"en_US"); - LocalizationUtils::SetSystemLanguageTags(list); - - int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); - - wrt_shutdown(); - quit_loop(); - return status; -} - diff --git a/tests/smack_tests/test-cases/CMakeLists.txt b/tests/smack_tests/test-cases/CMakeLists.txt deleted file mode 100644 index e683134..0000000 --- a/tests/smack_tests/test-cases/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/smack_tests/test-cases/smack-test.xml - DESTINATION /usr/etc/ace - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE - ) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/smack_tests/test-cases/smack-test.xml - ${PROJECT_SOURCE_DIR}/tests/smack_tests/test-cases/smack01.wgt - ${PROJECT_SOURCE_DIR}/tests/smack_tests/test-cases/smack02.wgt - DESTINATION /opt/apps/widget/user/smack - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE - ) - diff --git a/tests/smack_tests/test-cases/smack-test.xml b/tests/smack_tests/test-cases/smack-test.xml deleted file mode 100644 index 05495e0..0000000 --- a/tests/smack_tests/test-cases/smack-test.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - filesystem - - - - - - - - - - - - - - - filesystem - - - - - - - - filesystem - - - - - - diff --git a/tests/smack_tests/test-cases/smack01.wgt b/tests/smack_tests/test-cases/smack01.wgt deleted file mode 100644 index 6303552c16ff6048283a5e41a97bba6b21e1ea1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17760 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 diff --git a/tests/smack_tests/test-cases/smack02.wgt b/tests/smack_tests/test-cases/smack02.wgt deleted file mode 100644 index 8ecceb92322acbfed966bb4dd77c5953bcec5135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17759 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 - * @brief Test tools. - */ - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - - -namespace { // anonymous -// we cannot uninstall widget by his name -// -// this functions and dependency from wrt_api should be removed as soon as -// wrt-installer supports uninstall by name - -template -DPL::OptionalInt findWidgetHandleForPredicate(const Predicate &predicate) -{ - int count; - int *handles; - - if (wrt_has_succeded(wrt_get_widget_list(&count, &handles))) { - for (int i = 0; i < count; ++i) { - wrt_widget_info *info; - - // Get widget infor for handle - if (wrt_has_succeded(wrt_get_widget_info(handles[i], &info))) { - if (predicate(info)) { - // Free widget name - wrt_free_widget_info(info); - - // Done - return DPL::OptionalInt(handles[i]); - } - - // Free widget info - wrt_free_widget_info(info); - } else { - LogWarning("ReturnStatus::Faileded to get widget name"); - } - } - - // Free list - wrt_free_widget_list(handles); - } else { - LogWarning("ReturnStatus::Faileded to get widget handle list"); - } - - return DPL::OptionalInt::Null; -} - -struct WidgetNamePredicate -{ - private: - std::string m_name; - - public: - WidgetNamePredicate(const std::string &name) : m_name(name) {} - - bool operator()(wrt_widget_info *info) const - { - return info->name && m_name == info->name; - } -}; - -DPL::OptionalInt findWidgetHandleForName(const std::string &widgetName) -{ - return findWidgetHandleForPredicate(WidgetNamePredicate(widgetName)); -} -} // anonymous namespace - -class PolicyChanger : public DPL::Event::EventListener -{ - public: - PolicyChanger() - { - DPL::Event::EventDeliverySystem::AddListener(this); - } - - ~PolicyChanger() - { - DPL::Event::EventDeliverySystem::RemoveListener< - AceUpdateResponseEvent>(this); - } - - void OnEventReceived(const AceUpdateResponseEvent& event) - { - if (0 != event.GetArg0()) { - LogError("Policy change failed"); - } - Assert(0 == event.GetArg0() && "Policy change failed"); - LoopControl::finish_wait_for_wrt_init(); - } - - void updatePolicy(const std::string& path) - { - AceUpdateRequestEvent event(path); - DPL::Event::EventDeliverySystem::Publish(event); - LoopControl::wait_for_wrt_init(); - } -}; - - -class ShellWrapper { -public: - ShellWrapper(const std::string &path, const std::string &name) - : m_installed(false) - , m_widgetPath(path) - , m_widgetName(name) - {} - - int install() { - std::string temp = "wrt-installer -i "; - temp += m_widgetPath; - LogDebug("Command: " << temp); - int command = system(temp.c_str()); - LogDebug("Command result: " << command); - m_installed = (command != -1); - return command; - } - - void setEnvironment(const std::string &env) { - m_env = env; - } - - int run() { - std::string temp; - temp += m_env; - temp += " wrt-client -ln "; - temp += m_widgetName; - - LogDebug("Command: " << temp); - int command = system(temp.c_str()); - LogDebug("Command result: " << command); - return command; - } - - ~ShellWrapper() { - if (!m_installed) { - LogDebug("Widget was not installed!"); - return; - } - // we are directly reading from database :/ - DPL::OptionalInt handle = findWidgetHandleForName(m_widgetName); - if (!handle) { - LogError("Widget \"" << m_widgetName << "\" not found."); - return; - } - std::stringstream temp; - temp << "wrt-installer -u "; - temp << *handle; - LogDebug("Command:" << temp.str()); - int command = system(temp.str().c_str()); - LogDebug("Command result: " << command); - } - -private: - bool m_installed; - std::string m_widgetPath; - std::string m_widgetName; - std::string m_env; -}; - -class FileWrapper { -public: - FileWrapper(const std::string &path) - : m_filePath(path) - , m_created(false) - {} - - bool create() { - int result = open(m_filePath.c_str(), O_TRUNC | O_CREAT | O_RDWR); - if (result != -1) { - m_created = true; - close(result); - } - return result != -1; - } - - bool expectContent(const std::vector &buff){ - std::fstream file; - file.open(m_filePath, std::ios::in | std::ios::out | std::ios::binary); - if (!file.good()) { - file.close(); - LogError("Error opening file: " << m_filePath); - return false; - } - file.seekg(0, std::ios::end); - size_t length = file.tellg(); - file.seekg(0, std::ios::beg); - - if (length != buff.size()) { - file.close(); - LogError("Wrong size!"); - return false; - } - - std::vector data; - data.resize(length); - - file.read(&data[0], length); - file.close(); - - std::string one(&buff[0], length); - std::string two(&data[0], length); - - if (data == buff) - return true; - - return false; - } - - bool empty() { - std::fstream file; - file.open(m_filePath, std::ios::in | std::ios::out); - if (!file.good()) { - file.close(); - LogError("Error opening file: " << m_filePath); - return false; - } - file.seekg(0, std::ios::end); - size_t length = file.tellg(); - file.close(); - LogDebug("File size: " << length); - return length == 0; - } - - ~FileWrapper() { - if (!m_created) { - return; - } - if (0 != remove(m_filePath.c_str())) { - LogDebug("Error removing file"); - } else { - LogDebug("File removed."); - } - } - -private: - std::string m_filePath; - bool m_created; -}; - diff --git a/tests/tests_common_lib/CMakeLists.txt b/tests/tests_common_lib/CMakeLists.txt deleted file mode 100644 index 7ee8c25..0000000 --- a/tests/tests_common_lib/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Wrzosek (l.wrzosek@samsung.com) -# @version 1.0 -# - -SET(TESTS_COMMON_LIB_INCLUDES - ${PROJECT_SOURCE_DIR}/src/common - ) - -ADD_SUBDIRECTORY(efl) diff --git a/tests/tests_common_lib/efl/CMakeLists.txt b/tests/tests_common_lib/efl/CMakeLists.txt deleted file mode 100644 index f1e393b..0000000 --- a/tests/tests_common_lib/efl/CMakeLists.txt +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Wrzosek (l.wrzosek@samsung.com) -# @version 1.0 -# - -PKG_CHECK_MODULES(COMMON_LIB_PKGS - libxml-2.0 - openssl - dbus-1 - libpcrecpp - dpl-efl - glib-2.0 - gthread-2.0 - ewebkit - edje - ecore - ecore-x - ecore-imf - ecore-ipc - ecore-evas - ecore-file - ecore-input - evas - eina - elementary - elm-webview - vconf - cert-svc - libsoup-2.4 - ui-gadget - aul - libidn - xmlsec1 - secure-storage - libiri - dpl-utils-efl - REQUIRED - ) - -INCLUDE_DIRECTORIES( - ${TESTS_COMMON_LIB_INCLUDES} - ${COMMON_LIB_PKGS_INCLUDE_DIRS} - ) -LINK_DIRECTORIES(${COMMON_LIB_PKGS_LIBRARY_DIRS}) - -# Build shared library -ADD_LIBRARY(${TARGET_TESTS_COMMON_LIB} SHARED ${TESTS_COMMON_LIB_SRC}) - -SET_TARGET_PROPERTIES(${TARGET_TESTS_COMMON_LIB} PROPERTIES - SOVERSION ${PROJECT_VERSION}) - -TARGET_LINK_LIBRARIES(${TARGET_TESTS_COMMON_LIB} - ${TARGET_ACE_DAO_RW_LIB} - ${TARGET_WRT_DAO_RW_LIB} - -Wl,-whole-archive ${TARGET_WRT_ENGINE_STATIC} -Wl,-no-whole-archive - ) - -TARGET_LINK_LIBRARIES(${TARGET_TESTS_COMMON_LIB} - LINK_INTERFACE_LIBRARIES ${COMMON_LIB_PKGS_LIBRARIES} - ${TARGET_VCORE_LIB} - ) - - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_TESTS_COMMON_LIB} PROPERTIES - LINK_FLAGS "--export-dynamic -Wl,--hash-style=both -Wl,--version-script=${PROJECT_SOURCE_DIR}/wrt-engine-test.map") - -# Install libraries -INSTALL(TARGETS ${TARGET_TESTS_COMMON_LIB} - DESTINATION lib - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) diff --git a/tests/vcore_tests/CMakeLists.txt b/tests/vcore_tests/CMakeLists.txt deleted file mode 100644 index 5262768..0000000 --- a/tests/vcore_tests/CMakeLists.txt +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) -# @author Pawel Sikorski (p.sikorski@samsung.com) -# @author Bartlomiej Grzelewski (b.grzelewski@samsung.com) -# @version 1.0 -# @brief -# -SET(TARGET_SIG_TEST "wrt-tests-vcore") - -# Set DPL tests sources -SET(SIG_TESTS_SOURCES - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/vcore_tests.cpp - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/TestCases.cpp - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/TestEnv.cpp - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/TestBase.cpp - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/TestCRL.cpp - ${PROJECT_SOURCE_DIR}/tests/w3c_tests/W3CTestBase.cpp - ) - -WRT_TEST_BUILD(${TARGET_SIG_TEST} ${SIG_TESTS_SOURCES}) - -ADD_CUSTOM_COMMAND(TARGET ${TARGET_SIG_TEST} POST_BUILD - COMMAND ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/create_certs.sh - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/ - COMMENT "Generate certificate chains" - ) - -WRT_TEST_INSTALL(${TARGET_SIG_TEST}) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widget/author-signature.xml - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widget/signature1.xml - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widget/signature22.xml - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widget/config.xml - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widget/index.html - DESTINATION - /opt/apps/widget/tests/vcore_widget_uncompressed - ) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/blankWidget.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/fingerprint_test.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/access_info.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/recognized.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/recognized1.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/unrecognized.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/save_cert.wgt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/widgets/not_allowed.wgt - DESTINATION - /opt/apps/widget/tests/vcore_widgets - ) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/ocsp_level0deprecated.crt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/ocsp_level1.crt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/ocsp_level2.crt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/ocsp_rootca.crt - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/operator.root.cert.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/root_cacert.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/test-cases/keys/CAbundle.crt - DESTINATION - /opt/apps/widget/tests/vcore_keys - ) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/demoCA/cacert.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/1second_level.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/1third_level.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/2second_level.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/2third_level.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/3second_level.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/3third_level.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/cacrl1.pem - ${PROJECT_SOURCE_DIR}/tests/vcore_tests/certificate-generator/cacrl2.pem - DESTINATION - /opt/apps/widget/tests/vcore_certs/ -) - diff --git a/tests/vcore_tests/TestBase.cpp b/tests/vcore_tests/TestBase.cpp deleted file mode 100644 index e003c8f..0000000 --- a/tests/vcore_tests/TestBase.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "TestBase.h" - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -using namespace LoopControl; - -void *SigTestBase::m_win = 0; - -void SigTestBase::startWidgetCallback(void *, - int /* widget_handler */, - WrtErrStatus status, - const char* /* errorMsg */, - void* data) { - LogDebug("Run status callback. Status: " << status); - wrt_end_loop(); - Assert(data); - SigTestBase* self = static_cast(data); - self->m_status = status; -} - -void SigTestBase::stopWidgetCallback(int /* widget_handler */, - WrtErrStatus /* status */, - void * /* data */) -{ - LogDebug("Stop widget callback"); - wrt_end_loop(); -} - -void SigTestBase::runWidget() -{ - if (!m_win) { m_win = abstract_window(); } - - wrt_launch_widget(widgetHandle, m_win, NULL, this, startWidgetCallback); - wrt_start_loop(); -} - -void SigTestBase::stopWidget() -{ - wrt_kill_widget(widgetHandle, this, stopWidgetCallback); - wrt_start_loop(); -} - -bool SigTestBase::isFingerprint(const std::string &fingerprint, - WrtDB::WidgetCertificateData::Owner owner, - WrtDB::WidgetCertificateData::Type type) const -{ - std::list flist = dao->getKeyFingerprints(owner, type); - - FOREACH(it, flist) { - LogError("Matching " << *it << " with " << fingerprint); - if (*it == fingerprint) { - return true; - } - } - return false; -} - -bool SigTestBase::isCommonName(const std::string &commonName, - WrtDB::WidgetCertificateData::Owner owner, - WrtDB::WidgetCertificateData::Type type) const -{ - std::list cnlist = dao->getKeyCommonNameList(owner, type); - - FOREACH(it, cnlist){ - if (*it == commonName) { - return true; - } - } - return false; -} - -void SigTestBase::checkIsRecognized(bool expectedResult) const -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(expectedResult == dao->isRecognized(), - "Recognized status doesn't match one in db"); - LogInfo("Recognized status matches one in db"); -} - -void SigTestBase::checkIsDistributorSigned(bool expectedResult) const -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(expectedResult == dao->isDistributorSigned(), - "Trusted status doesn't match one in db"); - LogInfo("Trusted status matches one in db"); -} - -void SigTestBase::checkInvalidCertificate() const -{ - RUNNER_ASSERT_MSG( - Jobs::WidgetInstall::Exceptions::ErrorInvalidPackage == error, - "Install status returned: " << MsgFromError(error)); -} - - -void SigTestBase::checkPairCertificateCommonName(const std::string &son, - const std::string &parent) -const -{ - using namespace ValidationCore; - DPL::Optional optSon = DPL::FromUTF8String(son); - DPL::Optional optParent = DPL::FromUTF8String(parent); - - RUNNER_ASSERT(dao); - CertificateCollectionList list = model->OCSPCertificateChainList.Get(); - RUNNER_ASSERT_MSG(!list.empty(), "Wrong list size"); - CertificateCollection chain = list.front(); - - LogError("Size: " << chain.size()); - - CertificateList::const_iterator it = chain.begin(); - - RUNNER_ASSERT_MSG(optSon == (*it)->getCommonName(), "CommonName mismatch"); - ++it; - RUNNER_ASSERT_MSG(optParent == (*it)->getCommonName(), - "CommonName mismatch"); -} - diff --git a/tests/vcore_tests/TestBase.h b/tests/vcore_tests/TestBase.h deleted file mode 100644 index f7682cf..0000000 --- a/tests/vcore_tests/TestBase.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _TEST_BASE_H -#define _TEST_BASE_H -#include - -#include - -#include -#include -#include -#include - -#include "wrt_api.h" - -#include "../w3c_tests/W3CTestBase.h" - -class SigTestBase : public W3CTestBase -{ - private: - static void startWidgetCallback(void *This, - WidgetHandle widgetHandle, - WrtErrStatus status, - const char *errorMsg, - void *data); - static void stopWidgetCallback(int widgetHandle, - WrtErrStatus status, - void *data); - WrtErrStatus m_status; - - protected: - static void *m_win; - - public: - SigTestBase (const std::string path) : - W3CTestBase(std::string("")), m_status(WRT_SUCCESS) - { - widgetPath = path; - } - - void runWidget(); - void stopWidget(); - - std::string getSession() const; - - bool isFingerprint(const std::string &fingerprint, - WrtDB::WidgetCertificateData::Owner owner, - WrtDB::WidgetCertificateData::Type type) const; - - bool isCommonName(const std::string &commonName, - WrtDB::WidgetCertificateData::Owner owner, - WrtDB::WidgetCertificateData::Type type) const; - - void checkIsRecognized(bool expectedResult) const; - void checkIsDistributorSigned(bool expectedResult) const; - void checkInvalidCertificate() const; - void checkPairCertificateCommonName(const std::string &son, - const std::string &parent) const; - - WrtErrStatus getStatus() const { return m_status; } -}; - -#endif diff --git a/tests/vcore_tests/TestCases.cpp b/tests/vcore_tests/TestCases.cpp deleted file mode 100644 index ccbb4be..0000000 --- a/tests/vcore_tests/TestCases.cpp +++ /dev/null @@ -1,485 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "TestEnv.h" -#include -#include "TestBase.h" -#include -#include -#include -#include -#include -#include "TestCRL.h" -#include "../detail/include/loop_control.h" -#include "../../src/access-control/engine/AceUpdateEventMessages.h" -#include - -using namespace WrtDB; - -#define CHECK_FINGERPRINT(widget,finger,owner,type) \ - RUNNER_ASSERT(true == \ - (widget).isFingerprint((finger),(owner),(type))); - -#define CHECK_FINGERPRINT_FAIL(widget,finger,owner,type) \ - RUNNER_ASSERT(false == \ - (widget).isFingerprint((finger),(owner),(type))); - -#define CHECK_COMMONNAME(widget,finger,owner,type) \ - RUNNER_ASSERT(true == \ - (widget).isCommonName((finger),(owner),(type))); - -namespace { - -const std::string widget_path = - "/opt/apps/widget/tests/vcore_widget_uncompressed/"; -const std::string keys_path = "/opt/apps/widget/tests/vcore_keys/"; -const std::string widget_store_path = "/opt/apps/widget/tests/vcore_widgets/"; -const std::string cert_store_path = "/opt/apps/widget/tests/vcore_certs/"; -const std::string crl_URI = "http://localhost/my.crl"; - -const std::string anka_ec_key_type = "urn:oid:1.2.840.10045.3.1.7"; -const std::string anka_ec_public_key = - "BGi9RmTUjpqCpQjx6SSiKdfmtjQBFNSN7ghm6TuaH9r4x73WddeLxLioH3VEmFLC+QLiR"\ - "kPxDxL/6YmQdgfGrqk="; - -const std::string rsa_modulus = - "ocwjKEFaPxLNcPTz2PtT2Gyu5jzkWaPo4thjZo3rXuNbD4TzjY02UGnTxvflNeORLpSS1"\ - "PeYr/1E/Nhr7qQAzj9g0DwW7p8zQEdOUi3v76VykeB0pFJH+0Fxp6LVBX9Z+EvZk+dbOy"\ - "GJ4Njm9B6M09axXlV11Anj9B/HYUDfDX8="; -const std::string rsa_exponent = "AQAB"; - -const std::string magda_dsa_p = - "2BYIQj0ePUVxzrdBT41eCblraa9Dqag7QXFMCRM2PtyS22JPDKuV77tBc/jg0V3htHWdR"\ - "q9n6/kQDwrP7FIPoLATLIiC3oAYWj46Mr6d9k/tt/JZU6PvULmB2k1wrrmvKUi+U+I5Ro"\ - "qe8ui8lqR9pp9u2WCh2QmFfCohKNjN5qs="; -const std::string magda_dsa_q = "4p4JcDqz+S7CbWyd8txApZw0sik="; -const std::string magda_dsa_g = - "AQrLND1ZGFvzwBpPPXplmPh1ijPx1O2gQEvPvyjR88guWcGqQc0m7dTb6PEvbI/oZ0o91"\ - "k7VEkfthURnNR1WtOLT8dmAuKQfwTQLPwCwUM/QiuWSlCyKLTE4Ev8aOG7ZqWudsKm/td"\ - "n9pUNGtcod1wo1ZtP7PfEJ6rYZGQDOlz8="; - -const std::string googleCA = -"MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG" -"A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz" -"cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2" -"MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV" -"BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt" -"YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN" -"ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE" -"BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is" -"I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G" -"CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do" -"lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc" -"AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k"; - -const std::string google2nd = -"MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV" -"UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi" -"bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw" -"MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh" -"d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD" -"QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx" -"PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g" -"5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo" -"3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG" -"A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX" -"BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov" -"L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG" -"AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF" -"BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB" -"BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc" -"q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR" -"bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv"; - -const std::string google3rd = -"MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM" -"MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg" -"THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x" -"MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh" -"MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw" -"FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC" -"gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN" -"gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L" -"05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM" -"BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl" -"LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF" -"BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw" -"Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0" -"ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF" -"AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5" -"u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6" -"z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw=="; - -const std::string certVerisign = -"MIIG+DCCBeCgAwIBAgIQU9K++SSnJF6DygHkbKokdzANBgkqhkiG9w0BAQUFADCB" -"vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL" -"ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug" -"YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv" -"VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew" -"HhcNMTAwNTI2MDAwMDAwWhcNMTIwNTI1MjM1OTU5WjCCASkxEzARBgsrBgEEAYI3" -"PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxGzAZBgNVBA8TElYx" -"LjAsIENsYXVzZSA1LihiKTEQMA4GA1UEBRMHMjQ5Nzg4NjELMAkGA1UEBhMCVVMx" -"DjAMBgNVBBEUBTk0MDQzMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHFA1N" -"b3VudGFpbiBWaWV3MSIwIAYDVQQJFBk0ODcgRWFzdCBNaWRkbGVmaWVsZCBSb2Fk" -"MRcwFQYDVQQKFA5WZXJpU2lnbiwgSW5jLjEmMCQGA1UECxQdIFByb2R1Y3Rpb24g" -"U2VjdXJpdHkgU2VydmljZXMxGTAXBgNVBAMUEHd3dy52ZXJpc2lnbi5jb20wggEi" -"MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCj+PvvK+fZOXwno0yT/OTy2Zm9" -"ehnZjTtO/X2IWBEa3jG30C52uHFQI4NmXiQVNvJHkBaAj0ilVjvGdxXmkyyFsugt" -"IWOTZ8pSKdX1tmGFIon6Ko9+lBFkVkudA1ogAUbtTB8IcdeOlpK78T4SjdVMhY18" -"150YzSw6hRKlw52wBaDxtGZElvOth41K7TUcaDnQVzz5SBPW5MUhi7AWrdoSk17O" -"BozOzmB/jkYDVDnwLcbR89SLHEOle/idSYSDQUmab3y0JS8RyQV1+DB70mnFALnD" -"fLiL47nMQQCGxXgp5voQ2YmSXhevKmEJ9vvtC6C7yv2W6yomfS/weUEce9pvAgMB" -"AAGjggKCMIICfjCBiwYDVR0RBIGDMIGAghB3d3cudmVyaXNpZ24uY29tggx2ZXJp" -"c2lnbi5jb22CEHd3dy52ZXJpc2lnbi5uZXSCDHZlcmlzaWduLm5ldIIRd3d3LnZl" -"cmlzaWduLm1vYmmCDXZlcmlzaWduLm1vYmmCD3d3dy52ZXJpc2lnbi5ldYILdmVy" -"aXNpZ24uZXUwCQYDVR0TBAIwADAdBgNVHQ4EFgQU8oBwK/WBXCZDWi0dbuDgPyTK" -"iJIwCwYDVR0PBAQDAgWgMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9FVkludGwt" -"Y3JsLnZlcmlzaWduLmNvbS9FVkludGwyMDA2LmNybDBEBgNVHSAEPTA7MDkGC2CG" -"SAGG+EUBBxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNv" -"bS9ycGEwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUFBwMCBglghkgBhvhCBAEw" -"HwYDVR0jBBgwFoAUTkPIHXbvN1N6T/JYb5TzOOLVvd8wdgYIKwYBBQUHAQEEajBo" -"MCsGCCsGAQUFBzABhh9odHRwOi8vRVZJbnRsLW9jc3AudmVyaXNpZ24uY29tMDkG" -"CCsGAQUFBzAChi1odHRwOi8vRVZJbnRsLWFpYS52ZXJpc2lnbi5jb20vRVZJbnRs" -"MjAwNi5jZXIwbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJaW1hZ2UvZ2lmMCEw" -"HzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYkaHR0cDovL2xvZ28u" -"dmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQB9VZxB" -"wDMRGyhFWYkY5rwUVGuDJiGeas2xRJC0G4+riQ7IN7pz2a2BhktmZ5HbxXL4ZEY4" -"yMN68DEVErhtKiuL02ng27alhlngadKQzSL8pLdmQ+3jEwm9nva5C/7pbeqy+qGF" -"is4IWNYOc4HKNkABxXm5v0ouys8HPNkTLFLep0gLqRXW3gYN2XbKUWMs7z7hJpkY" -"GxP8YQSxi513O2dWVCXB8S6erIz9E/bcfdXoCPyQdn42y3IEoJvPvBS3S55fD4+Q" -"Q43GPhumSg9a6S3hnyw8DX5OiUGmqgQrtSeDRsNmWqtWizEQbe+fotZpEn/7zYTa" -"tk1ni/k5jDH/QeuG"; - -const std::string crlExampleCertificate = -"MIIFlDCCBHygAwIBAgIBADANBgkqhkiG9w0BAQUFADBDMRIwEAYKCZImiZPyLGQB" -"GRYCZXMxGDAWBgoJkiaJk/IsZAEZFghpcmlzZ3JpZDETMBEGA1UEAxMKSVJJU0dy" -"aWRDQTAeFw0wNTA2MjgwNTAyMjhaFw0xNTA2MjYwNTAyMjhaMEMxEjAQBgoJkiaJ" -"k/IsZAEZFgJlczEYMBYGCgmSJomT8ixkARkWCGlyaXNncmlkMRMwEQYDVQQDEwpJ" -"UklTR3JpZENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1CQiWlff" -"ajoMSTuismKqLQ+Mt33Tq4bBpCZvCBXhqan1R0ksILPtK1L7C8QWqPk6AZZpuNmY" -"cNVtJGc8ksgDWvX0EB3GKwZTZ8RrSRlSEe9Otq+Ur7S9uxM1JMmCr6zZTMFANzBS" -"4btnduV78C09IhFYG4OW8IPhNrbfPaeOR+PRPAa/qdSONAwTrM1sZkIvGpAkBWM6" -"Pn7TK9BAK6GLvwgii780fWj3Cwgmp8EDCTievBbWj+z8/apMEy9R0vyB2dWNNCnk" -"6q8VvrjgMsJt33O3BqOoBuZ8R/SS9OFWLFSU3s7cfrRaUSJk/Mx8OGFizRkcXSzX" -"0Nidcg7hX5i78wIDAQABo4ICkTCCAo0wDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E" -"FgQUnUJkLlupXvH/bMg8NtPxtkOYrRowawYDVR0jBGQwYoAUnUJkLlupXvH/bMg8" -"NtPxtkOYrRqhR6RFMEMxEjAQBgoJkiaJk/IsZAEZFgJlczEYMBYGCgmSJomT8ixk" -"ARkWCGlyaXNncmlkMRMwEQYDVQQDEwpJUklTR3JpZENBggEAMA4GA1UdDwEB/wQE" -"AwIBxjARBglghkgBhvhCAQEEBAMCAAcwOwYJYIZIAYb4QgENBC4WLElSSVNHcmlk" -"IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENlcnRpZmljYXRlMIGZBgNVHR8EgZEw" -"gY4wLqAsoCqGKGh0dHA6Ly93d3cuaXJpc2dyaWQuZXMvcGtpL2NybC9jYWNybC5w" -"ZW0wXKBaoFiGVmxkYXA6Ly9sZGFwLmlyaXNncmlkLmVzOjEzODAvY249SVJJU0dy" -"aWRDQSxkYz1pcmlzZ3JpZCxkYz1lcz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0" -"MDcGCWCGSAGG+EIBAwQqFihodHRwOi8vd3d3LmlyaXNncmlkLmVzL3BraS9jcmwv" -"Y2FjcmwucGVtME4GCWCGSAGG+EIBCARBFj9odHRwOi8vd3d3LmlyaXNncmlkLmVz" -"L3BraS9wb2xpY3kvMS4zLjYuMS40LjEuNzU0Ny4yLjIuNC4xLjEuMS8waQYDVR0g" -"BGIwYDBeBg0rBgEEAbp7AgIEAQEBME0wSwYIKwYBBQUHAgEWP2h0dHA6Ly93d3cu" -"aXJpc2dyaWQuZXMvcGtpL3BvbGljeS8xLjMuNi4xLjQuMS43NTQ3LjIuMi40LjEu" -"MS4xLzANBgkqhkiG9w0BAQUFAAOCAQEAaqRfyLER+P2QOZLLdz66m7FGsgtFsAEx" -"wiNrIChFWfyHVZG7Ph1fn/GDD5LMsrU23lx3NBN5/feHuut1XNYKNs8vtV07D70r" -"DKjUlPbmWV0B+/GDxe1FDGop/tKQfyHSUaBuauXChFU/2INu5lhBerNl7QxNJ1ws" -"cWGiT7R+L/2EjgzWgH1V/0zmIOMep6kY7MUs8rlyF0O5MNFs232cA1trl9kvhAGU" -"9p58Enf5DWMrh17SPH586yIJeiWZtPez9G54ftY+XIqfn0X0zso0dnoXNJQYS043" -"/5vSnoHdRx/EmN8yjeEavZtC48moN0iJ38eB44uKgCD77rZW5s1XqA=="; - -class TestCleanup -{ - public: - explicit TestCleanup(bool bCheckForFakeVerification = false) - { - if (bCheckForFakeVerification) { - bool bUnsetEnvVar = true; - - m_strEnvVar = "CHECK_ONLY_DOMAIN_INSTEAD_OF_VALIDATION"; - if (getenv(m_strEnvVar.c_str()) != NULL) { - bUnsetEnvVar = false; - } else { - setenv(m_strEnvVar.c_str(), "1", 0); - } - } - } - - ~TestCleanup() - { - if (!m_strRootCAPath.empty()) { - removeCertGivenByFilename(m_strRootCAPath.c_str()); - } - - if (!m_strEnvVar.empty()) { - unsetenv(m_strEnvVar.c_str()); - } - } - - void setRootCAPath(const std::string& strRootCAPath) - { - m_strRootCAPath = strRootCAPath; - } - - private: - std::string m_strRootCAPath; - std::string m_strEnvVar; -}; - -class PolicyChanger : public DPL::Event::EventListener -{ - public: - PolicyChanger() - { - DPL::Event::EventDeliverySystem::AddListener(this); - } - - ~PolicyChanger() - { - DPL::Event::EventDeliverySystem::RemoveListener(this); - } - - void OnEventReceived(const AceUpdateResponseEvent& event) - { - if (0 != event.GetArg0()) { - LogError("Policy change failed"); - } - Assert(0 == event.GetArg0() && "Policy change failed"); - LoopControl::finish_wait_for_wrt_init(); - } - - void updatePolicy(const std::string& path) - { - AceUpdateRequestEvent event(path); - DPL::Event::EventDeliverySystem::Publish(event); - LoopControl::wait_for_wrt_init(); - } -}; - -} // namespace anonymous - -using namespace ValidationCore; - -/////////////////////////////////////////////////// -////////////// INTEGRATION TESTS //////////////// -/////////////////////////////////////////////////// - -// TODO later maybe there will be another session mechanism? -//RUNNER_TEST(test47_session_test) -//{ -// SigTestBase test(widget_store_path + "blankWidget.wgt"); -// test.StartTest(); -// test.runWidget(); -// std::string session1 = test.getSession(); -// test.stopWidget(); -// test.runWidget(); -// std::string session2 = test.getSession(); -// test.stopWidget(); -// LogInfo("session1: " << session1 << " session2: " << session2); -// RUNNER_ASSERT_MSG(session1 != session2 , "Session didn't change."); -//} - -RUNNER_TEST(test48t01_fingerprint_test) -{ - SigTestBase test(widget_store_path + "fingerprint_test.wgt"); - - test.StartTest(); - test.CheckIsValid(); - - WidgetCertificateData data; - - LogInfo("Widget installed, checking fingerprints"); - - CHECK_FINGERPRINT( - test, - "md5 3D:E8:DF:C0:E9:12:8F:31:65:55:0E:B7:C5:EA:45:BA", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); - - CHECK_FINGERPRINT( - test, - "sha-1 FD:93:7C:D5:55:3D:1C:6E:F9:67:62:32:D7:DF:58:E5:87:67:6F:0A", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); - - CHECK_COMMONNAME( - test, - "Filip", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); - - CHECK_FINGERPRINT( - test, - "md5 30:FD:DD:C4:C7:45:F2:CB:2F:91:72:93:CB:2E:6C:77", - WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY); - - CHECK_FINGERPRINT( - test, - "sha-1 29:8B:99:8E:53:70:57:21:3F:DF:9B:93:0F:AA:8B:0D:43:C7:1D:11", - WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY); - - CHECK_COMMONNAME( - test, - "magda", - WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ENDENTITY); -} - -RUNNER_TEST(test48t02_fingerprint_root_test) -{ - SigTestBase test(widget_store_path + "fingerprint_test.wgt"); - - test.StartTest(); - test.CheckIsValid(); - - LogInfo("Widget installed, checking root fingerprints"); - - CHECK_FINGERPRINT( - test, - "md5 C5:56:C8:1C:D6:6B:F3:4A:36:2D:A9:01:A2:FD:2E:AD", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - CHECK_FINGERPRINT( - test, - "sha-1 C2:C4:B5:72:9A:CF:D9:72:C5:DE:C1:E1:30:FF:74:7F:7A:AF:27:12", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - CHECK_COMMONNAME( - test, - "Samsung", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - - CHECK_FINGERPRINT( - test, - "md5 C5:56:C8:1C:D6:6B:F3:4A:36:2D:A9:01:A2:FD:2E:AD", - WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT); - - CHECK_FINGERPRINT( - test, - "sha-1 C2:C4:B5:72:9A:CF:D9:72:C5:DE:C1:E1:30:FF:74:7F:7A:AF:27:12", - WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT); - - CHECK_COMMONNAME( - test, - "Samsung", - WidgetCertificateData::DISTRIBUTOR, - WidgetCertificateData::ROOT); -} - -//RUNNER_TEST(test49t01_domain_selfsigned_recognized) -//{ -// SigTestBase test(widget_store_path + "selfsignedrecognized.wgt"); -// test.StartTest(); -// test.CheckIsValid(); -// -// test.checkIsRecognized(false); -// test.checkIsDistributorSigned(true); -//} -// -// -//RUNNER_TEST(test49t02_domain_selfsigned_unrecognized) -//{ -// SigTestBase test(widget_store_path + "selfsignedunrecognized.wgt"); -// test.StartTest(); -// test.CheckIsValid(); -// -// test.checkIsRecognized(false); -// test.checkIsDistributorSigned(false); -//} - -RUNNER_TEST(test50t01_recognized_policy_data) -{ - SigTestBase test(widget_store_path + "recognized.wgt"); - test.StartTest(); - test.CheckIsValid(); - - test.checkIsRecognized(true); - - CHECK_FINGERPRINT( - test, - "sha-1 C2:C4:B5:72:9A:CF:D9:72:C5:DE:C1:E1:30:FF:74:7F:7A:AF:27:12", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ROOT); - CHECK_FINGERPRINT( - test, - "sha-1 F0:FC:68:2E:69:0F:49:74:12:0E:9C:B1:E7:E1:0A:78:3E:39:22:D4", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); -} - -RUNNER_TEST(test50t02_recognized_policy_data) -{ - SigTestBase test(widget_store_path + "recognized1.wgt"); - test.StartTest(); - test.CheckIsValid(); - - test.checkIsRecognized(true); - - CHECK_FINGERPRINT( - test, - "sha-1 70:08:98:16:78:B8:1C:54:77:0B:3F:D1:DC:D4:84:EB:6F:73:09:D4", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); -} - -RUNNER_TEST(test50t03_unrecognized_policy_data) -{ - SigTestBase test(widget_store_path + "unrecognized.wgt"); - test.StartTest(); - test.CheckIsValid(); - - test.checkIsRecognized(false); - - CHECK_FINGERPRINT_FAIL( - test, - "sha-1 70:08:98:16:78:B8:1C:54:77:0B:3F:D1:DC:D4:84:EB:6F:73:09:D4", - WidgetCertificateData::AUTHOR, - WidgetCertificateData::ENDENTITY); -} - -RUNNER_TEST(test90_security_check_during_launching) -{ - // setup policy - PolicyChanger changer; - changer.updatePolicy("/usr/etc/ace/UnrestrictedPolicy.xml"); - - // install widget - SigTestBase test(widget_store_path + "not_allowed.wgt"); - test.StartTest(); // install widget - - // change policy - changer.updatePolicy("/usr/etc/ace/demo.xml"); - - // launch widget - test.runWidget(); - - // make sure there's no error from ACE (ACE check is removed) - RUNNER_ASSERT(test.getStatus() != WRT_ERROR_ACCESS_DENIED); - - // make sure there's no other error - RUNNER_ASSERT(test.getStatus() == WRT_SUCCESS); -} diff --git a/tests/vcore_tests/test-cases/keys/CAbundle.crt b/tests/vcore_tests/test-cases/keys/CAbundle.crt deleted file mode 100644 index 4edaeda..0000000 --- a/tests/vcore_tests/test-cases/keys/CAbundle.crt +++ /dev/null @@ -1,3677 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEuDCCA6CgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBtDELMAkGA1UEBhMCQlIx -EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h -bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxETAPBgNVBAcTCEJy -YXNpbGlhMQswCQYDVQQIEwJERjExMC8GA1UEAxMoQXV0b3JpZGFkZSBDZXJ0aWZp -Y2Fkb3JhIFJhaXogQnJhc2lsZWlyYTAeFw0wMTExMzAxMjU4MDBaFw0xMTExMzAy -MzU5MDBaMIG0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE9MDsG -A1UECxM0SW5zdGl0dXRvIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3Jt -YWNhbyAtIElUSTERMA8GA1UEBxMIQnJhc2lsaWExCzAJBgNVBAgTAkRGMTEwLwYD -VQQDEyhBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwPMudwX/hvm+Uh2b/lQAcHVA -isamaLkWdkwP9/S/tOKIgRrL6Oy+ZIGlOUdd6uYtk9Ma/3pUpgcfNAj0vYm5gsyj -Qo9emsc+x6m4VWwk9iqMZSCK5EQkAq/Ut4n7KuLE1+gdftwdIgxfUsPt4CyNrY50 -QV57KM2UT8x5rrmzEjr7TICGpSUAl2gVqe6xaii+bmYR1QrmWaBSAG59LrkrjrYt -bRhFboUDe1DK+6T8s5L6k8c8okpbHpa9veMztDVC9sPJ60MWXh6anVKo1UcLcbUR -yEeNvZneVRKAAU6ouwdjDvwlsaKydFKwed0ToQ47bmUKgcm+wV3eTRk36UOnTwID -AQABo4HSMIHPME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcCARYsaHR0 -cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYwPQYDVR0f -BDYwNDAyoDCgLoYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFj -cmFpei5jcmwwHQYDVR0OBBYEFIr68VeEERM1kEL6V0lUaQ2kxPA3MA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAZA5c1 -U/hgIh6OcgLAfiJgFWpvmDZWqlV30/bHFpj8iBobJSm5uDpt7TirYh1Uxe3fQaGl -YjJe+9zd+izPRbBqXPVQA34EXcwk4qpWuf1hHriWfdrx8AcqSqr6CuQFwSr75Fos -SzlwDADa70mT7wZjAmQhnZx2xJ6wfWlT9VQfS//JYeIc7Fue2JNLd00UOSMMaiK/ -t79enKNHEA2fupH3vEigf5Eh4bVAN5VohrTm6MY53x7XQZZr1ME7a55lFEnSeT0u -mlOAjR2mAbvSM5X5oSZNrmetdzyTj2flCM8CC7MLab0kkdngRIlUBGHF1/S5nmPb -K+9A46sd33oqK8n8 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 -IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB -IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA -Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO -BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi -MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ -ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ -8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 -zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y -fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 -w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc -G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k -epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q -laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ -QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU -fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 -YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w -ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY -gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe -MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 -IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy -dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw -czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 -dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl -aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC -AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg -b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB -ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc -nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg -18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c -gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl -Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY -sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T -SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF -CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum -GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk -zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW -omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIGCDCCA/CgAwIBAgIBATANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 -IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB -IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA -Y2FjZXJ0Lm9yZzAeFw0wNTEwMTQwNzM2NTVaFw0zMzAzMjgwNzM2NTVaMFQxFDAS -BgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5v -cmcxHDAaBgNVBAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQCrSTURSHzSJn5TlM9Dqd0o10Iqi/OHeBlYfA+e2ol9 -4fvrcpANdKGWZKufoCSZc9riVXbHF3v1BKxGuMO+f2SNEGwk82GcwPKQ+lHm9WkB -Y8MPVuJKQs/iRIwlKKjFeQl9RrmK8+nzNCkIReQcn8uUBByBqBSzmGXEQ+xOgo0J -0b2qW42S0OzekMV/CsLj6+YxWl50PpczWejDAz1gM7/30W9HxM3uYoNSbi4ImqTZ -FRiRpoWSR7CuSOtttyHshRpocjWr//AQXcD0lKdq1TuSfkyQBX6TwSyLpI5idBVx -bgtxA+qvFTia1NIFcm+M+SvrWnIl+TlG43IbPgTDZCciECqKT1inA62+tC4T7V2q -SNfVfdQqe1z6RgRQ5MwOQluM7dvyz/yWk+DbETZUYjQ4jwxgmzuXVjit89Jbi6Bb -6k6WuHzX1aCGcEDTkSm3ojyt9Yy7zxqSiuQ0e8DYbF/pCsLDpyCaWt8sXVJcukfV -m+8kKHA4IC/VfynAskEDaJLM4JzMl0tF7zoQCqtwOpiVcK01seqFK6QcgCExqa5g -eoAmSAC4AcCTY1UikTxW56/bOiXzjzFU6iaLgVn5odFTEcV7nQP2dBHgbbEsPyyG -kZlxmqZ3izRg0RS0LKydr4wQ05/EavhvE/xzWfdmQnQeiuP43NJvmJzLR5iVQAX7 -6QIDAQABo4G/MIG8MA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEEUTBPMCMG -CCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEFBQcwAoYc -aHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBBMD8GCCsGAQQB -gZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5w -aHA/aWQ9MTAwDQYJKoZIhvcNAQEEBQADggIBAH8IiKHaGlBJ2on7oQhy84r3HsQ6 -tHlbIDCxRd7CXdNlafHCXVRUPIVfuXtCkcKZ/RtRm6tGpaEQU55tiKxzbiwzpvD0 -nuB1wT6IRanhZkP+VlrRekF490DaSjrxC1uluxYG5sLnk7mFTZdPsR44Q4Dvmw2M -77inYACHV30eRBzLI++bPJmdr7UpHEV5FpZNJ23xHGzDwlVks7wU4vOkHx4y/CcV -Bc/dLq4+gmF78CEQGPZE6lM5+dzQmiDgxrvgu1pPxJnIB721vaLbLmINQjRBvP+L -ivVRIqqIMADisNS8vmW61QNXeZvo3MhN+FDtkaVSKKKs+zZYPumUK5FQhxvWXtaM -zPcPEAxSTtAWYeXlCmy/F8dyRlecmPVsYGN6b165Ti/Iubm7aoW8mA3t+T6XhDSU -rgCvoeXnkm5OvfPi2RSLXNLrAWygF6UtEOucekq9ve7O/e0iQKtwOIj1CodqwqsF -YMlIBdpTwd5Ed2qz8zw87YC8pjhKKSRf/lk7myV6VmMAZLldpGJ9VzZPrYPvH5JT -oI53V93lYRE9IwCQTDz6o2CTBKOvNfYOao9PSmCnhQVsRqGP9Md246FZV/dxssRu -FFxtbUFm3xuTsdQAw+7Lzzw9IYCpX2Nl/N3gX6T0K/CFcUHUZyX7GrGXrtaZghNB -0m6lG5kngOcLqagA ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIESzCCAzOgAwIBAgIJAJigUTEEXRQpMA0GCSqGSIb3DQEBBQUAMHYxCzAJBgNV -BAYTAkRFMQ8wDQYDVQQIEwZIZXNzZW4xDjAMBgNVBAcTBUZ1bGRhMRAwDgYDVQQK -EwdEZWJjb25mMRMwEQYDVQQDEwpEZWJjb25mIENBMR8wHQYJKoZIhvcNAQkBFhBq -b2VyZ0BkZWJpYW4ub3JnMB4XDTA1MTEwNTE3NTUxNFoXDTE1MTEwMzE3NTUxNFow -djELMAkGA1UEBhMCREUxDzANBgNVBAgTBkhlc3NlbjEOMAwGA1UEBxMFRnVsZGEx -EDAOBgNVBAoTB0RlYmNvbmYxEzARBgNVBAMTCkRlYmNvbmYgQ0ExHzAdBgkqhkiG -9w0BCQEWEGpvZXJnQGRlYmlhbi5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCvbOo0SrIwI5IMlsshH8WF3dHB9r9JlSKhMPaybawa1EyvZspMQ3wa -F5qxNf3Sj+NElEmjseEqvCZiIIzqwerHu0Qw62cDYCdCd2+Wb5m0bPYB5CGHiyU1 -eNP0je42O0YeXG2BvUujN8AviocVo39X2YwNQ0ryy4OaqYgm2pRlbtT2ESbF+SfV -Y2iqQj/f8ymF+lHo/pz8tbAqxWcqaSiHFAVQJrdqtFhtoodoNiE3q76zJoUkZTXB -k60Yc3MJSnatZCpnsSBr/D7zpntl0THrUjjtdRWCjQVhqfhM1yZJV+ApbLdheFh0 -ZWlSxdnp25p0q0XYw/7G92ELyFDfBUUNAgMBAAGjgdswgdgwHQYDVR0OBBYEFMuV -dFNb4mCWUFbcP5LOtxFLrEVTMIGoBgNVHSMEgaAwgZ2AFMuVdFNb4mCWUFbcP5LO -txFLrEVToXqkeDB2MQswCQYDVQQGEwJERTEPMA0GA1UECBMGSGVzc2VuMQ4wDAYD -VQQHEwVGdWxkYTEQMA4GA1UEChMHRGViY29uZjETMBEGA1UEAxMKRGViY29uZiBD -QTEfMB0GCSqGSIb3DQEJARYQam9lcmdAZGViaWFuLm9yZ4IJAJigUTEEXRQpMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAGZXxHg4mnkvilRIM1EQfGdY -S5b/WcyF2MYSTeTvK4aIB6VHwpZoZCnDGj2m2D3CkHT0upAD9o0zM1tdsfncLzV+ -mDT/jNmBtYo4QXx5vEPwvEIcgrWjwk7SyaEUhZjtolTkHB7ACl0oD0r71St4iEPR -qTUCEXk2E47bg1Fz58wNt/yo2+4iqiRjg1XCH4evkQuhpW+dTZnDyFNqwSYZapOE -TBA+9zBb6xD1KM2DdY7r4GiyYItN0BKLfuWbh9LXGbl1C+f4P11g+m2MPiavIeCe -1iazG5pcS3KoTLACsYlEX24TINtg4kcuS81XdllcnsV3Kdts0nIqPj6uhTTZD0k= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDvjCCA3ygAwIBAgIFJQaThoEwCwYHKoZIzjgEAwUAMIGFMQswCQYDVQQGEwJG -UjEPMA0GA1UECBMGRnJhbmNlMQ4wDAYDVQQHEwVQYXJpczEQMA4GA1UEChMHUE0v -U0dETjEOMAwGA1UECxMFRENTU0kxDjAMBgNVBAMTBUlHQy9BMSMwIQYJKoZIhvcN -AQkBFhRpZ2NhQHNnZG4ucG0uZ291di5mcjAeFw0wMjEyMTMxNDM5MTVaFw0yMDEw -MTcxNDM5MTRaMIGFMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGRnJhbmNlMQ4wDAYD -VQQHEwVQYXJpczEQMA4GA1UEChMHUE0vU0dETjEOMAwGA1UECxMFRENTU0kxDjAM -BgNVBAMTBUlHQy9BMSMwIQYJKoZIhvcNAQkBFhRpZ2NhQHNnZG4ucG0uZ291di5m -cjCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCFkMImdk9zDzJfTO4XPdAAmLbAdWws -ZiEMZh19RyTo3CyhFqO77OIXrwY6vc1pcc3MgWJ0dgQpAgrDMtmFFxpUu4gmjVsx -8GpxQC+4VOgLY8Cvmcd/UDzYg07EIRto8BwCpPJ/JfUxwzV2V3N713aAX+cEoKZ/ -s+kgxC6nZCA7oQIVALME/JYjkdW2uKIGngsEPbXAjdhDAoGADh/uqWJx94UBm31c -9d8ZTBfRGRnmSSRVFDgPWgA69JD4BR5da8tKz+1HjfMhDXljbMH86ixpD5Ka1Z0V -pRYUPbyAoB37tsmXMJY7kjyD19d5VdaZboUjVvhH6UJy5lpNNNGSvFl4fqkxyvw+ -pq1QV0N5RcvK120hlXdfHUX+YKYDgYQAAoGAQGr7IuKJcYIvJRMjxwl43KxXY2xC -aoCiM/bv117MfI94aNf1UusGhp7CbYAY9CXuL60P0oPMAajbaTE5Z34AuITeHq3Y -CNMHwxalip8BHqSSGmGiQsXeK7T+r1rPXsccZ1c5ikGDZ4xn5gUaCyy2rCmb+fOJ -6VAfCbAbAjmNKwejdzB1MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgFGMBUG -A1UdIAQOMAwwCgYIKoF6AXkBAQEwHQYDVR0OBBYEFPkeNRcUf8idzpKblYbLNxs0 -MQhSMB8GA1UdIwQYMBaAFPkeNRcUf8idzpKblYbLNxs0MQhSMAsGByqGSM44BAMF -AAMvADAsAhRVh+CJA5eVyEYU5AO9Tm7GxX0rmQIUBCqsU5u1WxoZ5lEXicDX5/Ob -sRQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT -AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ -TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG -9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw -MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM -BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO -MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2 -LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI -s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2 -xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4 -u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b -F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx -Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd -PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV -HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx -NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF -AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ -L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY -YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg -Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a -NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R -0982gaEbeC9xs/FZTEYYKKuF0mBWWg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtTCCAp2gAwIBAgIRANAeQJAAAEZSAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAw -gYkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJEQzETMBEGA1UEBxMKV2FzaGluZ3Rv -bjEXMBUGA1UEChMOQUJBLkVDT00sIElOQy4xGTAXBgNVBAMTEEFCQS5FQ09NIFJv -b3QgQ0ExJDAiBgkqhkiG9w0BCQEWFWFkbWluQGRpZ3NpZ3RydXN0LmNvbTAeFw05 -OTA3MTIxNzMzNTNaFw0wOTA3MDkxNzMzNTNaMIGJMQswCQYDVQQGEwJVUzELMAkG -A1UECBMCREMxEzARBgNVBAcTCldhc2hpbmd0b24xFzAVBgNVBAoTDkFCQS5FQ09N -LCBJTkMuMRkwFwYDVQQDExBBQkEuRUNPTSBSb290IENBMSQwIgYJKoZIhvcNAQkB -FhVhZG1pbkBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCx0xHgeVVDBwhMywVCAOINg0Y95JO6tgbTDVm9PsHOQ2cBiiGo77zM -0KLMsFWWU4RmBQDaREmA2FQKpSWGlO1jVv9wbKOhGdJ4vmgqRF4vz8wYXke8OrFG -PR7wuSw0X4x8TAgpnUBV6zx9g9618PeKgw6hTLQ6pbNfWiKX7BmbwQVo/ea3qZGU -LOR4SCQaJRk665WcOQqKz0Ky8BzVX/tr7WhWezkscjiw7pOp03t3POtxA6k4ShZs -iSrK2jMTecJVjO2cu/LLWxD4LmE1xilMKtAqY9FlWbT4zfn0AIS2V0KFnTKo+SpU -+/94Qby9cSj0u5C8/5Y0BONFnqFGKECBAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYB -Af8CAQgwDQYJKoZIhvcNAQEFBQADggEBAARvJYbk5pYntNlCwNDJALF/VD6Hsm0k -qS8Kfv2kRLD4VAe9G52dyntQJHsRW0mjpr8SdNWJt7cvmGQlFLdh6X9ggGvTZOir -vRrWUfrAtF13Gn9kCF55xgVM8XrdTX3O5kh7VNJhkoHWG9YA8A6eKHegTYjHInYZ -w8eeG6Z3ePhfm1bR8PIXrI6dWeYf/le22V7hXZ9F7GFoGUHhsiAm/lowdiT/QHI8 -eZ98IkirRs3bs4Ysj78FQdPB4xTjQRcm0HyncUwZ6EoPclgxfexgeqMiKL0ZJGA/ -O4dzwGvky663qyVDslUte6sGDnVdNOVdc22esnVApVnJTzFxiNmIf1Q= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMx -HTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNh -IE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyOTA2MDAwMFoXDTM3MTEyMDE1 -MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wgVGltZSBXYXJuZXIg -SW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMuQU9M -IFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U -0pPlLYnKhHw/EEMbjIt8hFj4JHxIzyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItI -TuLCxFlpMGK2MKKMCxGZYTVtfu/FsRkGIBKOQuHfD5YQUqjPnF+VFNivO3ULMSAf -RC+iYkGzuxgh28pxPIzstrkNn+9R7017EvILDOGsQI93f7DKeHEMXRZxcKLXwjqF -zQ6axOAAsNUl6twr5JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQIfHNlIAqh -BC4aMqiaILGcLCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEA -AaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jY -PXy+XxIwHwYDVR0jBBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/ -BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQCKIBilvrMvtKaEAEAwKfq0FHNMeUWn -9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u0FIy2VkyvNp5ctZ7CegCgTXT -Ct8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77BfWgDrvq2g+EQF -Z7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oTLW4jYYehY0KswsuX -n2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCzvhGbRWeDhhmH05i9CBoW -H1iCC+GWaQVLjuyDUTEH1dSf/1l7qG6Fz9NLqUmwX7A5KGgOc90lmt4S ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMx -HTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNh -IE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyOTA2MDAwMFoXDTM3MDkyODIz -NDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wgVGltZSBXYXJuZXIg -SW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMuQU9M -IFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIw -DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ -7ouZzU9AhqS2TcnZsdw8TQ2FTBVsRotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilb -m2BPJoPRYxJWSXakFsKlnUWsi4SVqBax7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOY -xFSMFkpBd4aVdQxHAWZg/BXxD+r1FHjHDtdugRxev17nOirYlxcwfACtCJ0zr7iZ -YYCLqJV+FNwSbKTQ2O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2wTPDaRrbq -JS5Gr42whTg0ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fx -I2rSAG2X+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETz -kxmlJ85per5n0/xQpCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFh -EVsVS6kkUfykXPcXnbDS+gfpj1bkGoxoigTTfFrjnqKhynFbotSg5ymFXQNoKk/S -Btc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuWCpTehTacyH+BCQJJKg71ZDIM -gtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1ExMVCgyhwn2RAu -rda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaAFE9pbQN+nZ8HGEO8txBO -1b+pxCAoMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAO/Ouyugu -h4X7ZVnnrREUpVe8WJ8kEle7+z802u6teio0cnAxa8cZmIDJgt43d15Ui47y6mdP -yXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRFASbI5Rq8NEQh3q0l/HYWdyGQgJhXnU7q -7C+qPBR7V8F+GBRn7iTGvboVsNIYvbdVgaxTwOjdaRITQrcCtQVBynlQboIOcXKT -RuidDV29rs4prWPVVRaAMCf/drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ68W/ -ClTluUI8JPu3B5wwn3la5uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyB -M5kYJRF3p+v9WAksmWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQ -my8YJPamTQr5O8t1wswvziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xO -AU++CrYD062KRffaJ00psUjf5BHklka9bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT -9Y41xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4oGKQWDzH9OmwjkyB24f0H -hdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2uBOLZ8/5 -fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx -MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB -ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV -BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV -6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX -GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP -dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH -1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF -62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW -BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw -AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL -MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU -cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv -b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 -IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ -iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao -GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh -4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm -XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB -gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV -BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw -MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl -YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P -RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 -UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI -2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 -Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp -+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ -DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O -nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW -/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g -PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u -QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY -SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv -IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 -zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd -BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB -ZQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT -IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw -MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy -ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N -T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR -FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J -cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW -BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm -fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv -GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo -YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 -MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy -NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G -A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA -A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 -Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s -QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV -eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 -B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh -z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T -AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i -ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w -TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH -MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD -VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE -VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B -AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM -bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi -ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG -VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c -ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ -AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw -PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz -cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 -MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz -IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ -ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR -VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL -kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd -EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas -H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 -HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud -DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 -QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu -Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ -AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 -yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR -FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA -ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB -kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp -ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow -fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV -BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM -cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S -HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 -CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk -3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz -6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV -HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud -EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv -Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw -Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww -DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 -5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj -Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI -gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ -aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl -izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 -aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla -MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO -BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD -VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW -fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt -TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL -fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW -1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 -kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G -A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v -ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo -dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu -Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ -HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 -pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS -jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ -xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn -dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx -ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w -MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD -VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx -FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu -ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 -gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH -fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a -ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT -ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk -c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto -dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt -aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI -hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk -QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ -h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR -rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 -9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFijCCA3KgAwIBAgIQDHbanJEMTiye/hXQWJM8TDANBgkqhkiG9w0BAQUFADBf -MQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdp -Tm90YXIgUm9vdCBDQTEgMB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmww -HhcNMDcwNTE2MTcxOTM2WhcNMjUwMzMxMTgxOTIxWjBfMQswCQYDVQQGEwJOTDES -MBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90YXIgUm9vdCBDQTEg -MB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQCssFjBAL3YIQgLK5r+blYwBZ8bd5AQQVzDDYcRd46B -8cp86Yxq7Th0Nbva3/m7wAk3tJZzgX0zGpg595NvlX89ubF1h7pRSOiLcD6VBMXY -tsMW2YiwsYcdcNqGtA8Ui3rPENF0NqISe3eGSnnme98CEWilToauNFibJBN4ViIl -HgGLS1Fx+4LMWZZpiFpoU8W5DQI3y0u8ZkqQfioLBQftFl9VkHXYRskbg+IIvvEj -zJkd1ioPgyAVWCeCLvriIsJJsbkBgWqdbZ1Ad2h2TiEqbYRAhU52mXyC8/O3AlnU -JgEbjt+tUwbRrhjd4rI6y9eIOI6sWym5GdOY+RgDz0iChmYLG2kPyes4iHomGgVM -ktck1JbyrFIto0fVUvY//s6EBnCmqj6i8rZWNBhXouSBbefK8GrTx5FrAoNBfBXv -a5pkXuPQPOWx63tdhvvL5ndJzaNl3Pe5nLjkC1+Tz8wwGjIczhxjlaX56uF0i57p -K6kwe6AYHw4YC+VbqdPRbB4HZ4+RS6mKvNJmqpMBiLKR+jFc1abBUggJzQpjotMi -puih2TkGl/VujQKQjBR7P4DNG5y6xFhyI6+2Vp/GekIzKQc/gsnmHwUNzUwoNovT -yD4cxojvXu6JZOkd69qJfjKmadHdzIif0dDJZiHcBmfFlHqabWJMfczgZICynkeO -owIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wDQYJKoZIhvcNAQEFBQADggIBADsC -jcs8MOhuoK3yc7NfniUTBAXT9uOLuwt5zlPe5JbF0a9zvNXD0EBVfEB/zRtfCdXy -fJ9oHbtdzno5wozWmHvFg1Wo1X1AyuAe94leY12hE8JdiraKfADzI8PthV9xdvBo -Y6pFITlIYXg23PFDk9Qlx/KAZeFTAnVR/Ho67zerhChXDNjU1JlWbOOi/lmEtDHo -M/hklJRRl6s5xUvt2t2AC298KQ3EjopyDedTFLJgQT2EkTFoPSdE2+Xe9PpjRchM -Ppj1P0G6Tss3DbpmmPHdy59c91Q2gmssvBNhl0L4eLvMyKKfyvBovWsdst+Nbwed -2o5nx0ceyrm/KkKRt2NTZvFCo+H0Wk1Ya7XkpDOtXHAd3ODy63MUkZoDweoAZbwH -/M8SESIsrqC9OuCiKthZ6SnTGDWkrBFfGbW1G/8iSlzGeuQX7yCpp/Q/rYqnmgQl -nQ7KN+ZQ/YxCKQSa7LnPS3K94gg2ryMvYuXKAdNw23yCIywWMQzGNgeQerEfZ1jE -O1hZibCMjFCz2IbLaKPECudpSyDOwR5WS5WpI2jYMNjD67BVUc3l/Su49bsRn1NU -9jQZjHkJNsphFyUXC4KYcwx3dMPVDceoEkzHp1RxRy4sGn3J4ys7SN4nhKdjNrN9 -j6BkOSQNPXuHr2ZcdBtLc7LljPCGmbjlxd+Ewbfr ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL -EwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJ -BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x -ETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCg -bIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJENySZ -j9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlV -Sn5JTe2io74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCG -SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx -JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI -RFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEw -MjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5 -fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i -+DAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG -SIb3DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN -QseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+ -gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6w4pl ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQsw -CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp -dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE -CxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0B -CQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4NTVaFw0wODExMjgx -ODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO -U2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0 -IENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDEx -ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBANLGJrbnpT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdf -WvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZPdJEjdd0IG03Ao9pk1uK -xBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGAvqPYUrBE -zUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F -5X5yP4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMv -OnNn7pTKBBMFYgZwI7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG -9w0BAQUFAAOCAQEAojeyP2n714Z5VEkxlTMr89EJFEliYIalsBHiUMIdBlc+Legz -ZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2vAd5ZWRzfdd5ynvVWlHG4VME -lo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX8ngvYzZAOONG -Dx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q -gUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2k -Ytdo+o56T9II2pPc8JIRetDccpMMc5NihWjQ9A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL -EwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJ -BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x -ETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC/ -k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGODVvso -LeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3o -TQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCG -SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx -JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI -RFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3 -MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6C -TShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5 -WzAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG -SIb3DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR -xdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVL -B3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlihw6ID ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQsw -CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp -dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE -CxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0B -CQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2MTZaFw0wODExMjcy -MjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO -U2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0 -IENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIx -ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBANx18IzAdZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbV -p9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva3G3WqZlVUmfpKAOS3OWw -BZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9kVySVGkl -5WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi -3sOP17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+ -QVCvbK4iNC7Va26Dunm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG -9w0BAQUFAAOCAQEAtTYOXeFhKFoRZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ -2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT4EOvkTvRyyzYdFQ6HE3K1GjN -I3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV6YyDfFk/xPEL -553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q -10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbIN -uBVd8d+6ybVK1GSYsyapMMj9puyrliGtf8J4tg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVu -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcxNjE2NDBaFw0yMDAy -MDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7Ny -Spj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0 -iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn -5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHd -BgNVHR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0 -MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy -ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5l -dCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAy -MDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdF -fP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w -AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMS -hAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/ -GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKd -zmVml64mXg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChML -RW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGlu -Y29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg -RW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJl -IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDQxNzIwMDBa -Fw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0GA1UE -CxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO -8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaB -bL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2 -dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4 -QgEBBAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoT -C0VudHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0IFNlY3Vy -ZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEw -KwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD -VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1Ud -DgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2 -fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsia -d0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbvH9X07t9WLebKahlzqlO+krNQAraF -JnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1U -yrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy -MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA -vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G -CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA -WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ -h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 -f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN -B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy -vUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u -ZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh -Yi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU -MBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D -bGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq -RW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo -6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux -5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm -AqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC -ARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50 -cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m -by9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp -IDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg -Q2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg -KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV -HRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E -BAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE -FMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7 -pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz -wy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a -EkP/TOYGJqibGapEPHayXOw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 -Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW -KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw -NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw -NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy -ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV -BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo -Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 -4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 -KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI -rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi -94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB -sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi -gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo -kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE -vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t -O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua -AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP -9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ -eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m -0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj -dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 -NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD -VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G -vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ -BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl -IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw -NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq -y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy -0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 -E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMx -IjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20w -HhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTELMAkGA1UEBhMCRVMx -IjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20w -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5u -Cp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5Vj1H5WuretXDE7aTt/6MNbg9kUDGvASdY -rv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJHlShbz++AbOCQl4oBPB3z -hxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf3H5idPay -BQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcL -iam8NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcb -AgMBAAGjgZ8wgZwwKgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lv -bmFsLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0 -MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E -FgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQADggEBAEdz/o0n -VPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq -u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36m -hoEyIwOdyPdfwUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzfl -ZKG+TQyTmAyX9odtsz/ny4Cm7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBp -QWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YGVM+h4k0460tQtcsm9MracEpqoeJ5 -quGnM/b9Sh/22WA= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv -b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU -cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv -RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M -ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5 -1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz -dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl -IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy -bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs -IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg -R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A -PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 -Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL -TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL -5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 -S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe -2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap -EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td -EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv -/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN -A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 -abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF -I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz -4iIprn2DQKi6bA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo -R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx -MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 -AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA -ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 -7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W -kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI -mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ -KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 -6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl -4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K -oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj -UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU -AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy -c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 -IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV -VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 -cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT -QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh -F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v -c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w -mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd -VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX -teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ -f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe -Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ -nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB -/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY -MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG -9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX -IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn -ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z -uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN -Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja -QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW -koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 -ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt -DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm -bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy -c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD -VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 -c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 -WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG -FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq -XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL -se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb -KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd -IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 -y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt -hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc -QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 -Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV -HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ -KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ -L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr -Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo -ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY -T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz -GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m -1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV -OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH -6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX -QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UE -ChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE -ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEuMCwGA1UECxMl -SVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMl -SVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3 -DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAwNTkzOFoXDTI1MTIyNzAw -NTkzOFowggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYD -VQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5n -IFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4g -IEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFTRTEgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTEgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA4FEnpwvdr9G5Q1uCN0VWcu+atsIS7ywS -zHb5BlmvXSHU0lq4oNTzav3KaY1mSPd05u42veiWkXWmcSjK5yISMmmwPh5r9FBS -YmL9Yzt9fuzuOOpi9GyocY3h6YvJP8a1zZRCb92CRTzo3wno7wpVqVZHYUxJZHMQ -KD/Kvwn/xi8CAwEAAaOCBEowggRGMB0GA1UdDgQWBBTrsxl588GlHKzcuh9morKb -adB4CDCCAUQGA1UdIwSCATswggE3gBTrsxl588GlHKzcuh9morKbadB4CKGCARqk -ggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE -BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBT -ZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBC -LTYwOTI5NDUyMS4wLAYDVQQLEyVJUFMgQ0EgQ0xBU0UxIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0EgQ0xBU0UxIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYD -VR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggr -BgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB -FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhC -AQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGB -D2lwc0BtYWlsLmlwcy5lczBBBglghkgBhvhCAQ0ENBYyQ0xBU0UxIENBIENlcnRp -ZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC -BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIBBAQtFito -dHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTEuY3JsMD8GCWCG -SAGG+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25D -TEFTRTEuaHRtbD8wPAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lw -czIwMDIvcmVuZXdhbENMQVNFMS5odG1sPzA6BglghkgBhvhCAQgELRYraHR0cDov -L3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFTRTEuaHRtbDBzBgNVHR8EbDBq -MDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTEu -Y3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy -Q0xBU0UxLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9v -Y3NwLmlwcy5lcy8wDQYJKoZIhvcNAQEFBQADgYEAK9Dr/drIyllq2tPMMi7JVBuK -Yn4VLenZMdMu9Ccj/1urxUq2ckCuU3T0vAW0xtnIyXf7t/k0f3gA+Nak5FI/LEpj -V4F1Wo7ojPsCwJTGKbqz3Bzosq/SLmJbGqmODszFV0VRFOlOHIilkfSj945RyKm+ -hjM+5i9Ibq9UkE6tsSU= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UE -ChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE -ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEuMCwGA1UECxMl -SVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMl -SVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3 -DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMDE0NFoXDTI1MTIyNzAx -MDE0NFowggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYD -VQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5n -IFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4g -IEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFTRTMgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTMgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqxf+DrDGaBtT8FK+n/ra+osTBLsBjzLZ -H49NzjaY2uQARIwo2BNEKqRrThckQpzTiKRBgtYj+4vJhuW5qYIF3PHeH+AMmVWY -8jjsbJ0gA8DvqqPGZARRLXgNo9KoOtYkTOmWehisEyMiG3zoMRGzXwmqMHBxRiVr -SXGAK5UBsh8CAwEAAaOCBEowggRGMB0GA1UdDgQWBBS4k/8uy9wsjqLnev42USGj -mFsMNDCCAUQGA1UdIwSCATswggE3gBS4k/8uy9wsjqLnev42USGjmFsMNKGCARqk -ggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE -BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBT -ZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBC -LTYwOTI5NDUyMS4wLAYDVQQLEyVJUFMgQ0EgQ0xBU0UzIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0EgQ0xBU0UzIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYD -VR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggr -BgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB -FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhC -AQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGB -D2lwc0BtYWlsLmlwcy5lczBBBglghkgBhvhCAQ0ENBYyQ0xBU0UzIENBIENlcnRp -ZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC -BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIBBAQtFito -dHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTMuY3JsMD8GCWCG -SAGG+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25D -TEFTRTMuaHRtbD8wPAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lw -czIwMDIvcmVuZXdhbENMQVNFMy5odG1sPzA6BglghkgBhvhCAQgELRYraHR0cDov -L3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFTRTMuaHRtbDBzBgNVHR8EbDBq -MDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTMu -Y3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy -Q0xBU0UzLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9v -Y3NwLmlwcy5lcy8wDQYJKoZIhvcNAQEFBQADgYEAF2VcmZVDAyevJuXr0LMXI/dD -qsfwfewPxqmurpYPdikc4gYtfibFPPqhwYHOU7BC0ZdXGhd+pFFhxu7pXu8Fuuu9 -D6eSb9ijBmgpjnn1/7/5p6/ksc7C0YBCJwUENPjDfxZ4IwwHJPJGR607VNCv1TGy -r33I6unUVtkOE7LFRVA= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UE -ChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE -ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMm -SVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMT -JklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZI -hvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNTMyWhcNMjUxMjI3 -MDEwNTMyWjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ -BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hp -bmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5G -LiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMw -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALsw19zQVL01Tp/FTILq0VA8R5j8 -m2mdd81u4D/u6zJfX5/S0HnllXNEITLgCtud186Nq1KLK3jgm1t99P1tCeWu4Wwd -ByOgF9H5fahGRpEiqLJpxq339fWUoTCUvQDMRH/uxJ7JweaPCjbB/SQ9AaD1e+J8 -eGZDi09Z8pvZ+kmzAgMBAAGjggRTMIIETzAdBgNVHQ4EFgQUZyaW56G/2LUDnf47 -3P7yiuYV3TAwggFGBgNVHSMEggE9MIIBOYAUZyaW56G/2LUDnf473P7yiuYV3TCh -ggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ -BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hp -bmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5G -LiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOC -AQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUF -BwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYB -BAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglg -hkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1Ud -EgQTMBGBD2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ0xBU0VBMSBD -QSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCG -SAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7BglghkgBhvhC -AQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMS5j -cmwwQAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2 -b2NhdGlvbkNMQVNFQTEuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cu -aXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFQTEuaHRtbD8wOwYJYIZIAYb4QgEI -BC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcG9saWN5Q0xBU0VBMS5odG1s -MHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvaXBz -MjAwMkNMQVNFQTEuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz -MjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUF -BzABhhNodHRwOi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAH66iqyA -AIQVCtWYUQxkxZwCWINmyq0eB81+atqAB98DNEock8RLWCA1NnHtogo1EqWmZaeF -aQoO42Hu6r4okzPV7Oi+xNtff6j5YzHIa5biKcJboOeXNp13XjFr/tOn2yrb25aL -H2betgPAK7N41lUH5Y85UN4HI3LmvSAUS7SG ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UE -ChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE -ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMm -SVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMT -JklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZI -hvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNzUwWhcNMjUxMjI3 -MDEwNzUwWjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ -BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hp -bmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5G -LiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMw -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO6AAPYaZC6tasiDsYun7o/ZttvN -G7uGBiJ2MwwSbUhWYdLcgiViL5/SaTBlA0IjWLxH3GvWdV0XPOH/8lhneaDBgbHU -VqLyjRGZ/fZ98cfEXgIqmuJKtROKAP2Md4bm15T1IHUuDky/dMQ/gT6DtKM4Ninn -6Cr1jIhBqoCm42zvAgMBAAGjggRTMIIETzAdBgNVHQ4EFgQUHp9XUEe2YZM50yz8 -2l09BXW3mQIwggFGBgNVHSMEggE9MIIBOYAUHp9XUEe2YZM50yz82l09BXW3mQKh -ggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ -BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hp -bmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5G -LiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOC -AQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUF -BwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYB -BAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglg -hkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1Ud -EgQTMBGBD2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ0xBU0VBMyBD -QSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCG -SAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7BglghkgBhvhC -AQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMy5j -cmwwQAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2 -b2NhdGlvbkNMQVNFQTMuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cu -aXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFQTMuaHRtbD8wOwYJYIZIAYb4QgEI -BC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcG9saWN5Q0xBU0VBMy5odG1s -MHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvaXBz -MjAwMkNMQVNFQTMuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz -MjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUF -BzABhhNodHRwOi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAEo9IEca -2on0eisxeewBwMwB9dbB/MjD81ACUZBYKp/nNQlbMAqBACVHr9QPDp5gJqiVp4MI -3y2s6Q73nMify5NF8bpqxmdRSmlPa/59Cy9SKcJQrSRE7SOzSMtEQMEDlQwKeAYS -AfWRMS1Jjbs/RU4s4OjNtckUFQzjB4ObJnXv ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARwxCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UE -ChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE -ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEzMDEGA1UECxMq -SVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYD -VQQDEypJUFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx -HjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczAeFw0wMTEyMjkwMDUzNTha -Fw0yNTEyMjcwMDUzNThaMIIBHDELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNl -bG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQg -cHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMu -ZXMgQy5JLkYuICBCLTYwOTI5NDUyMTMwMQYDVQQLEypJUFMgQ0EgQ2hhaW5lZCBD -QXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMzAxBgNVBAMTKklQUyBDQSBDaGFp -bmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3DQEJARYP -aXBzQG1haWwuaXBzLmVzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcVpJJ -spQgvJhPUOtopKdJC7/SMejHT8KGC/po/UNaivNgkjWZOLtNA1IhW/A3mTXhQSCB -hYEFcYGdtJUZqV92NC5jNzVXjrQfQj8VXOF6wV8TGDIxya2+o8eDZh65nAQTy2nB -Bt4wBrszo7Uf8I9vzv+W6FS+ZoCua9tBhDaiPQIDAQABo4IEQzCCBD8wHQYDVR0O -BBYEFKGtMbH5PuEXpsirNPxShwkeYlJBMIIBTgYDVR0jBIIBRTCCAUGAFKGtMbH5 -PuEXpsirNPxShwkeYlJBoYIBJKSCASAwggEcMQswCQYDVQQGEwJFUzESMBAGA1UE -CBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJ -bnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0Bt -YWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxMzAxBgNVBAsTKklQUyBDQSBD -aGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEzMDEGA1UEAxMqSVBT -IENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZI -hvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8E -BQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMG -CCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYB -BAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMw -EYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC -BglghkgBhvhCAQ0ENRYzQ2hhaW5lZCBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkg -aHR0cDovL3d3dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlw -cy5lcy9pcHMyMDAyLzA3BglghkgBhvhCAQQEKhYoaHR0cDovL3d3dy5pcHMuZXMv -aXBzMjAwMi9pcHMyMDAyQ0FDLmNybDA8BglghkgBhvhCAQMELxYtaHR0cDovL3d3 -dy5pcHMuZXMvaXBzMjAwMi9yZXZvY2F0aW9uQ0FDLmh0bWw/MDkGCWCGSAGG+EIB -BwQsFipodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3JlbmV3YWxDQUMuaHRtbD8w -NwYJYIZIAYb4QgEIBCoWKGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcG9saWN5 -Q0FDLmh0bWwwbQYDVR0fBGYwZDAuoCygKoYoaHR0cDovL3d3dy5pcHMuZXMvaXBz -MjAwMi9pcHMyMDAyQ0FDLmNybDAyoDCgLoYsaHR0cDovL3d3d2JhY2suaXBzLmVz -L2lwczIwMDIvaXBzMjAwMkNBQy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUF -BzABhhNodHRwOi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAERyMJ1W -WKJBGyi3leGmGpVfp3hAK+/blkr8THFj2XOVvQLiogbHvpcqk4A0hgP63Ng9HgfN -HnNDJGD1HWHc3JagvPsd4+cSACczAsDAK1M92GsDgaPb1pOVIO/Tln4mkImcJpvN -b2ar7QMiRDjMWb2f2/YHogF/JsRj9SVCXmK9 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICtzCCAiACAQAwDQYJKoZIhvcNAQEEBQAwgaMxCzAJBgNVBAYTAkVTMRIwEAYD -VQQIEwlCQVJDRUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcGA1UEChMQSVBT -IFNlZ3VyaWRhZCBDQTEYMBYGA1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQD -Ew5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVz -MB4XDTk4MDEwMTIzMjEwN1oXDTA5MTIyOTIzMjEwN1owgaMxCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCQVJDRUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcGA1UE -ChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYGA1UECxMPQ2VydGlmaWNhY2lvbmVzMRcw -FQYDVQQDEw5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwu -aXBzLmVzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsT1J0nznqjtwlxLyY -XZhkJAk8IbPMGbWOlI6H0fg3PqHILVikgDVboXVsHUUMH2Fjal5vmwpMwci4YSM1 -gf/+rHhwLWjhOgeYlQJU3c0jt4BT18g3RXIGJBK6E2Ehim51KODFDzT9NthFf+G4 -Nu+z4cYgjui0OLzhPvYR3oydAQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBACzzw3lY -JN7GO9HgQmm47mSzPWIBubOE3yN93ZjPEKn+ANgilgUTB1RXxafey9m4iEL2mdsU -dx+2/iU94aI+A6mB0i1sR/WWRowiq8jMDQ6XXotBtDvECgZAHd1G9AHduoIuPD14 -cJ58GNCr+Lh3B0Zx8coLY1xq+XKU1QFPoNtC ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIIODCCB6GgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCAR4xCzAJBgNVBAYTAkVT -MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UE -ChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE -ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjE0MDIGA1UECxMr -SVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE0MDIG -A1UEAxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMTAx -OFoXDTI1MTIyNzAxMTAxOFowggEeMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFy -Y2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5l -dCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlw -cy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxNDAyBgNVBAsTK0lQUyBDQSBUaW1lc3Rh -bXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxNDAyBgNVBAMTK0lQUyBDQSBU -aW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0B -CQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA -vLjuVqWajOY2ycJioGaBjRrVetJznw6EZLqVtJCneK/K/lRhW86yIFcBrkSSQxA4 -Efdo/BdApWgnMjvEp+ZCccWZ73b/K5Uk9UmSGGjKALWkWi9uy9YbLA1UZ2t6KaFY -q6JaANZbuxjC3/YeE1Z2m6Vo4pjOxgOKNNtMg0GmqaMCAwEAAaOCBIAwggR8MB0G -A1UdDgQWBBSL0BBQCYHynQnVDmB4AyKiP8jKZjCCAVAGA1UdIwSCAUcwggFDgBSL -0BBQCYHynQnVDmB4AyKiP8jKZqGCASakggEiMIIBHjELMAkGA1UEBhMCRVMxEjAQ -BgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJ -UFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJp -cHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMTQwMgYDVQQLEytJUFMg -Q0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTQwMgYDVQQD -EytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4w -HAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAM -BgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYB -BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIB -FgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYD -VR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlw -cy5lczBHBglghkgBhvhCAQ0EOhY4VGltZXN0YW1waW5nIENBIENlcnRpZmljYXRl -IGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgECBBwWGmh0 -dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMEAGCWCGSAGG+EIBBAQzFjFodHRwOi8v -d3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMEUGCWCG -SAGG+EIBAwQ4FjZodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25U -aW1lc3RhbXBpbmcuaHRtbD8wQgYJYIZIAYb4QgEHBDUWM2h0dHA6Ly93d3cuaXBz -LmVzL2lwczIwMDIvcmVuZXdhbFRpbWVzdGFtcGluZy5odG1sPzBABglghkgBhvhC -AQgEMxYxaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lUaW1lc3RhbXBp -bmcuaHRtbDB/BgNVHR8EeDB2MDegNaAzhjFodHRwOi8vd3d3Lmlwcy5lcy9pcHMy -MDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMDugOaA3hjVodHRwOi8vd3d3YmFj -ay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyVGltZXN0YW1waW5nLmNybDAvBggrBgEF -BQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZI -hvcNAQEFBQADgYEAZbrBzAAalZHK6Ww6vzoeFAh8+4Pua2JR0zORtWB5fgTYXXk3 -6MNbsMRnLWhasl8OCvrNPzpFoeo2zyYepxEoxZSPhExTCMWTs/zif/WN87GphV+I -3pGW7hdbrqXqcGV4LCFkAZXOzkw+UPS2Wctjjba9GNSHSl/c7+lW8AoM6HU= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhV -MRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMe -TmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0 -dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFzcyBB -KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oXDTE5MDIxOTIzMTQ0 -N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhC -dWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQu -MRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBL -b3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSMD7tM9DceqQWC2ObhbHDqeLVu0ThEDaiD -zl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZz+qMkjvN9wfcZnSX9EUi -3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC/tmwqcm8 -WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LY -Oph7tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2Esi -NCubMvJIH5+hCoR64sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCC -ApswDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4 -QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZRUxFTSEgRXplbiB0 -YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRhdGFz -aSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu -IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtm -ZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMg -ZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVs -amFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJhc2EgbWVndGFsYWxoYXRv -IGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBzOi8vd3d3 -Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6 -ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1 -YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3Qg -dG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRs -b2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNAbmV0bG9jay5uZXQuMA0G -CSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5ayZrU3/b39/zcT0mwBQO -xmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjPytoUMaFP -0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQ -QeJBCWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxk -f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK -8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQD -EzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVneXpvaSAoQ2xhc3MgUUEpIFRhbnVz -aXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0bG9jay5odTAeFw0w -MzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5l -dExvY2sgTWlub3NpdGV0dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZh -bnlraWFkbzEeMBwGCSqGSIb3DQEJARYPaW5mb0BuZXRsb2NrLmh1MIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRVCacbvWy5FPSKAtt2/Goq -eKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e8ia6AFQe -r7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO5 -3Lhbm+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWd -vLrqOU+L73Sa58XQ0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0l -mT+1fMptsK6ZmfoIYOcZwvK9UdPM0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4IC -wDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8EBAMCAQYwggJ1Bglg -hkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2YW55IGEgTmV0 -TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh -biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQg -ZWxla3Ryb25pa3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywg -dmFsYW1pbnQgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6 -b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwgYXogQWx0YWxhbm9zIFN6ZXJ6b2Rl -c2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kgZWxqYXJhcyBtZWd0 -ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczovL3d3 -dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0Bu -ZXRsb2NrLm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBh -bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRo -ZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3 -Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0IGluZm9AbmV0bG9jay5u -ZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3DQEBBQUA -A4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQ -MznNwNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+ -NFAwLvt/MpqNPfMgW/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCR -VCHnpgu0mfVRQdzNo0ci2ccBgcTcR08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY -83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR5qq5aKrN9p2QdRLqOBrKROi3 -macqaJVmlaut74nLYKkGEsaUR+ko ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi -MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV -UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO -ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz -c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP -OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl -mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF -BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 -qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw -gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu -bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp -dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 -6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ -h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH -/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN -pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz -MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw -IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR -dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp -li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D -rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ -WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug -F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU -xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC -Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv -dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw -ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl -IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh -c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy -ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI -KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T -KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq -y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p -dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD -VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL -MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk -fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 -7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R -cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y -mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW -xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK -SnQ2+Q== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa -GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg -Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J -WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB -rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp -+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 -ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i -Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz -PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og -/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH -oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI -yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud -EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 -A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL -MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f -BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn -g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl -fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K -WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha -B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc -hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR -TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD -mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z -ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y -4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza -8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM -V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB -4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr -H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd -8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv -vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT -mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe -btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc -T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt -WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ -c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A -4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD -VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG -CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 -aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw -czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G -A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg -Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 -7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem -d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd -+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B -4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN -t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x -DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 -k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s -zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j -Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT -mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK -4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUFADA6 -MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp -dHkgMTAyNCBWMzAeFw0wMTAyMjIyMTAxNDlaFw0yNjAyMjIyMDAxNDlaMDoxGTAX -BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAx -MDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDV3f5mCc8kPD6ugU5O -isRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dYrIMKo1W1exeQFYRMiu4mmdxY -78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYtbzZUaMjShFbuklNhCbM/OZuoyZu9 -zp9+1BlqFikYvtc6adwlWzMaUQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAd -BgNVHQ4EFgQUxMAcpAeU/c1NAdRU2qUMX96uBVowDQYJKoZIhvcNAQEFBQADgYEA -Py1q4yZDlX2Jl2X7deRyHUZXxGFraZ8SmyzVWujAovBDleMf6XbN3Ou8k6BlCsdN -T1+nr6JGFLkM88y9am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNumU4/iXgD -mMrzVcydro7BqkWY+o8aoI2II/EVQQ2lRj6RP4vr93E= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6 -MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp -dHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAX -BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAy -MDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt49VcdKA3Xtp -eafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7Jylg -/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGl -wSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnh -AMFRD0xS+ARaqn1y07iHKrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2 -PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpu -AWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NR -MKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYc -HnmYv/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/ -Zb5gEydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+ -f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVO -rSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEkllgVsRch -6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kApKnXwiJPZ9d3 -7CAFYd4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz -MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv -cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz -Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO -0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao -wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj -7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS -8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT -BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg -JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 -6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ -3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm -D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS -CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx -MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg -Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ -iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa -/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ -jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI -HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 -sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w -gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw -KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG -AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L -URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO -H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm -I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY -iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAx -MDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H887dF+2rDNbS82rDTG -29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9EJUk -oVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk -3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBL -qdReLjVQCfOAl/QMF6452F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIIN -nvmLVz5MxxftLItyM19yejhW1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuX -ZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0H -DjxVyhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VO -TzF2nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv -kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4w -zMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJO -TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEy -MTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVTdGFhdCBkZXIgTmVk -ZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENB -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFtvszn -ExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw71 -9tV2U02PjLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MO -hXeiD+EwR+4A5zN9RGcaC1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+U -tFE5A3+y3qcym7RHjm+0Sq7lr7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3o -BmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAh -SQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDww -OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMv -cm9vdC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA -7Jbg0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k -/rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzm -eafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0C5GUR5z6 -u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy -7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR -iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE -FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j -ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js -LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM -BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 -Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy -dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh -cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh -YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg -dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp -bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ -YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT -TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ -9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 -jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW -FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz -ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 -ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L -EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu -L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq -yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC -O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V -um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh -NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFFjCCBH+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBsDELMAkGA1UEBhMCSUwx -DzANBgNVBAgTBklzcmFlbDEOMAwGA1UEBxMFRWlsYXQxFjAUBgNVBAoTDVN0YXJ0 -Q29tIEx0ZC4xGjAYBgNVBAsTEUNBIEF1dGhvcml0eSBEZXAuMSkwJwYDVQQDEyBG -cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS -YWRtaW5Ac3RhcnRjb20ub3JnMB4XDTA1MDMxNzE3Mzc0OFoXDTM1MDMxMDE3Mzc0 -OFowgbAxCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxDjAMBgNVBAcTBUVp -bGF0MRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMRowGAYDVQQLExFDQSBBdXRob3Jp -dHkgRGVwLjEpMCcGA1UEAxMgRnJlZSBTU0wgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkxITAfBgkqhkiG9w0BCQEWEmFkbWluQHN0YXJ0Y29tLm9yZzCBnzANBgkqhkiG -9w0BAQEFAAOBjQAwgYkCgYEA7YRgACOeyEpRKSfeOqE5tWmrCbIvNP1h3D3TsM+x -18LEwrHkllbEvqoUDufMOlDIOmKdw6OsWXuO7lUaHEe+o5c5s7XvIywI6Nivcy+5 -yYPo7QAPyHWlLzRMGOh2iCNJitu27Wjaw7ViKUylS7eYtAkUEKD4/mJ2IhULpNYI -LzUCAwEAAaOCAjwwggI4MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgHmMB0G -A1UdDgQWBBQcicOWzL3+MtUNjIExtpidjShkjTCB3QYDVR0jBIHVMIHSgBQcicOW -zL3+MtUNjIExtpidjShkjaGBtqSBszCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgT -BklzcmFlbDEOMAwGA1UEBxMFRWlsYXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4x -GjAYBgNVBAsTEUNBIEF1dGhvcml0eSBEZXAuMSkwJwYDVQQDEyBGcmVlIFNTTCBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSYWRtaW5Ac3Rh -cnRjb20ub3JnggEAMB0GA1UdEQQWMBSBEmFkbWluQHN0YXJ0Y29tLm9yZzAdBgNV -HRIEFjAUgRJhZG1pbkBzdGFydGNvbS5vcmcwEQYJYIZIAYb4QgEBBAQDAgAHMC8G -CWCGSAGG+EIBDQQiFiBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAy -BglghkgBhvhCAQQEJRYjaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL2NhLWNybC5j -cmwwKAYJYIZIAYb4QgECBBsWGWh0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy8wOQYJ -YIZIAYb4QgEIBCwWKmh0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9pbmRleC5waHA/ -YXBwPTExMTANBgkqhkiG9w0BAQQFAAOBgQBscSXhnjSRIe/bbL0BCFaPiNhBOlP1 -ct8nV0t2hPdopP7rPwl+KLhX6h/BquL/lp9JmeaylXOWxkjHXo0Hclb4g4+fd68p -00UOpO6wNnQt8M2YI3s3S9r+UZjEHjQ8iP2ZO1CnwYszx8JSFhKVU2Ui77qLzmLb -cCOxgN8aIDjnfg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV -BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln -biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF -MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT -d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 -76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ -bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c -6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE -emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd -MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt -MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y -MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y -FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi -aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM -gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB -qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 -lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn -8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov -L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 -45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO -UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 -O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC -bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv -GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a -77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC -hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 -92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp -Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w -ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt -Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu -IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw -WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD -ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y -IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn -IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ -6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob -jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw -izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl -+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY -zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP -pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF -KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW -ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB -AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 -ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW -IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA -A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 -uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ -FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 -jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ -u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D -YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 -puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa -icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG -DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x -kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z -Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4MTgyMjA2MjBaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9 -m2BtRsiMMW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdih -FvkcxC7mlSpnzNApbjyFNDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/ -TilftKaNXXsLmREDA/7n29uj/x2lzZAeAR81sH8A25Bvxn570e56eqeqDFdvpG3F -EzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkCb6dJtDZd0KTeByy2dbco -kdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn7uHbHaBu -HYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNF -vJbNcA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo -19AOeCMgkckkKmUpWyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjC -L3UcPX7ape8eYIVpQtPM+GP+HkM5haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJW -bjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNYMUJDLXT5xp6mig/p/r+D5kNX -JLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j -BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzc -K6FptWfUjNP9MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzf -ky9NfEBWMXrrpA9gzXrzvsMnjgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7Ik -Vh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQMbFamIp1TpBcahQq4FJHgmDmHtqB -sfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4HVtA4oJVwIHaM190e -3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtlvrsR -ls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ip -mXeascClOS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HH -b6D0jqTsNFFbjCYDcKF31QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksf -rK/7DZBaZmBwXarNeNQk7shBoJMBkpxqnvy5JMWzFYJ+vq6VK+uxwNrjAWALXmms -hFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCyx/yP2FS1k2Kdzs9Z+z0Y -zirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMWNY6E0F/6 -MBr1mmz0DlP5OlvRHA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRF -MRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFU -QyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJI -MSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAyIENBMSkwJwYJKoZIhvcN -AQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05ODAzMDkxMTU5NTla -Fw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFtYnVy -ZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9y -IFNlY3VyaXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1 -c3RDZW50ZXIgQ2xhc3MgMiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVA -dHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANo46O0y -AClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLsqh1R1z2zUbKDTl3LSbDw -TFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5Nu6hLVxa8 -/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3 -LnRydXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G -CSqGSIb3DQEBBAUAA4GBAIRS+yjf/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/ -jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ29ELw+HkuCkhcq8xRT3h2oNms -Gb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/AcASZ4smZHcFFk ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRF -MRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFU -QyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJI -MSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAzIENBMSkwJwYJKoZIhvcN -AQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05ODAzMDkxMTU5NTla -Fw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFtYnVy -ZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9y -IFNlY3VyaXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1 -c3RDZW50ZXIgQ2xhc3MgMyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVA -dHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALa0wTUF -Lg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN2U4CdhHBC/KNecoAtvGw -Dtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+77uMMfTDW -w1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3 -LnRydXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G -CSqGSIb3DQEBBAUAA4GBABY9xs3Bu4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIE -Tb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm5gZOngylerpuw3yCGdHHsbHD -2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQSCdS7kjXvD9s0 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJE -SzEVMBMGA1UEChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQg -Um9vdCBDQTAeFw0wMTA0MDUxNjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNV -BAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJuZXQxHTAbBgNVBAsTFFREQyBJbnRl -cm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxLhA -vJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20jxsNu -Zp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a -0vnRrEvLznWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc1 -4izbSysseLlJ28TQx5yc5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGN -eGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcD -R0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZIAYb4QgEBBAQDAgAHMGUG -A1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMMVERDIElu -dGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxME -Q1JMMTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3 -WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAw -HQYDVR0OBBYEFGxkAcf9hW2syNqeUAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJ -KoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4IBAQBO -Q8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540mgwV5dOy0uaOX -wTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ -2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm89 -9qNLPg7kbWzbO0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0 -jUNAE4z9mQNUecYu6oah9jrUCbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38 -aQNiuJkFBT1reBK9sG9l ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJE -SzEMMAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEw -ODM5MzBaFw0zNzAyMTEwOTA5MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNU -REMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuHnEz9pPPEXyG9VhDr -2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0zY0s -2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItU -GBxIYXvViGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKj -dGqPqcNiKXEx5TukYBdedObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+r -TpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB5DCB4TCB3gYIKoFQgSkB -AQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5kay9yZXBv -c2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRl -ciBmcmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEu -MS4xLiBDZXJ0aWZpY2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIg -T0lEIDEuMi4yMDguMTY5LjEuMS4xLjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1Ud -HwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEMMAoGA1UEChMDVERDMRQwEgYD -VQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYmaHR0cDovL2Ny -bC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy -MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZ -J2cdUBVLc647+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqG -SIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACrom -JkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4A9G28kNBKWKnctj7fAXmMXAnVBhO -inxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYscA+UYyAFMP8uXBV2Y -caaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9AOoB -mbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQ -YqbsFbS1AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9 -BKNDLdr8C2LqL19iUw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGDAJUUjEPMA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykg -MjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 -dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMxMDI3MTdaFw0xNTAz -MjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2Vy -dGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYD -VQQHDAZBTktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kg -xLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEu -xZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7 -XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GXyGl8hMW0kWxsE2qkVa2k -heiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8iSi9BB35J -YbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5C -urKZ8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1 -JuTm5Rh8i27fbMx4W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51 -b0dewQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV -9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46sWrv7/hg0Uw2ZkUd82YCdAR7 -kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxEq8Sn5RTOPEFh -fEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy -B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdA -aLX/7KfS0zgYnNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKS -RGQDJereW26fyfJOrN3H ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcNMDUxMTA3MTAwNzU3 -WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVrdHJv -bmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJU -UjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSw -bGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWe -LiAoYykgS2FzxLFtIDIwMDUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqeLCDe2JAOCtFp0if7qnef -J1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKIx+XlZEdh -R3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJ -Qv2gQrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGX -JHpsmxcPbe9TmJEr5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1p -zpwACPI2/z7woQ8arBT9pmAPAgMBAAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58S -Fq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/nttRbj2hWyfIvwq -ECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 -Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFz -gw2lGh1uEpJ+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotH -uFEJjOp9zYhys2AzsfAKRO8P9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LS -y3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5UrbnBEI= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ -MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow -PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR -IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q -gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy -yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts -F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 -jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx -ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC -VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK -YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH -EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN -Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud -DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE -MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK -UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf -qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK -ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE -JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 -hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 -EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm -nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX -udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz -ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe -LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl -pYYsfPQS ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj -IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X -DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw -EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE -ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy -dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD -QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 -dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK -wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 -G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF -AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 -c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P -9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt -YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu -Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa -MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG -cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh -d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY -DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E -rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq -uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN -BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP -MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa -/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei -gQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p -dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv -bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa -QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY -BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u -IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl -bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu -Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs -Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI -Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD -ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH -b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh -KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN -BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd -BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN -MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g -Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG -A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l -c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT -6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa -Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL -8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC -9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ -pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ -CayJSdM= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCB -ozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3Qt -TmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5WhcNMTkwNzA5MTg1 -NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0 -IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYD -VQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VS -Rmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQCz+5Gh5DZVhawGNFugmliy+LUPBXeDrjKxdpJo7CNKyXY/45y2 -N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4CjDUeJT1FxL+78P/m4FoCH -iZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXuOzr0hARe -YFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1 -axwiP8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6g -yN7igEL66S/ozjIEj3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQD -AgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPh -ahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9V -VE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0GCSqGSIb3DQEB -BQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y -IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6Lzs -QCv4AdRWOOTKRIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4 -ZSfP1FMa8Kxun08FDAOBp4QpxFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qM -YEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAqDbUMo2s/rn9X9R+WfN9v3YIwLGUb -QErNaLly7HF27FSOH4UMAWr6pjisH8SE ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVUTi1VU0VSRmlyc3Qt -Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05OTA3MDkxNzI4NTBa -Fw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAV -BgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5l -dHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UE -AxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3B -YHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9 -hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6l -L8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLm -SGHGTPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM -1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws -6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJhkdodHRw -Oi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGllbnRBdXRoZW50 -aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u -7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0 -xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQ -rfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarVNZ1yQAOJujEdxRBoUp7fooXFXAim -eOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gk -USeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW -ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 -nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex -t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz -SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG -BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ -rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ -NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E -BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH -BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv -MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE -p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y -5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK -WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ -4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N -hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 -NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD -VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp -bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N -H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR -4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN -BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo -EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 -FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx -lA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J -h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul -uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 -DzFc6PLZ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh -YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 -FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg -J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc -r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDM -HO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtK -qsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwj -cSGIL4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y -cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRP -T8qAkbYp ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 -GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ -+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd -U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm -NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY -ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ -ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 -CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq -g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm -fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c -2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ -bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD -VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 -MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV -BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy -dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ -ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII -0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI -uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI -hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 -YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc -1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDzTCCAzagAwIBAgIQU2GyYK7bcY6nlLMTM/QHCTANBgkqhkiG9w0BAQUFADCB -wTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQL -EzNDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1 -dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmswHhcNMDAwOTI2MDAwMDAwWhcNMTAwOTI1MjM1OTU5WjCBpTEXMBUGA1UEChMO -VmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsx -OzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5j -b20vcnBhIChjKTAwMSwwKgYDVQQDEyNWZXJpU2lnbiBUaW1lIFN0YW1waW5nIEF1 -dGhvcml0eSBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0hmdZ8IAIVli -zrQJIkRpivglWtvtDbc2fk7gu5Q+kCWHwmFHKdm9VLhjzCx9abQzNvQ3B5rB3UBU -/OB4naCTuQk9I1F/RMIUdNsKvsvJMDRAmD7Q1yUQgZS9B0+c1lQn3y6ov8uQjI11 -S7zi6ESHzeZBCiVu6PQkAsVSD27smHUCAwEAAaOB3zCB3DAPBgNVHRMECDAGAQH/ -AgEAMEUGA1UdIAQ+MDwwOgYMYIZIAYb4RQEHFwEDMCowKAYIKwYBBQUHAgEWHGh0 -dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0 -cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwCwYDVR0PBAQDAgEGMEIGCCsG -AQUFBwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJpc2lnbi5j -b20vb2NzcC9zdGF0dXMwDQYJKoZIhvcNAQEFBQADgYEAgnBold+2DcIBcBlK0lRW -HqzyRUyHuPU163hLBanInTsZIS5wNEqi9YngFXVF5yg3ADQnKeg3S/LvRJdrF1Ea -w1adPBqK9kpGRjeM+sv1ZFo4aC4cw+9wzrhGBha/937ntag+RaypJXUie28/sJyU -58dzq6wf7iWbwBbtt8pb8BQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDgDCCAmigAwIBAgICAx4wDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCVVMx -DTALBgNVBAoTBFZJU0ExLzAtBgNVBAsTJlZpc2EgSW50ZXJuYXRpb25hbCBTZXJ2 -aWNlIEFzc29jaWF0aW9uMRIwEAYDVQQDEwlHUCBSb290IDIwHhcNMDAwODE2MjI1 -MTAwWhcNMjAwODE1MjM1OTAwWjBhMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklT -QTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRp -b24xEjAQBgNVBAMTCUdQIFJvb3QgMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBAKkBcLWqxEDwq2omYXkZAPy/mzdZDK9vZBv42pWUJGkzEXDK41Z0ohdX -ZFwgBuHW73G3O/erwWnQSaSxBNf0V2KJXLB1LRckaeNCYOTudNargFbYiCjh+20i -/SN8RnNPflRzHqgsVVh1t0zzWkWlAhr62p3DRcMiXvOL8WAp0sdftAw6UYPvMPjU -58fy+pmjIlC++QU3o63tmsPm7IgbthknGziLgE3sucfFicv8GjLtI/C1AVj59o/g -halMCXI5Etuz9c9OYmTaxhkVOmMd6RdVoUwiPDQyRvhlV7or7zaMavrZ2UT0qt2E -1w0cslSsMoW0ZA3eQbuxNMYBhjJk1Z8CAwEAAaNCMEAwHQYDVR0OBBYEFJ59SzS/ -ca3CBfYDdYDOqU8axCRMMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQAhpXYUVfmtJ3CPPPTVbMjMCqujmAuKBiPFyWHb -mQdpNSYx/scuhMKZYdQN6X0uEyt8joW2hcdLzzW2LEc9zikv2G+fiRxkk78IvXbQ -kIqUs38oW26sTTMs7WXcFsziza6kPWKSBpUmv9+55CCmc2rBvveURNZNbyoLaxhN -dBA2aGpawWqn3TYpjLgwi08hPwAuVDAHOrqK5MOeyti12HvOdUVmB/RtLdh6yumJ -ivIj2C/LbgA2T/vwLwHMD8AiZfSr4k5hLQOCfZEWtTDVFN5ex5D8ofyrEK9ca3Cn -B+8phuiyJccg/ybdd+95RBTEvd07xQObdyPsoOy7Wjm1zK0G ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr -MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl -cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv -bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw -CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h -dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l -cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h -2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E -lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV -ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq -299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t -vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL -dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF -AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR -zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 -LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd -7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw -++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt -398znM/jra6O1I7mT1GvFpLgXPYHDw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx -IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs -cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v -dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0 -MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl -bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD -DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r -WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU -Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs -HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj -z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf -SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl -AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG -KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P -AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j -BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC -VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX -ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB -ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd -/ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB -A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn -k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9 -iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv -2G0xffX8oRAHh84vWdw+WNs= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9v -dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDAxMDExMTY0MTI4WhcNMjEwMTE0 -MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dlbGxzIEZhcmdvMSww -KgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEvMC0G -A1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n13 -5zHCLielTWi5MbqNQ1mXx3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHE -SxP9cMIlrCL1dQu3U+SlK93OvRw6esP3E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4O -JgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5OEL8pahbSCOz6+MlsoCu -ltQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4jsNtlAHCE -AQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMB -AAGjYTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcB -CzAyMDAGCCsGAQUFBwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRw -b2xpY3kwDQYJKoZIhvcNAQEFBQADggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo -7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrvm+0fazbuSCUlFLZWohDo7qd/ -0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0ROhPs7fpvcmR7 -nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx -x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ -33ZwmVxwQ023tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB -gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk -MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY -UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx -NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 -dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy -dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 -38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP -KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q -DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 -qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa -JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi -PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P -BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs -jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 -eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD -ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR -vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa -IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy -i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ -O+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFajCCBFKgAwIBAgIEPLU9RjANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwli -ZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMq -YmVUUlVTVGVkIFJvb3QgQ0EtQmFsdGltb3JlIEltcGxlbWVudGF0aW9uMB4XDTAy -MDQxMTA3Mzg1MVoXDTIyMDQxMTA3Mzg1MVowZjESMBAGA1UEChMJYmVUUlVTVGVk -MRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNVBAMTKmJlVFJVU1Rl -ZCBSb290IENBLUJhbHRpbW9yZSBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBALx+xDmcjOPWHIb/ymKt4H8wRXqOGrO4x/nRNv8i -805qX4QQ+2aBw5R5MdKR4XeOGCrDFN5R9U+jK7wYFuK13XneIviCfsuBH/0nLI/6 -l2Qijvj/YaOcGx6Sj8CoCd8JEey3fTGaGuqDIQY8n7pc/5TqarjDa1U0Tz0yH92B -FODEPM2dMPgwqZfT7syj0B9fHBOB1BirlNFjw55/NZKeX0Tq7PQiXLfoPX2k+Ymp -kbIq2eszh+6l/ePazIjmiSZuxyuC0F6dWdsU7JGDBcNeDsYq0ATdcT0gTlgn/FP7 -eHgZFLL8kFKJOGJgB7Sg7KxrUNb9uShr71ItOrL/8QFArDcCAwEAAaOCAh4wggIa -MA8GA1UdEwEB/wQFMAMBAf8wggG1BgNVHSAEggGsMIIBqDCCAaQGDysGAQQBsT4A -AAEJKIORMTCCAY8wggFIBggrBgEFBQcCAjCCAToaggE2UmVsaWFuY2Ugb24gb3Ig -dXNlIG9mIHRoaXMgQ2VydGlmaWNhdGUgY3JlYXRlcyBhbiBhY2tub3dsZWRnbWVu -dCBhbmQgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJk -IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgdGhlIENlcnRpZmljYXRpb24g -UHJhY3RpY2UgU3RhdGVtZW50IGFuZCB0aGUgUmVseWluZyBQYXJ0eSBBZ3JlZW1l -bnQsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCB0aGUgYmVUUlVTVGVkIHdlYiBzaXRl -LCBodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNfc2VydmljZXMvaW5k -ZXguaHRtbDBBBggrBgEFBQcCARY1aHR0cDovL3d3dy5iZXRydXN0ZWQuY29tL3By -b2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWwwHQYDVR0OBBYEFEU9w6nR3D8kVpgc -cxiIav+DR+22MB8GA1UdIwQYMBaAFEU9w6nR3D8kVpgccxiIav+DR+22MA4GA1Ud -DwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEASZK8o+6svfoNyYt5hhwjdrCA -WXf82n+0S9/DZEtqTg6t8n1ZdwWtColzsPq8y9yNAIiPpqCy6qxSJ7+hSHyXEHu6 -7RMdmgduyzFiEuhjA6p9beP4G3YheBufS0OM00mG9htc9i5gFdPp43t1P9ACg9AY -gkHNZTfqjjJ+vWuZXTARyNtIVBw74acT02pIk/c9jH8F6M7ziCpjBLjqflh8AXtb -4cV97yHgjQ5dUX2xZ/2jvTg2xvI4hocalmhgRvsoFEdV4aeADGvi6t9NfJBIoDa9 -CReJf8Py05yc493EG931t3GzUwWJBtDLSoDByFOQtTwxiBdQn8nEDovYqAJjDQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFLDCCBBSgAwIBAgIEOU99hzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJX -VzESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQDExJiZVRSVVNUZWQgUm9vdCBD -QXMxGjAYBgNVBAMTEWJlVFJVU1RlZCBSb290IENBMB4XDTAwMDYyMDE0MjEwNFoX -DTEwMDYyMDEzMjEwNFowWjELMAkGA1UEBhMCV1cxEjAQBgNVBAoTCWJlVFJVU1Rl -ZDEbMBkGA1UEAxMSYmVUUlVTVGVkIFJvb3QgQ0FzMRowGAYDVQQDExFiZVRSVVNU -ZWQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS0c3oT -CjhVAb6JVuGUntS+WutKNHUbYSnE4a0IYCF4SP+00PpeQY1hRIfo7clY+vyTmt9P -6j41ffgzeubx181vSUs9Ty1uDoM6GHh3o8/n9E1z2Jo7Gh2+lVPPIJfCzz4kUmwM -jmVZxXH/YgmPqsWPzGCgc0rXOD8Vcr+il7dw6K/ifhYGTPWqZCZyByWtNfwYsSbX -2P8ZDoMbjNx4RWc0PfSvHI3kbWvtILNnmrRhyxdviTX/507AMhLn7uzf/5cwdO2N -R47rtMNE5qdMf1ZD6Li8tr76g5fmu/vEtpO+GRg+jIG5c4gW9JZDnGdzF5DYCW5j -rEq2I8QBoa2k5MUCAwEAAaOCAfgwggH0MA8GA1UdEwEB/wQFMAMBAf8wggFZBgNV -HSAEggFQMIIBTDCCAUgGCisGAQQBsT4BAAAwggE4MIIBAQYIKwYBBQUHAgIwgfQa -gfFSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1 -bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0 -ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGFuZCBjZXJ0aWZpY2F0aW9uIHBy -YWN0aWNlIHN0YXRlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IGJlVFJVU1Rl -ZCdzIHdlYiBzaXRlLCBodHRwczovL3d3dy5iZVRSVVNUZWQuY29tL3ZhdWx0L3Rl -cm1zMDEGCCsGAQUFBwIBFiVodHRwczovL3d3dy5iZVRSVVNUZWQuY29tL3ZhdWx0 -L3Rlcm1zMDQGA1UdHwQtMCswKaAnoCWkIzAhMRIwEAYDVQQKEwliZVRSVVNUZWQx -CzAJBgNVBAYTAldXMB0GA1UdDgQWBBQquZtpLjub2M3eKjEENGvKBxirZzAfBgNV -HSMEGDAWgBQquZtpLjub2M3eKjEENGvKBxirZzAOBgNVHQ8BAf8EBAMCAf4wDQYJ -KoZIhvcNAQEFBQADggEBAHlh26Nebhax6nZR+csVm8tpvuaBa58oH2U+3RGFktTo -Qb9+M70j5/Egv6S0phkBxoyNNXxlpE8JpNbYIxUFE6dDea/bow6be3ga8wSGWsb2 -jCBHOElQBp1yZzrwmAOtlmdE/D8QDYZN5AA7KXvOOzuZhmElQITcE2K3+spZ1gMe -1lMBzW1MaFVA4e5rxyoAAEiCswoBw2AqDPeCNe5IhpbkdNQ96gFxugR1QKepfzk5 -mlWXKWWuGVUlBXJH0+gY3Ljpr0NzARJ0o+FcXxVdJPP55PS2Z2cS52QiivalQaYc -tmBjRYoQtLpGEK5BV2VsPyMQPyEQWbfkQN0mDCP2qq4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIGUTCCBTmgAwIBAgIEPLVPQDANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwli -ZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMq -YmVUUlVTVGVkIFJvb3QgQ0EgLSBFbnRydXN0IEltcGxlbWVudGF0aW9uMB4XDTAy -MDQxMTA4MjQyN1oXDTIyMDQxMTA4NTQyN1owZjESMBAGA1UEChMJYmVUUlVTVGVk -MRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNVBAMTKmJlVFJVU1Rl -ZCBSb290IENBIC0gRW50cnVzdCBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBALr0RAOqEmq1Q+xVkrYwfTVXDNvzDSduTPdQqJtO -K2/b9a0cS12zqcH+e0TrW6MFDR/FNCswACnxeECypP869AGIF37m1CbTukzqMvtD -d5eHI8XbQ6P1KqNRXuE70mVpflUVm3rnafdE4Fe1FehmYA8NA/uCjqPoEXtsvsdj -DheT389Lrm5zdeDzqrmkwAkbhepxKYhBMvnwKg5sCfJ0a2ZsUhMfGLzUPvfYbiCe -yv78IZTuEyhL11xeDGbu6bsPwTSxfwh28z0mcMmLJR1iJAzqHHVOwBLkuhMdMCkt -VjMFu5dZfsZJT4nXLySotohAtWSSU1Yk5KKghbNekLQSM80CAwEAAaOCAwUwggMB -MIIBtwYDVR0gBIIBrjCCAaowggGmBg8rBgEEAbE+AAACCSiDkTEwggGRMIIBSQYI -KwYBBQUHAgIwggE7GoIBN1JlbGlhbmNlIG9uIG9yIHVzZSBvZiB0aGlzIENlcnRp -ZmljYXRlIGNyZWF0ZXMgYW4gYWNrbm93bGVkZ21lbnQgYW5kIGFjY2VwdGFuY2Ug -b2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0 -aW9ucyBvZiB1c2UsIHRoZSBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dCBhbmQgdGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50LCB3aGljaCBjYW4gYmUg -Zm91bmQgYXQgdGhlIGJlVFJVU1RlZCB3ZWIgc2l0ZSwgaHR0cHM6Ly93d3cuYmV0 -cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1sMEIGCCsGAQUF -BwIBFjZodHRwczovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2Vz -L2luZGV4Lmh0bWwwEQYJYIZIAYb4QgEBBAQDAgAHMIGJBgNVHR8EgYEwfzB9oHug -eaR3MHUxEjAQBgNVBAoTCWJlVFJVU1RlZDEbMBkGA1UECxMSYmVUUlVTVGVkIFJv -b3QgQ0FzMTMwMQYDVQQDEypiZVRSVVNUZWQgUm9vdCBDQSAtIEVudHJ1c3QgSW1w -bGVtZW50YXRpb24xDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMjA0MTEw -ODI0MjdagQ8yMDIyMDQxMTA4NTQyN1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaA -FH1w5a44iwY/qhwaj/nPJDCqhIQWMB0GA1UdDgQWBBR9cOWuOIsGP6ocGo/5zyQw -qoSEFjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIE -kDANBgkqhkiG9w0BAQUFAAOCAQEAKrgXzh8QlOu4mre5X+za95IkrNySO8cgjfKZ -5V04ocI07cUTWVwFtStPYZuR+0H8/NU8TZh2BvWBfevdkObRVlTa4y0MnxEylCIB -evZsLHRnBMylj44ss0O1lKLQfelifwa+JwGDnjr9iu6YQ0pr17WXOzq/T220Y/oz -ADQuLW2WyXvKmWO6vvT2MKAtmJbpVkQFqUSjYRDrgqFnXbxdJ3Wqiig2KjiS2d2k -XgClzMx8KSreKJCrt+G2/30lC0DYqjSjLd4H61/OCt3Kfjp9JsFiaDrmLzfzgYYh -xKlkqu9FNtEaZnz46TfW1mG+oq1I59/mdP7TbX3SJdysYlep9w== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFaDCCBFCgAwIBAgIQO1nHe81bV569N1KsdrSqGjANBgkqhkiG9w0BAQUFADBi -MRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENB -czEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRp -b24wHhcNMDIwNDExMTExODEzWhcNMjIwNDEyMTEwNzI1WjBiMRIwEAYDVQQKEwli -ZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEvMC0GA1UEAxMm -YmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkujQwCY5X0LkGLG9uJIAiv11DpvpPrILn -HGhwhRujbrWqeNluB0s/6d/16uhUoWGKDi9pdRi3DOUUjXFumLhV/AyV0Jtu4S2I -1DpAa5LxmZZk3tv/ePTulh1HiXzUvrmIdyM6CeYEnm2qXtLIvZpOGd+J6lsOfsPk -tPDgaTuID0GQ+NRxQyTBjyZLO1bp/4xsN+lFrYWMU8NghpBKlsmzVLC7F/AcRdnU -GxlkVgoZ98zh/4avflherHqQH8koOUV7orbHnB/ahdQhhlkwk75TMzf270HPM8er -cmsl9fNTGwxMLvF1S++gh/f+ihXQbNXL+WhTuXAVE8L1LvtDNXUtAgMBAAGjggIY -MIICFDAMBgNVHRMEBTADAQH/MIIBtQYDVR0gBIIBrDCCAagwggGkBg8rBgEEAbE+ -AAADCSiDkTEwggGPMEEGCCsGAQUFBwIBFjVodHRwOi8vd3d3LmJldHJ1c3RlZC5j -b20vcHJvZHVjdHNfc2VydmljZXMvaW5kZXguaHRtbDCCAUgGCCsGAQUFBwICMIIB -OhqCATZSZWxpYW5jZSBvbiBvciB1c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBjcmVh -dGVzIGFuIGFja25vd2xlZGdtZW50IGFuZCBhY2NlcHRhbmNlIG9mIHRoZSB0aGVu -IGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNl -LCB0aGUgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1lbnQgYW5kIHRoZSBS -ZWx5aW5nIFBhcnR5IEFncmVlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IHRo -ZSBiZVRSVVNUZWQgd2ViIHNpdGUsIGh0dHA6Ly93d3cuYmV0cnVzdGVkLmNvbS9w -cm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1sMAsGA1UdDwQEAwIBBjAfBgNVHSME -GDAWgBSp7BR++dlDzFMrFK3P9/BZiUHNGTAdBgNVHQ4EFgQUqewUfvnZQ8xTKxSt -z/fwWYlBzRkwDQYJKoZIhvcNAQEFBQADggEBANuXsHXqDMTBmMpWBcCorSZIry0g -6IHHtt9DwSwddUvUQo3neqh03GZCWYez9Wlt2ames30cMcH1VOJZJEnl7r05pmuK -mET7m9cqg5c0Lcd9NUwtNLg+DcTsiCevnpL9UGGCqGAHFFPMZRPB9kdEadIxyKbd -LrML3kqNWz2rDcI1UqJWN8wyiyiFQpyRQHpwKzg21eFzGh/l+n5f3NacOzDq28Bb -J1zTcwfBwvNMm2+fG8oeqqg4MwlYsq78B+g23FW6L09A/nq9BqaBwZMifIYRCgZ3 -SK41ty8ymmFei74pnykkiFY5LKjSq5YDWtRIn7lAhAuYaPsBQ9Yb4gmxlxw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB -qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV -BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw -NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j -LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG -A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs -W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta -3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk -6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 -Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J -NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP -r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU -DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz -YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 -/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ -LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 -jVaMaA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIETzCCAzegAwIBAgIEO63vKTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE -ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg -U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIzMTQxODE3WhcNMTEw -OTIzMTMxODE3WjB1MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v -LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWdu -ZXQgLSBDQSBLbGFzYSAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4SRW9Q58g5DY1Hw7h -gCRKBEdPdGn0MFHsfw7rlu/oQm7IChI/uWd9q5wwo77YojtTDjRnpgZsjqBeynX8T90vFILqsY2K -5CF1OESalwvVr3sZiQX79lisuFKat92u6hBFikFIVxfHHB67Af+g7u0dEHdDW7lwy81MwFYxBTRy -9wIDAQABo4IBbTCCAWkwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwggEEBgNVHSAE -gfwwgfkwgfYGDSsGAQQBvj8CAQoBAQAwgeQwgZoGCCsGAQUFBwICMIGNGoGKQ2VydHlmaWthdCB3 -eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtOiAiUG9saXR5a2EgQ2VydHlmaWthY2ppIGRs -YSBSb290Q0EiLiBDZXJ0eWZpa2F0IHd5c3Rhd2lvbnkgcHJ6ZXogUm9vdENBIHcgaGllcmFyY2hp -aSBDQyBTaWduZXQuMEUGCCsGAQUFBwIBFjlodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0b3Jp -dW0vZG9rdW1lbnR5L3BjX3Jvb3RjYS50eHQwHwYDVR0jBBgwFoAUwJvFIw0C4aZOSGsfAOnjmhQb -sa8wHQYDVR0OBBYEFMODHtVZd1T7TftXR/nEI1zR54njMA0GCSqGSIb3DQEBBQUAA4IBAQBRIHQB -FIGh8Jpxt87AgSLwIEEk4+oGy769u3NtoaR0R3WNMdmt7fXTi0tyTQ9V4AIszxVjhnUPaKnF1KYy -f8Tl+YTzk9ZfFkZ3kCdSaILZAOIrmqWNLPmjUQ5/JiMGho0e1YmWUcMci84+pIisTsytFzVP32/W -+sz2H4FQAvOIMmxB7EJX9AdbnXn9EXZ+4nCqi0ft5z96ZqOJJiCB3vSaoYg+wdkcvb6souMJzuc2 -uptXtR1Xf3ihlHaGW+hmnpcwFA6AoNrom6Vgzk6U1ienx0Cw28BhRSKqzKkyXkuK8gRflZUx84uf -tXncwKJrMiE3lvgOOBITRzcahirLer4c ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE9zCCA9+gAwIBAgIEPL/xoTANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJQTDEfMB0GA1UE -ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg -U2lnbmV0MSAwHgYDVQQDExdDQyBTaWduZXQgLSBQQ0EgS2xhc2EgMjAeFw0wMjA0MTkxMDI5NTNa -Fw0xNzA0MTgxMjUzMDdaMHUxCzAJBgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4g -eiBvLm8uMSQwIgYDVQQLExtDZW50cnVtIENlcnR5ZmlrYWNqaSBTaWduZXQxHzAdBgNVBAMTFkND -IFNpZ25ldCAtIENBIEtsYXNhIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqgLJu -QqY4yavbSgHg8CyfKTx4BokNSDOVz4eD9vptUr11Kqd06ED1hlH7Sg0goBFAfntNU/QTKwSBaNui -me7C4sSEdgsKrPoAhGb4Mq8y7Ty7RqZz7mkzNMqzL2L2U4yQ2QjvpH8MH0IBqOWEcpSkpwnrCDIm -RoTfd+YlZWKi2JceQixUUYIQ45Ox8+x8hHbvvZdgqtcvo8PW27qoHkp/7hMuJ44kDAGrmxffBXl/ -OBRZp0uO1CSLcMcVJzyr2phKhy406MYdWrtNPEluGs0GFDzd0nrIctiWAO4cmct4S72S9Q6e//0G -O9f3/Ca5Kb2I1xYLj/xE+HgjHX9aD2MhAgMBAAGjggGMMIIBiDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjCB4wYDVR0gBIHbMIHYMIHVBg0rBgEEAb4/AhQKAQEAMIHDMHUGCCsGAQUF -BwICMGkaZ0NlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0 -eWthIENlcnR5ZmlrYWNqaSBQQ0EyIC0gQ2VydHlmaWthdHkgVXJ6ZWRvdyBLbGFzeSAyIi4wSgYI -KwYBBQUHAgEWPmh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9kb2t1bWVudHkva2xh -c2EyL3BjX3BjYTIudHh0MD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly93d3cuc2lnbmV0LnBsL3Jl -cG96eXRvcml1bS9jcmwvcGNhMi5jcmwwHwYDVR0jBBgwFoAUwGxGyl2CfpYHRonE82AVXO08kMIw -HQYDVR0OBBYEFLtFBlILy4HNKVSzvHxBTM0HDowlMA0GCSqGSIb3DQEBBQUAA4IBAQBWTsCbqXrX -hBBev5v5cIuc6gJM8ww7oR0uMQRZoFSqvQUPWBYM2/TLI/f8UM9hSShUVj3zEsSj/vFHagUVmzuV -Xo5u0WK8iaqATSyEVBhADHrPG6wYcLKJlagge/ILA0m+SieyP2sjYD9MUB9KZIEyBKv0429UuDTw -6P7pslxMWJBSNyQxaLIs0SRKsqZZWkc7ZYAj2apSkBMX2Is1oHA+PwkF6jQMwCao/+CndXPUzfCF -6caa9WwW31W26MlXCvSmJgfiTPwGvm4PkPmOnmWZ3CczzhHl4q7ztHFzshJH3sZWDnrWwBFjzz5e -Pr3WHV1wA7EY6oT4zBx+2gT9XBTB ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEUzCCAzugAwIBAgIEPq+qjzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJQTDE3MDUGA1UE -ChMuQ1ppQyBDZW50cmFzdCBTQSB3IGltaWVuaXUgTWluaXN0cmEgR29zcG9kYXJraTEZMBcGA1UE -AxMQQ1ppQyBDZW50cmFzdCBTQTAeFw0wMzA0MzAxMDUwNTVaFw0wODA0MjgxMDUwNTVaMGgxCzAJ -BgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4geiBvLm8uMR8wHQYDVQQDExZDQyBT -aWduZXQgLSBDQSBLbGFzYSAzMRcwFQYDVQQFEw5OdW1lciB3cGlzdTogNDCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBALVdeOM62cPH2NERFxbS5FIp/HSv3fgesdVsTUFxZbGtE+/E0RMl -KZQJHH9emx7vRYubsi4EOLCjYsCOTFvgGRIpZzx7R7T5c0Di5XFkRU4gjBl7aHJoKb5SLzGlWdoX -GsekVtl6keEACrizV2EafqjI8cnBWY7OxQ1ooLQp5AeFjXg+5PT0lO6TUZAubqjFbhVbxSWjqvdj -93RGfyYE76MnNn4c2xWySD07n7uno06TC0IJe6+3WSX1h+76VsIFouWBXOoM7cxxiLjoqdBVu24+ -P8e81SukE7qEvOwDPmk9ZJFtt1nBNg8a1kaixcljrA/43XwOPz6qnJ+cIj/xywECAwEAAaOCAQow -ggEGMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMDMGA1UdIAEB/wQpMCcwJQYEVR0g -ADAdMBsGCCsGAQUFBwIBFg93d3cuY2VudHJhc3QucGwwgY4GA1UdIwSBhjCBg4AU2a7r85Cp1iJN -W0Ca1LR6VG3996ShZaRjMGExCzAJBgNVBAYTAlBMMTcwNQYDVQQKEy5DWmlDIENlbnRyYXN0IFNB -IHcgaW1pZW5pdSBNaW5pc3RyYSBHb3Nwb2RhcmtpMRkwFwYDVQQDExBDWmlDIENlbnRyYXN0IFNB -ggQ9/0sQMB0GA1UdDgQWBBR7Y8wZkHq0zrY7nn1tFSdQ0PlJuTANBgkqhkiG9w0BAQUFAAOCAQEA -ldt/svO5c1MU08FKgrOXCGEbEPbQxhpM0xcd6Iv3dCo6qugEgjEs9Qm5CwUNKMnFsvR27cJWUvZb -MVcvwlwCwclOdwF6u/QRS8bC2HYErhYo9bp9yuxxzuow2A94c5fPqfVrjXy+vDouchAm6+A5Wjzv -J8wxVFDCs+9iGACmyUWr/JGXCYiQIbQkwlkRKHHlan9ymKf1NvIej/3EpeT8fKr6ywxGuhAfqofW -pg3WJY/RCB4lTzD8vZGNwfMFGkWhJkypad3i9w3lGmDVpsHaWtCgGfd0H7tUtWPkP+t7EjIRCD9J -HYnTR+wbbewc5vOI+UobR15ynGfFIaSIiMTVtQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEejCCA2KgAwIBAgIEP4vk6TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQ -TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2Vu -dHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBD -QSBLbGFzYSAyMB4XDTAzMTAxNDExNTgyMloXDTE3MDQxODEyNTMwN1owdzELMAkG -A1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6IG8uby4xJDAiBgNV -BAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEhMB8GA1UEAxMYQ0MgU2ln -bmV0IC0gT0NTUCBLbGFzYSAyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCo -VCsaBStblXQYVNthe3dvaCrfvKpPXngh4almm988iIlEv9CVTaAdCfaJNihvA+Vs -Qw8++ix1VqteMQE474/MV/YaXigP0Zr0QB+g+/7PWVlv+5U9Gzp9+Xx4DJay8AoI -iB7Iy5Qf9iZiHm5BiPRIuUXT4ZRbZRYPh0/76vgRsQIDAQABo4IBkjCCAY4wDgYD -VR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEEGA1UdHwQ6MDgwNqA0 -oDKGMGh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9jcmwva2xhc2Ey -LmNybDCB2AYDVR0gBIHQMIHNMIHKBg4rBgEEAb4/AoFICgwBADCBtzBsBggrBgEF -BQcCAjBgGl5DZXJ0eWZpa2F0IHd5ZGFueSB6Z29kbmllIHogZG9rdW1lbnRlbSAi -UG9saXR5a2EgQ2VydHlmaWthY2ppIC0gQ2VydHlmaWthdHkgcmVzcG9uZGVyb3cg -T0NTUCIuMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0 -b3JpdW0vZG9rdW1lbnR5L3BjX29jc3BfMV8wLnBkZjAfBgNVHSMEGDAWgBS7RQZS -C8uBzSlUs7x8QUzNBw6MJTAdBgNVHQ4EFgQUKEVrOY7cEHvsVgvoyZdytlbtgwEw -CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAQrRg5MV6dxr0HU2IsLInxhvt -iUVmSFkIUsBCjzLoewOXA16d2oDyHhI/eE+VgAsp+2ANjZu4xRteHIHoYMsN218M -eD2MLRsYS0U9xxAFK9gDj/KscPbrrdoqLvtPSMhUb4adJS9HLhvUe6BicvBf3A71 -iCNe431axGNDWKnpuj2KUpj4CFHYsWCXky847YtTXDjri9NIwJJauazsrSjK+oXp -ngRS506mdQ7vWrtApkh8zhhWp7duCkjcCo1O8JxqYr2qEW1fXmgOISe010v2mmuv -hHxPyVwoAU4KkOw0nbXZn53yak0is5+XmAjh0wWue44AssHrjC9nUh3mkLt6eQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEezCCA2OgAwIBAgIEP4vnLzANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJQ -TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEfMB0GA1UEAxMWQ0Mg -U2lnbmV0IC0gQ0EgS2xhc2EgMzEXMBUGA1UEBRMOTnVtZXIgd3Bpc3U6IDQwHhcN -MDMxMDE0MTIwODAwWhcNMDgwNDI4MTA1MDU1WjB3MQswCQYDVQQGEwJQTDEfMB0G -A1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBD -ZXJ0eWZpa2FjamkgU2lnbmV0MSEwHwYDVQQDExhDQyBTaWduZXQgLSBPQ1NQIEts -YXNhIDMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM/9GwvARNuCVN+PqZmO -4FqH8vTqhenUyqRkmAVT4YhLu0a9AXeLAYVDu+NTkYzsAUMAfu55rIKHNLlm6WbF -KvLiKKz4p4pbUr+ToPcwl/TDotidloUdBAxDg0SL+PmQqACZDe3seJho2IYf2vDL -/G4TLMbKmNB0mlWFuN0f4fJNAgMBAAGjggGgMIIBnDAOBgNVHQ8BAf8EBAMCB4Aw -EwYDVR0lBAwwCgYIKwYBBQUHAwkwTwYDVR0fBEgwRjBEoEKgQIY+aHR0cDovL3d3 -dy5zaWduZXQucGwva3dhbGlmaWtvd2FuZS9yZXBvenl0b3JpdW0vY3JsL2tsYXNh -My5jcmwwgdgGA1UdIASB0DCBzTCBygYOKwYBBAG+PwKCLAoCAQAwgbcwbAYIKwYB -BQUHAgIwYBpeQ2VydHlmaWthdCB3eWRhbnkgemdvZG5pZSB6IGRva3VtZW50ZW0g -IlBvbGl0eWthIENlcnR5ZmlrYWNqaSAtIENlcnR5ZmlrYXR5IHJlc3BvbmRlcm93 -IE9DU1AiLjBHBggrBgEFBQcCARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5 -dG9yaXVtL2Rva3VtZW50eS9wY19vY3NwXzFfMC5wZGYwHwYDVR0jBBgwFoAUe2PM -GZB6tM62O559bRUnUND5SbkwHQYDVR0OBBYEFG4jnCMvBALRQXtmDn9TyXQ/EKP+ -MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBACXrKG5Def5lpRwmZom3UEDq -bl7y4U3qomG4B+ok2FVZGgPZti+ZgvrenPj7PtbYCUBPsCSTNrznKinoT3gD9lQQ -xkEHwdc6VD1GlFp+qI64u0+wS9Epatrdf7aBnizrOIB4LJd4E2TWQ6trspetjMIU -upyWls1BmYUxB91R7QkTiAUSNZ87s3auhZuG4f0V0JLVCcg2rn7AN1rfMkgxCbHk -GxiQbYWFljl6aatxR3odnnzVUe1I8uoY2JXpmmUcOG4dNGuQYziyKG3mtXCQWvug -5qi9Mf3KUh1oSTKx6HfLjjNl1+wMB5Mdb8LF0XyZLdJM9yIZh7SBRsYm9QiXevY= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFGjCCBAKgAwIBAgIEPL7eEDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE -ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg -U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwNDE4MTQ1NDA4WhcNMjYw -OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v -LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu -ZXQgLSBQQ0EgS2xhc2EgMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7BrBlbN5ma -M5eg0BOTqoZ+9NBDvU8Lm5rTdrMswFTCathzpVVLK/JD4K3+4oCZ9SRAspEXE4gvwb08ASY6w5s+ -HpRkeJw8YzMFR5kDZD5adgnCAy4vDfIXYZgppXPaTQ8wnfUZ7BZ7Zfa7QBemUIcJIzJBB0UqgtxW -Ceol9IekpBRVmuuSA6QG0Jkm+pGDJ05yj2eQG8jTcBENM7sVA8rGRMyFA4skSZ+D0OG6FS2xC1i9 -JyN0ag1yII/LPx8HK5J4W9MaPRNjAEeaa2qI9EpchwrOxnyVbQfSedCG1VRJfAsE/9tT9CMUPZ3x -W20QjQcSZJqVcmGW9gVsXKQOVLsCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P -AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQEBMIHkMIGaBggrBgEFBQcC -AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0 -eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6 -IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z -aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw -OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy -bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUwGxGyl2CfpYHRonE -82AVXO08kMIwDQYJKoZIhvcNAQEFBQADggEBABp1TAUsa+BeVWg4cjowc8yTJ5XN3GvN96GObMkx -UGY7U9kVrLI71xBgoNVyzXTiMNDBvjh7vdPWjpl5SDiRpnnKiOFXA43HvNWzUaOkTu1mxjJsZsan -ot1Xt6j0ZDC+03FjLHdYMyM9kSWp6afb4980EPYZCcSzgM5TOGfJmNii5Tq468VFKrX+52Aou1G2 -2Ohu+EEOlOrG7ylKv1hHUJJCjwN0ZVEIn1nDbrU9FeGCz8J9ihVUvnENEBbBkU37PWqWuHitKQDV -tcwTwJJdR8cmKq3NmkwAm9fPacidQLpaw0WkuGrS+fEDhu1Nhy9xELP6NA9GRTCNxm/dXlcwnmY= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFGjCCBAKgAwIBAgIEPV0tNDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE -ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg -U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwODE2MTY0OTU2WhcNMjYw -OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v -LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu -ZXQgLSBQQ0EgS2xhc2EgMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALN3LanJtdue -Ne6geWUTFENa+lEuzqELcoqhYB+a/tJcPEkc6TX/bYPzalRRjqs+quMP6KZTU0DixOrV+K7iWaqA -iQ913HX5IBLmKDCrTVW/ZvSDpiBKbxlHfSNuJxAuVT6HdbzK7yAW38ssX+yS2tZYHZ5FhZcfqzPE -OpO94mAKcBUhk6T/ki0evXX/ZvvktwmF3hKattzwtM4JMLurAEl8SInyEYULw5JdlfcBez2Tg6Db -w34hA1A+ckTwhxzecrB8TUe2BnQKOs9vr2cCACpFFcOmPkM0Drtjctr1QHm1tYSqRFRf9VcV5tfC -3P8QqoK4ONjtLPHc9x5NE1uK/FMCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P -AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQECMIHkMIGaBggrBgEFBQcC -AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0 -eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6 -IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z -aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw -OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy -bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUXvthcPHlH5BgGhlM -ErJNXWlhlgAwDQYJKoZIhvcNAQEFBQADggEBACIce95Mvn710KCAISA0CuHD4aznTU6pLoCDShW4 -7OR+GTpJUm1coTcUqlBHV9mra4VFrBcBuOkHZoBLq/jmE0QJWnpSEULDcH9J3mF0nqO9SM+mWyJG -dsJF/XU/7smummgjMNQXwzQTtWORF+6v5KUbWX85anO2wR+M6YTBWC55zWpWi4RG3vkHFs5Ze2oF -JTlpuxw9ZgxTnWlwI9QR2MvEhYIUMKMOWxw1nt0kKj+5TCNQQGh/VJJ1dsiroGh/io1DOcePEhKz -1Ag52y6Wf0nJJB9yk0sFakqZH18F7eQecQImgZyyeRtsG95leNugB3BXWCW+KxwiBrtQTXv4dTE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEzzCCA7egAwIBAgIEO6ocGTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE -ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg -U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIwMTY0MjE5WhcNMjYw -OTIxMTU0MjE5WjBxMQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v -LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MRswGQYDVQQDExJDQyBTaWdu -ZXQgLSBSb290Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrr2vydnNpELfGW3Ks -ARiDhJvwDtUe4AbWev+OfMc3+vA29nX8ZmIwno3gmItjo5DbUCCRiCMq5c9epcGu+kg4a3BJChVX -REl8gVh0ST15rr3RKrSc4VgsvQzl0ZUraeQLl8JoRT5PLsUj3qwF78jUCQVckiiLVcnGfZtFCm+D -CJXliQBDMB9XFAUEiO/DtEBs0B7wJGx7lgJeJpQUcGiaOPjcJDYOk7rNAYmmD2gWeSlepufO8luU -YG/YDxTC4mqhRqfa4MnVO5dqy+ICj2UvUpHbZDB0KfGRibgBYeQP1kuqgIzJN4UqknVAJb0aMBSP -l+9k2fAUdchx1njlbdcbAgMBAAGjggFtMIIBaTAPBgNVHRMBAf8EBTADAQH/MIIBBAYDVR0gBIH8 -MIH5MIH2Bg0rBgEEAb4/AgEKAQEAMIHkMIGaBggrBgEFBQcCAjCBjRqBikNlcnR5ZmlrYXQgd3lz -dGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0eWthIENlcnR5ZmlrYWNqaSBkbGEg -Um9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6IFJvb3RDQSB3IGhpZXJhcmNoaWkg -Q0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVt -L2Rva3VtZW50eS9wY19yb290Y2EudHh0MB0GA1UdDgQWBBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAf -BgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN -AQEFBQADggEBAGnY5QmYqnnO9OqFOWZxxb25UHRnaRF6IV9aaGit5BZufZj2Tq3v8L3SgE34GOoI -cdRMMG5JEpEU4mN/Ef3oY6Eo+7HfqaPHI4KFmbDSPiK5s+wmf+bQSm0Yq5/h4ZOdcAESlLQeLSt1 -CQk2JoKQJ6pyAf6xJBgWEIlm4RXE4J3324PUiOp83kW6MDvaa1xY976WyInr4rwoLgxVl11LZeKW -ha0RJJxJgw/NyWpKG7LWCm1fglF8JH51vZNndGYq1iKtfnrIOvLZq6bzaCiZm1EurD8HE6P7pmAB -KK6o3C2OXlNfNIgwkDN/cDqk5TYsTkrpfriJPdxXBH8hQOkW89g= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID/TCCA2agAwIBAgIEP4/gkTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQTDEfMB0GA1UE -ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg -U2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBDQSBLbGFzYSAxMB4XDTAzMTAxNzEyMjkwMloX -DTExMDkyMzExMTgxN1owdjELMAkGA1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6 -IG8uby4xJDAiBgNVBAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEgMB4GA1UEAxMXQ0Mg -U2lnbmV0IC0gVFNBIEtsYXNhIDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJYrISEtSsd -uHajROh5/n7NGrkpYTT9NEaPe9+ucuQ37KxIbfJwXJjgUc1dw4wCkcQ12FJarD1X6mSQ4cfN/60v -LfKI5ZD4nhJTMKlAj1pX9ScQ/MuyvKStCbn5WTkjPhjRAM0tdwXSnzuTEunfw0Oup559y3Iqxg1c -ExflB6cfAgMBAAGjggGXMIIBkzBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vd3d3LnNpZ25ldC5w -bC9yZXBvenl0b3JpdW0vY3JsL2tsYXNhMS5jcmwwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQM -MAoGCCsGAQUFBwMIMIHaBgNVHSAEgdIwgc8wgcwGDSsGAQQBvj8CZAoRAgEwgbowbwYIKwYBBQUH -AgIwYxphQ2VydHlmaWthdCB3eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtICJQb2xpdHlr -YSBDZXJ0eWZpa2FjamkgQ0MgU2lnbmV0IC0gWm5ha293YW5pZSBjemFzZW0iLjBHBggrBgEFBQcC -ARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY190c2ExXzJf -MS5wZGYwHwYDVR0jBBgwFoAUw4Me1Vl3VPtN+1dH+cQjXNHnieMwHQYDVR0OBBYEFJdDwEqtcavO -Yd9u9tej53vWXwNBMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADgYEAnpiQkqLCJQYXUrqMHUEz -+z3rOqS0XzSFnVVLhkVssvXc8S3FkJIiQTUrkScjI4CToCzujj3EyfNxH6yiLlMbskF8I31JxIeB -vueqV+s+o76CZm3ycu9hb0I4lswuxoT+q5ZzPR8Irrb51rZXlolR+7KtwMg4sFDJZ8RNgOf7tbA= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEFTCCA36gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBvjELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UE -ChMfU29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9z -dG1hc3RlcjEgMB4GA1UEAxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkq -hkiG9w0BCQEWFmhvc3RtYXN0ZXJAc3BpLWluYy5vcmcwHhcNMDMwMTE1MTYyOTE3 -WhcNMDcwMTE0MTYyOTE3WjCBvjELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0luZGlh -bmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdhcmUgaW4g -dGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1hc3RlcjEgMB4GA1UE -AxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkqhkiG9w0BCQEWFmhvc3Rt -YXN0ZXJAc3BpLWluYy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPB6 -rdoiLR3RodtM22LMcfwfqb5OrJNl7fwmvskgF7yP6sdD2bOfDIXhg9852jhY8/kL -VOFe1ELAL2OyN4RAxk0rliZQVgeTgqvgkOVIBbNwgnjN6mqtuWzFiPL+NXQExq40 -I3whM+4lEiwSHaV+MYxWanMdhc+kImT50LKfkxcdAgMBAAGjggEfMIIBGzAdBgNV -HQ4EFgQUB63oQR1/vda/G4F6P4xLiN4E0vowgesGA1UdIwSB4zCB4IAUB63oQR1/ -vda/G4F6P4xLiN4E0vqhgcSkgcEwgb4xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdJ -bmRpYW5hMRUwEwYDVQQHEwxJbmRpYW5hcG9saXMxKDAmBgNVBAoTH1NvZnR3YXJl -IGluIHRoZSBQdWJsaWMgSW50ZXJlc3QxEzARBgNVBAsTCmhvc3RtYXN0ZXIxIDAe -BgNVBAMTF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MSUwIwYJKoZIhvcNAQkBFhZo -b3N0bWFzdGVyQHNwaS1pbmMub3JnggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN -AQEEBQADgYEAm/Abn8c2y1nO3fgpAIslxvi9iNBZDhQtJ0VQZY6wgSfANyDOR4DW -iexO/AlorB49KnkFS7TjCAoLOZhcg5FaNiKnlstMI5krQmau1Qnb/vGSNsE/UGms -1ts+QYPUs0KmGEAFUri2XzLy+aQo9Kw74VBvqnxvaaMeY5yMcKNOieY= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIIDjCCBfagAwIBAgIJAOiOtsn4KhQoMA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD -VQQGEwJVUzEQMA4GA1UECBMHSW5kaWFuYTEVMBMGA1UEBxMMSW5kaWFuYXBvbGlz -MSgwJgYDVQQKEx9Tb2Z0d2FyZSBpbiB0aGUgUHVibGljIEludGVyZXN0MRMwEQYD -VQQLEwpob3N0bWFzdGVyMR4wHAYDVQQDExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkx -JTAjBgkqhkiG9w0BCQEWFmhvc3RtYXN0ZXJAc3BpLWluYy5vcmcwHhcNMDgwNTEz -MDgwNzU2WhcNMTgwNTExMDgwNzU2WjCBvDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdh -cmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1hc3RlcjEe -MBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSUwIwYJKoZIhvcNAQkBFhZo -b3N0bWFzdGVyQHNwaS1pbmMub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEA3DbmR0LCxFF1KYdAw9iOIQbSGE7r7yC9kDyFEBOMKVuUY/b0LfEGQpG5 -GcRCaQi/izZF6igFM0lIoCdDkzWKQdh4s/Dvs24t3dHLfer0dSbTPpA67tfnLAS1 -fOH1fMVO73e9XKKTM5LOfYFIz2u1IiwIg/3T1c87Lf21SZBb9q1NE8re06adU1Fx -Y0b4ShZcmO4tbZoWoXaQ4mBDmdaJ1mwuepiyCwMs43pPx93jzONKao15Uvr0wa8u -jyoIyxspgpJyQ7zOiKmqp4pRQ1WFmjcDeJPI8L20QcgHQprLNZd6ioFl3h1UCAHx -ZFy3FxpRvB7DWYd2GBaY7r/2Z4GLBjXFS21ZGcfSxki+bhQog0oQnBv1b7ypjvVp -/rLBVcznFMn5WxRTUQfqzj3kTygfPGEJ1zPSbqdu1McTCW9rXRTunYkbpWry9vjQ -co7qch8vNGopCsUK7BxAhRL3pqXTT63AhYxMfHMgzFMY8bJYTAH1v+pk1Vw5xc5s -zFNaVrpBDyXfa1C2x4qgvQLCxTtVpbJkIoRRKFauMe5e+wsWTUYFkYBE7axt8Feo -+uthSKDLG7Mfjs3FIXcDhB78rKNDCGOM7fkn77SwXWfWT+3Qiz5dW8mRvZYChD3F -TbxCP3T9PF2sXEg2XocxLxhsxGjuoYvJWdAY4wCAs1QnLpnwFVMCAwEAAaOCAg8w -ggILMB0GA1UdDgQWBBQ0cdE41xU2g0dr1zdkQjuOjVKdqzCB8QYDVR0jBIHpMIHm -gBQ0cdE41xU2g0dr1zdkQjuOjVKdq6GBwqSBvzCBvDELMAkGA1UEBhMCVVMxEDAO -BgNVBAgTB0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMf -U29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1h -c3RlcjEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSUwIwYJKoZIhvcN -AQkBFhZob3N0bWFzdGVyQHNwaS1pbmMub3JnggkA6I62yfgqFCgwDwYDVR0TAQH/ -BAUwAwEB/zARBglghkgBhvhCAQEEBAMCAAcwCQYDVR0SBAIwADAuBglghkgBhvhC -AQ0EIRYfU29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDAwBglghkgBhvhC -AQQEIxYhaHR0cHM6Ly9jYS5zcGktaW5jLm9yZy9jYS1jcmwucGVtMDIGCWCGSAGG -+EIBAwQlFiNodHRwczovL2NhLnNwaS1pbmMub3JnL2NlcnQtY3JsLnBlbTAhBgNV -HREEGjAYgRZob3N0bWFzdGVyQHNwaS1pbmMub3JnMA4GA1UdDwEB/wQEAwIBBjAN -BgkqhkiG9w0BAQUFAAOCAgEAtM294LnqsgMrfjLp3nI/yUuCXp3ir1UJogxU6M8Y -PCggHam7AwIvUjki+RfPrWeQswN/2BXja367m1YBrzXU2rnHZxeb1NUON7MgQS4M -AcRb+WU+wmHo0vBqlXDDxm/VNaSsWXLhid+hoJ0kvSl56WEq2dMeyUakCHhBknIP -qxR17QnwovBc78MKYiC3wihmrkwvLo9FYyaW8O4x5otVm6o6+YI5HYg84gd1GuEP -sTC8cTLSOv76oYnzQyzWcsR5pxVIBcDYLXIC48s9Fmq6ybgREOJJhcyWR2AFJS7v -dVkz9UcZFu/abF8HyKZQth3LZjQl/GaD68W2MEH4RkRiqMEMVObqTFoo5q7Gt/5/ -O5aoLu7HaD7dAD0prypjq1/uSSotxdz70cbT0ZdWUoa2lOvUYFG3/B6bzAKb1B+P -+UqPti4oOxfMxaYF49LTtcYDyeFIQpvLP+QX4P4NAZUJurgNceQJcHdC2E3hQqlg -g9cXiUPS1N2nGLar1CQlh7XU4vwuImm9rWgs/3K1mKoGnOcqarihk3bOsPN/nOHg -T7jYhkalMwIsJWE3KpLIrIF0aGOHM3a9BX9e1dUCbb2v/ypaqknsmHlHU5H2DjRa -yaXG67Ljxay2oHA1u8hRadDytaIybrw/oDc5fHE2pgXfDBLkFqfF1stjo5VwP+YE -o2A= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx -ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g -RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw -MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH -QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j -b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j -b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H -KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm -VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR -SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT -cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ -6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu -MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS -kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB -BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f -BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv -c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH -AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO -BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG -OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU -A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o -0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX -RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH -qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV -U+4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh -bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu -Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g -QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe -BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX -DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE -YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC -ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv -2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q -N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO -r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN -f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH -U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU -TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb -VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg -SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv -biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg -MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw -AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv -ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu -Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd -IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv -bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1 -QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O -WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf -SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/README b/tests/vcore_tests/test-cases/keys/README deleted file mode 100644 index c7151d6..0000000 --- a/tests/vcore_tests/test-cases/keys/README +++ /dev/null @@ -1,2 +0,0 @@ -This directory contains certificate/public keys/private keys used to create unittests. -Passwort to private keys is "1234" or "secret". \ No newline at end of file diff --git a/tests/vcore_tests/test-cases/keys/filip_rsa_cert.pem b/tests/vcore_tests/test-cases/keys/filip_rsa_cert.pem deleted file mode 100644 index 0abebc6..0000000 --- a/tests/vcore_tests/test-cases/keys/filip_rsa_cert.pem +++ /dev/null @@ -1,62 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - c7:4a:82:f6:9d:1b:f6:7e - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=PL, ST=Maz, O=Samsung, OU=SPRC, CN=Samsung/emailAddress=samsung@samsung.com - Validity - Not Before: Oct 5 12:00:51 2011 GMT - Not After : Oct 2 12:00:51 2021 GMT - Subject: C=PL, ST=MAZ, L=Leg, O=Sam, OU=SPRC, CN=Filip/emailAddress=filip@samsung.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d2:fe:c4:b4:c1:74:82:6f:7e:28:8c:df:1b:58: - 57:78:3e:5f:5e:4c:b1:e1:d7:c5:0d:1a:c3:e9:2e: - 9a:78:8a:d7:5f:b9:cf:ce:83:2a:9a:4a:80:f0:07: - 35:61:11:60:15:2c:24:f1:7b:15:1a:e0:d7:2f:6b: - ee:35:35:b9:16:e1:10:ac:17:37:86:b3:49:2d:a6: - ed:7e:f1:0f:af:d1:01:0e:1a:a5:45:da:b4:24:82: - 29:73:0c:5f:e8:3b:9e:85:c7:0f:6f:1b:53:80:fa: - a7:50:77:7c:8e:01:5d:84:a8:b3:41:3e:b1:18:07: - d2:b9:18:5c:9f:7e:b6:a4:49 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - 7B:2C:B7:89:5E:F9:2A:D3:A4:A4:F1:5D:EA:69:D1:F5:D1:46:64:CC - X509v3 Authority Key Identifier: - keyid:82:08:7F:DB:00:02:86:E8:53:2A:A5:FA:58:AE:67:7F:14:38:C8:60 - - Signature Algorithm: sha1WithRSAEncryption - 0e:db:f4:08:1a:d0:d5:00:8c:1f:d8:ca:16:3a:52:a6:ae:f3: - 14:a3:17:41:e5:6d:6f:f6:62:7b:cd:b7:ff:fc:28:89:c8:3c: - 93:19:cf:e6:c4:b8:74:95:8d:5c:d6:f5:88:c2:dd:86:05:7c: - d2:0d:72:b7:78:13:58:fc:53:b4:5c:e9:ad:0c:8d:88:91:d3: - 9a:b6:cd:59:72:d7:d6:ba:11:54:65:04:fc:8f:10:e3:17:b1: - aa:96:cd:94:92:16:d8:98:e6:fe:4a:a8:29:f9:ca:c4:e4:46: - e8:73:4f:5d:95:76:f4:d6:36:7c:34:4f:3c:e2:18:a0:54:33: - ad:72 ------BEGIN CERTIFICATE----- -MIIC4zCCAkygAwIBAgIJAMdKgvadG/Z+MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV -BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT -BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA -c2Ftc3VuZy5jb20wHhcNMTExMDA1MTIwMDUxWhcNMjExMDAyMTIwMDUxWjB4MQsw -CQYDVQQGEwJQTDEMMAoGA1UECBMDTUFaMQwwCgYDVQQHEwNMZWcxDDAKBgNVBAoT -A1NhbTENMAsGA1UECxMEU1BSQzEOMAwGA1UEAxMFRmlsaXAxIDAeBgkqhkiG9w0B -CQEWEWZpbGlwQHNhbXN1bmcuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB -gQDS/sS0wXSCb34ojN8bWFd4Pl9eTLHh18UNGsPpLpp4itdfuc/OgyqaSoDwBzVh -EWAVLCTxexUa4Ncva+41NbkW4RCsFzeGs0ktpu1+8Q+v0QEOGqVF2rQkgilzDF/o -O56Fxw9vG1OA+qdQd3yOAV2EqLNBPrEYB9K5GFyffrakSQIDAQABo3sweTAJBgNV -HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp -Y2F0ZTAdBgNVHQ4EFgQUeyy3iV75KtOkpPFd6mnR9dFGZMwwHwYDVR0jBBgwFoAU -ggh/2wAChuhTKqX6WK5nfxQ4yGAwDQYJKoZIhvcNAQEFBQADgYEADtv0CBrQ1QCM -H9jKFjpSpq7zFKMXQeVtb/Zie823//woicg8kxnP5sS4dJWNXNb1iMLdhgV80g1y -t3gTWPxTtFzprQyNiJHTmrbNWXLX1roRVGUE/I8Q4xexqpbNlJIW2Jjm/kqoKfnK -xORG6HNPXZV29NY2fDRPPOIYoFQzrXI= ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/filip_rsa_key.pem b/tests/vcore_tests/test-cases/keys/filip_rsa_key.pem deleted file mode 100644 index 6d0f4d8..0000000 --- a/tests/vcore_tests/test-cases/keys/filip_rsa_key.pem +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,FDE9F633EA955697 - -ASWLPmOFfKlo46nJXTJLCkhvD/q1MsHXPaaSByVzaavXxwMxOc2g7VkIR2D0yViQ -mxQFhJLVeq/1UI9pXL2+zk0awptHogwjTw81r2I+R6qkHsSjGjl4Ds6hOX3J211K -UqO4+3kf6JJOizXbH/y6WWbj9jEJeE7zzmhuyq8k6Kp47leZsle5y13usii323tz -OgAzZGsQBSkrlBNKKM58O7TkCO6UbZLjVEoBqcJU+p+UiKoGKdUV/MxkbGEKTEPN -wrFiqIxSk9KuV5iDAjnYCPz6iQIE+Q3NOW+MTw0yjWoMb7uXJexGM6VYkYFZUffe -16nAzJpYbG+CsJ5XTiGoiodazloVYdnDFnbDLDGS2kLgiuuHzF/DL1lFlbXwgpGj -sXFp6CemJ+KnMz4aIfC63Wuav+jvAVw26pl/cYxbhboSkl+H9ZKbk+KcIeMN1Rb7 -LD35tsjO5rnQ1QlG0WP6qT6O1SPG/4GgJTyzTwuw6i8jQw62ahKB5hTri/Z8Fmrn -kFh8F7gTJ+YnxrQuTK8r9QrZrXsE/YqUbHtVEI/m/6uydWdFHNWzJxe6oavuwks2 -3mumh1101mBEuEClzOzHP925oeXW+N8R+jFnA/7NkIjeOo+J9Z+QzBiq6DVJcuEY -5aqXcCIS9AciUoh3/ovtT637r25nhYwCruZLZ+4+Vkpv9n/gPSipHXgHt2cynaID -6O7xyoADa+zY1zTRd+A4aA+SWd/bxvKe+6sc/6iBlKA8bKwfPJcwg7il4bX4g5dk -dI8gTyM9puDoHrdTaLwY8+JL0MCguEvkk7LDttNfN0gxYvxXTpZ+Tg== ------END RSA PRIVATE KEY----- diff --git a/tests/vcore_tests/test-cases/keys/magda_dsa_cert.pem b/tests/vcore_tests/test-cases/keys/magda_dsa_cert.pem deleted file mode 100644 index 0348db8..0000000 --- a/tests/vcore_tests/test-cases/keys/magda_dsa_cert.pem +++ /dev/null @@ -1,90 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - c7:4a:82:f6:9d:1b:f6:7f - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=PL, ST=Maz, O=Samsung, OU=SPRC, CN=Samsung/emailAddress=samsung@samsung.com - Validity - Not Before: Oct 5 12:11:33 2011 GMT - Not After : Oct 2 12:11:33 2021 GMT - Subject: C=PL, ST=Mazowieckie, L=legionowo, O=samsung, OU=sprc, CN=magda/emailAddress=magda@samsung.com - Subject Public Key Info: - Public Key Algorithm: dsaEncryption - DSA Public Key: - pub: - 00:ac:40:42:0e:cc:a8:28:24:0b:43:09:7e:d6:23: - 35:a2:8c:e6:7d:62:66:fe:23:d6:58:b8:f7:32:9f: - 63:99:d3:2c:ff:af:60:0b:e0:d2:8c:0b:35:8b:c9: - e6:77:0a:7d:8d:43:00:23:d4:e3:ff:ad:0b:b4:d3: - b9:af:79:c2:08:f9:af:0b:c0:5e:7c:e0:4b:23:86: - b9:2a:f4:7c:af:43:ca:b1:fa:13:42:df:5d:3f:96: - b8:84:07:6a:19:b6:89:26:f1:a8:fa:c2:86:59:e9: - e7:f1:17:0d:30:5a:3b:a4:1f:76:9a:b4:04:fe:3c: - 0a:56:5e:6f:17:00:f9:36:05 - P: - 00:b5:3c:23:9a:b0:58:65:7c:c7:35:ca:37:5c:a7: - bc:e4:cd:71:a2:5b:e3:29:56:e1:65:b1:d6:30:90: - 06:bd:b0:8b:cd:ad:02:e2:da:e9:71:72:73:41:78: - 21:ca:0d:b9:3b:53:e2:77:fd:0c:0e:d9:76:a7:6a: - 94:0c:52:ab:df:8d:f8:cb:d5:04:39:55:fe:c4:35: - 45:8f:34:fe:dc:12:fc:7c:d8:d6:f9:8d:67:47:c9: - 17:d5:ff:f4:dc:88:16:4d:f0:62:cd:11:b7:e1:b5: - 69:61:23:a0:9b:0d:6d:40:69:8d:27:3d:9f:3b:f6: - b4:88:93:bf:da:34:a6:77:15 - Q: - 00:b7:2b:f2:e4:00:9a:75:7e:dc:32:c8:03:99:d3: - a3:40:60:d1:b8:cb - G: - 24:6e:e6:79:4b:50:6c:cb:a5:44:c7:63:cd:e0:a8: - c9:ad:85:5d:d9:be:e1:a7:2f:22:71:3d:ff:e3:32: - 6d:74:c1:dd:b1:40:34:cc:b0:e9:64:ef:93:82:bd: - 44:af:2d:9b:9d:8d:f7:97:32:91:38:e9:01:bc:6a: - 4c:c6:97:c2:47:56:6c:e1:5d:54:a0:0a:9f:2c:62: - fd:42:ad:63:d4:3a:36:6c:09:07:68:5b:03:51:94: - ce:13:e4:a3:ca:c4:75:ae:ba:08:69:74:55:bc:8c: - d6:52:8c:26:30:3e:c2:9f:69:1b:5d:74:2f:4a:2f: - d7:d4:3d:7e:fa:8a:a7:95 - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - 99:2A:52:86:CC:2F:5A:D1:00:05:DF:A5:DD:6C:5C:71:17:02:C9:D5 - X509v3 Authority Key Identifier: - keyid:82:08:7F:DB:00:02:86:E8:53:2A:A5:FA:58:AE:67:7F:14:38:C8:60 - - Signature Algorithm: sha1WithRSAEncryption - 81:f9:c0:bb:f8:0c:25:10:bf:04:5c:24:82:fa:c7:2f:44:d5: - e1:f7:cf:54:07:fb:45:29:d9:4b:a8:9b:e0:81:c6:82:bb:d7: - 26:f2:fe:42:1e:ef:1f:29:2f:64:8a:83:d8:bf:7a:9d:8d:84: - 69:23:6b:d3:25:eb:4f:cd:58:44:e9:dd:39:05:09:37:1e:18: - fd:6f:26:e9:ab:2e:e2:1c:c0:34:d6:6a:58:26:c0:a4:f0:c8: - 30:ae:95:70:f0:35:c2:b2:a0:66:a6:d6:a7:6d:7c:58:1a:88: - da:ff:69:5d:5d:0e:fa:3a:73:c6:ad:7e:19:e4:15:d9:4b:1b: - 47:07 ------BEGIN CERTIFICATE----- -MIIEDzCCA3igAwIBAgIJAMdKgvadG/Z/MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV -BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT -BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA -c2Ftc3VuZy5jb20wHhcNMTExMDA1MTIxMTMzWhcNMjExMDAyMTIxMTMzWjCBijEL -MAkGA1UEBhMCUEwxFDASBgNVBAgTC01hem93aWVja2llMRIwEAYDVQQHEwlsZWdp -b25vd28xEDAOBgNVBAoTB3NhbXN1bmcxDTALBgNVBAsTBHNwcmMxDjAMBgNVBAMT -BW1hZ2RhMSAwHgYJKoZIhvcNAQkBFhFtYWdkYUBzYW1zdW5nLmNvbTCCAbcwggEr -BgcqhkjOOAQBMIIBHgKBgQC1PCOasFhlfMc1yjdcp7zkzXGiW+MpVuFlsdYwkAa9 -sIvNrQLi2ulxcnNBeCHKDbk7U+J3/QwO2XanapQMUqvfjfjL1QQ5Vf7ENUWPNP7c -Evx82Nb5jWdHyRfV//TciBZN8GLNEbfhtWlhI6CbDW1AaY0nPZ879rSIk7/aNKZ3 -FQIVALcr8uQAmnV+3DLIA5nTo0Bg0bjLAoGAJG7meUtQbMulRMdjzeCoya2FXdm+ -4acvInE9/+MybXTB3bFANMyw6WTvk4K9RK8tm52N95cykTjpAbxqTMaXwkdWbOFd -VKAKnyxi/UKtY9Q6NmwJB2hbA1GUzhPko8rEda66CGl0VbyM1lKMJjA+wp9pG110 -L0ov19Q9fvqKp5UDgYUAAoGBAKxAQg7MqCgkC0MJftYjNaKM5n1iZv4j1li49zKf -Y5nTLP+vYAvg0owLNYvJ5ncKfY1DACPU4/+tC7TTua95wgj5rwvAXnzgSyOGuSr0 -fK9DyrH6E0LfXT+WuIQHahm2iSbxqPrChlnp5/EXDTBaO6Qfdpq0BP48ClZebxcA -+TYFo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy -YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUmSpShswvWtEABd+l3WxccRcCydUw -HwYDVR0jBBgwFoAUggh/2wAChuhTKqX6WK5nfxQ4yGAwDQYJKoZIhvcNAQEFBQAD -gYEAgfnAu/gMJRC/BFwkgvrHL0TV4ffPVAf7RSnZS6ib4IHGgrvXJvL+Qh7vHykv -ZIqD2L96nY2EaSNr0yXrT81YROndOQUJNx4Y/W8m6asu4hzANNZqWCbApPDIMK6V -cPA1wrKgZqbWp218WBqI2v9pXV0O+jpzxq1+GeQV2UsbRwc= ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/magda_dsa_key.pem b/tests/vcore_tests/test-cases/keys/magda_dsa_key.pem deleted file mode 100644 index 7842af6..0000000 --- a/tests/vcore_tests/test-cases/keys/magda_dsa_key.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN DSA PRIVATE KEY----- -MIIBuwIBAAKBgQC1PCOasFhlfMc1yjdcp7zkzXGiW+MpVuFlsdYwkAa9sIvNrQLi -2ulxcnNBeCHKDbk7U+J3/QwO2XanapQMUqvfjfjL1QQ5Vf7ENUWPNP7cEvx82Nb5 -jWdHyRfV//TciBZN8GLNEbfhtWlhI6CbDW1AaY0nPZ879rSIk7/aNKZ3FQIVALcr -8uQAmnV+3DLIA5nTo0Bg0bjLAoGAJG7meUtQbMulRMdjzeCoya2FXdm+4acvInE9 -/+MybXTB3bFANMyw6WTvk4K9RK8tm52N95cykTjpAbxqTMaXwkdWbOFdVKAKnyxi -/UKtY9Q6NmwJB2hbA1GUzhPko8rEda66CGl0VbyM1lKMJjA+wp9pG110L0ov19Q9 -fvqKp5UCgYEArEBCDsyoKCQLQwl+1iM1oozmfWJm/iPWWLj3Mp9jmdMs/69gC+DS -jAs1i8nmdwp9jUMAI9Tj/60LtNO5r3nCCPmvC8BefOBLI4a5KvR8r0PKsfoTQt9d -P5a4hAdqGbaJJvGo+sKGWenn8RcNMFo7pB92mrQE/jwKVl5vFwD5NgUCFC0583uX -PgTY5e9pOTVpCwebt50S ------END DSA PRIVATE KEY----- diff --git a/tests/vcore_tests/test-cases/keys/ocsp_level0deprecated.crt b/tests/vcore_tests/test-cases/keys/ocsp_level0deprecated.crt deleted file mode 100644 index 67bfa31..0000000 --- a/tests/vcore_tests/test-cases/keys/ocsp_level0deprecated.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFVTCCBD2gAwIBAgIHBBrt1FojCzANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE -BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY -BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydGlm -aWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkxMDAuBgNVBAMTJ0dvIERhZGR5 -IFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTERMA8GA1UEBRMIMDc5Njky -ODcwHhcNMTAwNjA5MDIwNzU3WhcNMTEwNjE5MTEwNDM2WjBRMRUwEwYDVQQKEwwq -LnVidW50dS5jb20xITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRlZDEV -MBMGA1UEAxMMKi51YnVudHUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAu8VcCeGdREV3PYYQukyrfUAay8Ic3fMhA+YUKzqbH8UuPhcjjS3izxaT -vHLh7v80HS4DXYu6CqoQugZndV4R9KqJN1HVK5acar91VOeQgTSoowTSFtyg6aXJ -JVdEETyftGHSpS4WjyQZ9FazTfC47c5lJr+3wCZ90UaxaWpNERpMc2L4ZxG1wGCw -XYWVONtV817NecZVAiytvNPSmcnFm/OC/5GtzxNhfYmsNt1+MiC3IUFe2XnQwFhG -rvn9IcG2RhEKOOu55pHM08FcnDbfyegBkEDAmQbFIUM+tFUI7nkDNQWy/Mgzuqtg -DjydGu8h7BObEFrqXtUpm9CbTFZgzwIDAQABo4IBtjCCAbIwDwYDVR0TAQH/BAUw -AwEBADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH/BAQD -AgWgMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZ29kYWRkeS5jb20vZ2Rz -MS0xOS5jcmwwUwYDVR0gBEwwSjBIBgtghkgBhv1tAQcXATA5MDcGCCsGAQUFBwIB -FitodHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMIGA -BggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdvZGFkZHku -Y29tLzBKBggrBgEFBQcwAoY+aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv -bS9yZXBvc2l0b3J5L2dkX2ludGVybWVkaWF0ZS5jcnQwHwYDVR0jBBgwFoAU/axh -MpNsRdbi7oVfmrrndplozOcwIwYDVR0RBBwwGoIMKi51YnVudHUuY29tggp1YnVu -dHUuY29tMB0GA1UdDgQWBBTUVPFNlBiCNfPjhD8O8mDUv7MLUjANBgkqhkiG9w0B -AQUFAAOCAQEAUjuOqqu+vS0StsxVXj44hvPye1MC/MkanIrdce5BgYMc5a+8UJba -ay8h34vtsvfDsTifNY8ijDx79Hprh9V2LwfWWAiWK2SdrceIdGrxDvzmDHllO5YT -ig2XhAA7ll4toSnrUfsZmi/bgb1V6VNoq36xvK+riDGnPhc7tNDZZb1fBKE+nA1p -CZq80Liv1xri4Nj1YQ0kMQQnSHkUgEGg7bvtf+cNkIp3OXTNW8f7VFoaWVZNKW8c -cxNljypjJM+h7xXCG/YRKws8eCi+xpO1Oc41tnSvbCbc0B6+xwFjRx5tfja309QI -R2+uBFsmWtBCtn31o4CFNytEnwBOPVbZBA== ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/ocsp_level1.crt b/tests/vcore_tests/test-cases/keys/ocsp_level1.crt deleted file mode 100644 index b6276d4..0000000 --- a/tests/vcore_tests/test-cases/keys/ocsp_level1.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx -ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g -RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw -MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH -QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j -b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j -b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H -KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm -VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR -SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT -cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ -6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu -MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS -kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB -BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f -BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv -c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH -AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO -BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG -OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU -A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o -0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX -RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH -qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV -U+4= ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/ocsp_level2.crt b/tests/vcore_tests/test-cases/keys/ocsp_level2.crt deleted file mode 100644 index ec9fc33..0000000 --- a/tests/vcore_tests/test-cases/keys/ocsp_level2.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh -bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu -Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g -QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe -BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX -DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE -YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC -ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv -2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q -N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO -r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN -f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH -U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU -TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb -VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg -SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv -biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg -MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw -AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv -ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu -Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd -IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv -bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1 -QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O -WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf -SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw== ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/ocsp_rootca.crt b/tests/vcore_tests/test-cases/keys/ocsp_rootca.crt deleted file mode 100644 index 8417dc7..0000000 --- a/tests/vcore_tests/test-cases/keys/ocsp_rootca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/operator.root.cert.pem b/tests/vcore_tests/test-cases/keys/operator.root.cert.pem deleted file mode 100644 index 343241f..0000000 --- a/tests/vcore_tests/test-cases/keys/operator.root.cert.pem +++ /dev/null @@ -1,66 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 85:7d:e1:c5:d9:de:7a:1f - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=PL, ST=Mazowieckie, O=Samsung, OU=SPRC, CN=Operator Test Root Certificate/emailAddress=operator@samsung.com - Validity - Not Before: Jan 4 17:27:08 2011 GMT - Not After : Jan 3 17:27:08 2014 GMT - Subject: C=PL, ST=Mazowieckie, O=Samsung, OU=SPRC, CN=Operator Test Root Certificate/emailAddress=operator@samsung.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c3:39:17:a8:f9:d0:69:37:9a:56:44:39:67:10: - 14:a9:4b:a2:0b:c7:fc:a1:e8:e8:f7:1c:06:f4:9c: - 83:f7:37:07:9d:9c:2c:1b:46:43:5f:f1:7b:91:a8: - cd:c0:76:00:d5:9c:c9:28:f7:91:28:b6:97:ec:85: - b1:10:0f:58:2e:f6:6f:98:b6:ab:7b:ca:08:10:7f: - 55:32:bf:32:db:a7:c2:86:83:03:ee:41:0a:24:de: - 17:e3:9d:8f:5b:fa:46:70:78:98:b4:c1:14:77:44: - ab:59:7c:4c:d3:4a:f7:54:f2:30:0d:38:73:95:9f: - 21:0e:a9:86:3e:fc:82:4e:0b - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - 25:A5:90:9F:4D:3A:A4:19:0A:80:46:5E:F3:FB:20:CE:56:30:33:DA - X509v3 Authority Key Identifier: - keyid:25:A5:90:9F:4D:3A:A4:19:0A:80:46:5E:F3:FB:20:CE:56:30:33:DA - DirName:/C=PL/ST=Mazowieckie/O=Samsung/OU=SPRC/CN=Operator Test Root Certificate/emailAddress=operator@samsung.com - serial:85:7D:E1:C5:D9:DE:7A:1F - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha1WithRSAEncryption - b9:d7:72:49:09:d8:6f:61:94:51:40:9d:c3:d3:23:53:97:b8: - 12:ee:cb:dd:57:e6:1f:a2:76:38:5d:42:51:bd:a9:30:19:f7: - 67:5b:a8:67:4a:9e:a1:f0:a9:22:14:94:77:32:27:79:37:9c: - 0a:0f:52:80:14:62:00:94:45:85:3b:fd:ad:b4:c3:20:45:ba: - b7:91:1a:9e:38:51:0f:9b:d5:ce:74:c7:bd:4a:21:9a:2d:b5: - 71:0b:42:d2:95:72:66:fe:eb:11:ad:62:44:6c:32:4e:b4:00: - 37:d7:b8:d5:4b:f6:74:36:78:d6:ae:66:b3:ca:6e:42:ff:cb: - c2:e6 ------BEGIN CERTIFICATE----- -MIIDnzCCAwigAwIBAgIJAIV94cXZ3nofMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYD -VQQGEwJQTDEUMBIGA1UECBMLTWF6b3dpZWNraWUxEDAOBgNVBAoTB1NhbXN1bmcx -DTALBgNVBAsTBFNQUkMxJzAlBgNVBAMTHk9wZXJhdG9yIFRlc3QgUm9vdCBDZXJ0 -aWZpY2F0ZTEjMCEGCSqGSIb3DQEJARYUb3BlcmF0b3JAc2Ftc3VuZy5jb20wHhcN -MTEwMTA0MTcyNzA4WhcNMTQwMTAzMTcyNzA4WjCBkjELMAkGA1UEBhMCUEwxFDAS -BgNVBAgTC01hem93aWVja2llMRAwDgYDVQQKEwdTYW1zdW5nMQ0wCwYDVQQLEwRT -UFJDMScwJQYDVQQDEx5PcGVyYXRvciBUZXN0IFJvb3QgQ2VydGlmaWNhdGUxIzAh -BgkqhkiG9w0BCQEWFG9wZXJhdG9yQHNhbXN1bmcuY29tMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDDOReo+dBpN5pWRDlnEBSpS6ILx/yh6Oj3HAb0nIP3Nwed -nCwbRkNf8XuRqM3AdgDVnMko95EotpfshbEQD1gu9m+Ytqt7yggQf1UyvzLbp8KG -gwPuQQok3hfjnY9b+kZweJi0wRR3RKtZfEzTSvdU8jANOHOVnyEOqYY+/IJOCwID -AQABo4H6MIH3MB0GA1UdDgQWBBQlpZCfTTqkGQqARl7z+yDOVjAz2jCBxwYDVR0j -BIG/MIG8gBQlpZCfTTqkGQqARl7z+yDOVjAz2qGBmKSBlTCBkjELMAkGA1UEBhMC -UEwxFDASBgNVBAgTC01hem93aWVja2llMRAwDgYDVQQKEwdTYW1zdW5nMQ0wCwYD -VQQLEwRTUFJDMScwJQYDVQQDEx5PcGVyYXRvciBUZXN0IFJvb3QgQ2VydGlmaWNh -dGUxIzAhBgkqhkiG9w0BCQEWFG9wZXJhdG9yQHNhbXN1bmcuY29tggkAhX3hxdne -eh8wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQC513JJCdhvYZRRQJ3D -0yNTl7gS7svdV+YfonY4XUJRvakwGfdnW6hnSp6h8KkiFJR3Mid5N5wKD1KAFGIA -lEWFO/2ttMMgRbq3kRqeOFEPm9XOdMe9SiGaLbVxC0LSlXJm/usRrWJEbDJOtAA3 -17jVS/Z0NnjWrmazym5C/8vC5g== ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/operator.second.cert.pem b/tests/vcore_tests/test-cases/keys/operator.second.cert.pem deleted file mode 100644 index f062d94..0000000 --- a/tests/vcore_tests/test-cases/keys/operator.second.cert.pem +++ /dev/null @@ -1,64 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 85:7d:e1:c5:d9:de:7a:20 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=PL, ST=Mazowieckie, O=Samsung, OU=SPRC, CN=Operator Test Root Certificate/emailAddress=operator@samsung.com - Validity - Not Before: Jan 4 17:34:31 2011 GMT - Not After : Jan 4 17:34:31 2012 GMT - Subject: C=PL, ST=Malopolskie, L=Krakow, O=Samsung, OU=N/A, CN=Operator Test Second Level Certificate/emailAddress=second.operator@samsung.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ba:3c:58:ca:87:1e:59:68:54:8a:54:34:43:61: - f1:81:e6:35:c1:46:74:16:c7:ff:f9:15:9e:0c:5a: - 6a:89:c1:13:0c:61:2e:ba:00:e0:71:ea:7e:31:ae: - 4e:ef:93:58:51:98:97:f3:bf:8a:9b:b2:c1:b7:0c: - 5f:3f:56:b3:13:3b:d0:80:be:04:66:89:84:50:ca: - fe:f6:f7:6b:05:3b:30:4e:96:9c:5b:c5:80:bc:d6: - be:6e:69:f4:b9:9b:4c:06:7a:ed:37:67:b2:fe:45: - 69:57:62:54:cb:69:69:48:b9:7d:a0:42:f1:b6:dc: - f2:7f:eb:75:2a:d4:83:69:b9 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - D9:F3:11:BF:98:5A:60:12:7A:85:B5:E7:A7:38:4F:CF:51:1D:C6:B2 - X509v3 Authority Key Identifier: - keyid:25:A5:90:9F:4D:3A:A4:19:0A:80:46:5E:F3:FB:20:CE:56:30:33:DA - - Signature Algorithm: sha1WithRSAEncryption - 69:6c:26:81:51:91:a6:e6:11:dc:81:35:03:73:85:4f:2f:29: - 1f:20:f2:23:54:82:ca:8f:b8:a6:e3:3f:cd:72:5e:d7:e7:f5: - 84:8a:33:e2:51:9f:36:4b:30:85:f4:4f:87:c7:9a:69:0b:15: - 6e:92:c7:1f:2f:58:a4:57:f8:c2:cd:59:6c:d2:11:63:ae:bb: - b0:32:3f:09:e7:2e:ad:db:1b:fe:e7:a4:21:43:47:76:e1:de: - 36:bb:26:3f:16:76:20:ed:a4:68:c1:48:ae:2b:95:fb:f6:d2: - f2:7f:74:f6:83:e2:89:06:b5:89:54:6e:7f:cf:88:94:66:e8: - da:32 ------BEGIN CERTIFICATE----- -MIIDPjCCAqegAwIBAgIJAIV94cXZ3nogMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYD -VQQGEwJQTDEUMBIGA1UECBMLTWF6b3dpZWNraWUxEDAOBgNVBAoTB1NhbXN1bmcx -DTALBgNVBAsTBFNQUkMxJzAlBgNVBAMTHk9wZXJhdG9yIFRlc3QgUm9vdCBDZXJ0 -aWZpY2F0ZTEjMCEGCSqGSIb3DQEJARYUb3BlcmF0b3JAc2Ftc3VuZy5jb20wHhcN -MTEwMTA0MTczNDMxWhcNMTIwMTA0MTczNDMxWjCBsTELMAkGA1UEBhMCUEwxFDAS -BgNVBAgTC01hbG9wb2xza2llMQ8wDQYDVQQHEwZLcmFrb3cxEDAOBgNVBAoTB1Nh -bXN1bmcxDDAKBgNVBAsTA04vQTEvMC0GA1UEAxMmT3BlcmF0b3IgVGVzdCBTZWNv -bmQgTGV2ZWwgQ2VydGlmaWNhdGUxKjAoBgkqhkiG9w0BCQEWG3NlY29uZC5vcGVy -YXRvckBzYW1zdW5nLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAujxY -yoceWWhUilQ0Q2HxgeY1wUZ0Fsf/+RWeDFpqicETDGEuugDgcep+Ma5O75NYUZiX -87+Km7LBtwxfP1azEzvQgL4EZomEUMr+9vdrBTswTpacW8WAvNa+bmn0uZtMBnrt -N2ey/kVpV2JUy2lpSLl9oELxttzyf+t1KtSDabkCAwEAAaN7MHkwCQYDVR0TBAIw -ADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUw -HQYDVR0OBBYEFNnzEb+YWmASeoW156c4T89RHcayMB8GA1UdIwQYMBaAFCWlkJ9N -OqQZCoBGXvP7IM5WMDPaMA0GCSqGSIb3DQEBBQUAA4GBAGlsJoFRkabmEdyBNQNz -hU8vKR8g8iNUgsqPuKbjP81yXtfn9YSKM+JRnzZLMIX0T4fHmmkLFW6Sxx8vWKRX -+MLNWWzSEWOuu7AyPwnnLq3bG/7npCFDR3bh3ja7Jj8WdiDtpGjBSK4rlfv20vJ/ -dPaD4okGtYlUbn/PiJRm6Noy ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/operator.second.key.pem b/tests/vcore_tests/test-cases/keys/operator.second.key.pem deleted file mode 100644 index ab1214a..0000000 --- a/tests/vcore_tests/test-cases/keys/operator.second.key.pem +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,44C051D8935528BB - -iISuf9ELdyP5M0vlWOK4msH09HRAhN+43qRu/RDznpsTs2lX2sJITXXEmJC4EJzS -Zk4jf3ScTj1JsMGlg5k0mZWLmDb4kUxTRVUqJX2W4uUYEmWav7LQHRAsPwNUSMs3 -DzZabSf1vplnKKoL9mMtX4E0mj79AkJp7tARQu4Zn2FDMg/UnCErzhGeoFysztmM -v0Biyrf8yTbatMMr7Ea6rIsKS8KbkEeYDk4LpxBXkMeOutnnUUdhUEXZ/mwgJq2e -+8LLPiWdFsrGxPdub7iuLXidXSpOd9VaC9LN/ORKF+EiJtF+twWSBotxYOtwmtgj -xUHfXBcbaFoPnLKNS0nxwsOHF07LUfsCHzfVm1uGyWFkkLrPfcSjb6PahFlfO6w5 -fv8HnUOgeAjlhK6X+xhmw1tpwMUlmcYmq31eC8rwxP59jNQbhH6GVr5+rEMRHNgp -loC1WqthoRtBEC0bi99VpIHVIepe9G+p40sIropoUWftfDSLl3RtONg5GyyZWQ4a -ROxsiLHDZ7+q8eKkJuYPkiZ61/5MHuOsH5k57PG7ppG6/0p+ED4bTwxxDb6PU4pA -08xUTZQ0CUn1x80o/lKw+1E9TJOTbCvrEJAnMksfOkNkNyedgDJaxfV63wYvnL4+ -BLzCqa6djpe0Mg2olQieV/piRUt7JaGA7bnaMAn+bJ56PzUnMl0/WlxzGTMtHjkf -zUqgLLdxZpJP7zl4XleSfRWlPgL1iN1s84x48ej+MGgOGi7xTgX/sfCLkN4No/8k -c5Po+lQU261XAYNuAjtjUFQP/FgIMM9CnJrDWp8xHZXUJBo0c5lOKg== ------END RSA PRIVATE KEY----- diff --git a/tests/vcore_tests/test-cases/keys/operator.second.p12 b/tests/vcore_tests/test-cases/keys/operator.second.p12 deleted file mode 100644 index 2add1dfa463581ac67177f943e0c60fcca843769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2043 zcmY*Zdpr~D9^Ym*W0pe3TTEfD*~lf=66P9KSdvs!L+*sEwz)Qy>zhl|$R*|yDUoYQ zkz1R>HeqskLxkdO=&bWO=XBmbzMt>q_j{hdp6839Lf1h+Aq*AT0)eR~+9a-v1ED}V z6tcri2mmWI1qwCfJM&BD~4WRvkE{U z5dfJA1}x~ge^hdObiup=OrB$+uuU?D7bi?@7H2XF6nvZ-@4NQ(<)Qk4%>{$eAw)1p zbp)4e?ai#M9wJPk4FjUkM-Xn2)^JbHS3&V~SI-}t=lHGCCuyRYUVh5_(O?S+d)M00 z;oG!_?!q_M3PbuCu`rYRI}?(~U@aZIT65*h_{l_-k%q&|8H)D84@ow_v_HP@sz(7m{*$UXGfYN=eYx+)2EC<1npfGi=h)75Y?b75x7E;}t}v*!vlwrd zb(1*aX&Zzelf^LM{5)-kcE^_}%93V{^0}jMn=>=TABgZjv3cDk6B_|6Mm8aHZ8iMv z^HdzJ3nxzzy3$0OWE=^pdlE4BaFo8eooh0(xw3%4wV%nJ$&#A9&PtYxRlj=U$VQhB zjXkGnvamGX7#3|Gb+2yivSW4LV^RvTR5YKETkN&ff8$#Poz#%Nm=S0wx)LNkI1+xs zSJOx2@Zf``@a?aM2Sr!Armhg;?}x=Ck7f-jqJJJ8BFzm3BaFAgKi{WUkV^$`}{LYqldXnf+4sCNzCB4-U!cbrNXBX>sc` zVkEwkvgvi?)VZP0wwYGPlenbdAfFX7fp&5~C!oz~rsYoF&rkcV8*1zVKVukXeRhD`DB7W9sQbO?E(EvR zlipM>RVZrvh*xLVO1@uXltO#q6@4H)BuRGMD5s+f#Z6$qgH@C%5$GHpf2N+stpQ~( zrI&ECLJfD(!jgV_YMd|kk(-cwLEs7xEX@U0zMedyUb-vrTcCJn1^oKH?GMBLlYaZ> z)Un1{nh~bik%b0nxASekusB_9ld~DjEJ9oJ$JORb+mK2fcxqurx9&v|t$Fw3e2V7{ z6KLf$T*7!vTIIP~l%1U}xl21o2qMHD+d14TX_^>f}S!zdjiE*zz) zhEJMa=Hlmol&qpD_tuz%CcOrePh*!PE0!_qu!?WD?$xv@@Lt*k0_Bq*96XL39=r1; zXnFp6y4NU7zaCa6lz4eNNFCgf^C8uZKm&3;?L2u#d;o@sp$fVGUt!RxLN;Kkkfk6# zEPx3_?7#IP3Ix%qAVKwjivH0mLcdzY6R}_FU8i~OuT}w5L1bbZ>MipRvrF3ZWq=em z&7xzVBVCh5a_N+-Wb`~oF86{h-7<(PX(yu3?7kT9ed*24D^dGOtJPVLBmFhd-=lRR z_)z^#_A0@QjI3)N#Pu5KFB>H8cBZwWo6i@HErTaigf*Wr3+`O?@2RTeh4QW`HjInB znP&KD$GnSiK5fNo2+`3t&ye{R{MKySzpAv{8)LAt6(Tk8`YQ4)?1wDXCilQ7a!9rP za{t*sSvyLG#Z3+E>QRMC#!oA55Mm_S0v^y8OIu=!)s-Rs3Q8)oe>u0X6Y&=PHIO%! z>8P(bZnwM^t*KX5*4pC+(xRuc2UCzCxDl} zYf?rt#}OMLoeCXesv}A5szn-$#_#3cz2@hxeor4RuMuN^Ntox6*&sx5qctZd=#=-q zLtvul2;+2;h_GE2G%-tK?PHznXO4r%T>{kjZ}rhW{Pd2ksB^65)>kQPp`nSaKKvm{ z@tY^+dzst=(tBSx;%dtoq%!UI2aRsBof4KhG?8be8uvB-v8%u|(xTaXHl^GZw zZ#*|WL6^V>Me?{+-w*46=nJt_;OK=O>^P@M*%K%v3UaNXYFIW37@ppTXswa}e5|#kp zD2rGM6|?_;&l)C;-3^vP>)^!PQL`n^Ao13MpMh5Ka(ikqr+zO0Gt590AD~T z;4B~<5F}s}AWY!T3v?jBN8kbkE>eI1fj%MNFu@)Qa8#f|1&Ro`Ai(*5pZ3LIF^U)% vL|6kM1dXx>p?B1Lw&a#HwUJ0;BIjpvXX_Yeb>+k#vvdo-i diff --git a/tests/vcore_tests/test-cases/keys/root_cacert.pem b/tests/vcore_tests/test-cases/keys/root_cacert.pem deleted file mode 100644 index 7aa429f..0000000 --- a/tests/vcore_tests/test-cases/keys/root_cacert.pem +++ /dev/null @@ -1,64 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - c7:4a:82:f6:9d:1b:f6:7d - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=PL, ST=Maz, O=Samsung, OU=SPRC, CN=Samsung/emailAddress=samsung@samsung.com - Validity - Not Before: Oct 5 11:52:36 2011 GMT - Not After : Oct 4 11:52:36 2014 GMT - Subject: C=PL, ST=Maz, O=Samsung, OU=SPRC, CN=Samsung/emailAddress=samsung@samsung.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:93:c2:12:8b:3e:b1:69:fe:c8:7e:f1:fa:b0:03: - d7:bd:25:03:bb:14:70:ab:65:ff:8f:e9:38:14:2b: - 92:02:d9:e7:b4:78:60:a0:ce:b1:b8:b6:78:c5:af: - b3:83:3c:47:58:3d:1e:a0:78:69:4d:56:dd:8c:d8: - 20:27:b2:0d:9f:bf:f1:d4:e1:39:0f:1b:6f:b8:cd: - ca:f4:0b:fd:d7:cb:64:09:c7:6d:1e:e8:dd:89:43: - 7f:72:85:3d:9a:54:6e:7c:55:a0:da:f5:e9:28:01: - ec:3a:da:5a:18:45:fc:28:b1:0e:43:2c:4c:26:5c: - ca:bc:44:d9:ce:7d:5a:f2:f3 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - 82:08:7F:DB:00:02:86:E8:53:2A:A5:FA:58:AE:67:7F:14:38:C8:60 - X509v3 Authority Key Identifier: - keyid:82:08:7F:DB:00:02:86:E8:53:2A:A5:FA:58:AE:67:7F:14:38:C8:60 - DirName:/C=PL/ST=Maz/O=Samsung/OU=SPRC/CN=Samsung/emailAddress=samsung@samsung.com - serial:C7:4A:82:F6:9D:1B:F6:7D - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha1WithRSAEncryption - 0f:cb:a3:cd:25:02:00:17:a9:c5:21:4a:6e:bb:ce:d9:14:74: - 23:29:c5:47:ff:02:91:5a:ee:a1:53:a7:e4:69:6f:f2:00:bc: - 09:87:80:f8:3b:a5:51:59:e9:20:1f:1d:5d:cb:91:eb:91:1e: - f4:79:bf:35:68:a5:ed:24:e5:28:dd:c9:1f:bf:53:f7:75:77: - 6c:fe:94:0c:de:9c:d9:8e:42:c6:7d:61:6b:5d:5d:ad:a7:6a: - e4:9b:53:2a:f7:85:9c:51:1d:72:5d:5c:2f:eb:f9:ff:80:4c: - 6d:46:e8:a0:2c:8a:6f:94:13:b2:00:47:2c:b0:b0:1c:12:fc: - a0:65 ------BEGIN CERTIFICATE----- -MIIDOjCCAqOgAwIBAgIJAMdKgvadG/Z9MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV -BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT -BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA -c2Ftc3VuZy5jb20wHhcNMTExMDA1MTE1MjM2WhcNMTQxMDA0MTE1MjM2WjByMQsw -CQYDVQQGEwJQTDEMMAoGA1UECBMDTWF6MRAwDgYDVQQKEwdTYW1zdW5nMQ0wCwYD -VQQLEwRTUFJDMRAwDgYDVQQDEwdTYW1zdW5nMSIwIAYJKoZIhvcNAQkBFhNzYW1z -dW5nQHNhbXN1bmcuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTwhKL -PrFp/sh+8fqwA9e9JQO7FHCrZf+P6TgUK5IC2ee0eGCgzrG4tnjFr7ODPEdYPR6g -eGlNVt2M2CAnsg2fv/HU4TkPG2+4zcr0C/3Xy2QJx20e6N2JQ39yhT2aVG58VaDa -9ekoAew62loYRfwosQ5DLEwmXMq8RNnOfVry8wIDAQABo4HXMIHUMB0GA1UdDgQW -BBSCCH/bAAKG6FMqpfpYrmd/FDjIYDCBpAYDVR0jBIGcMIGZgBSCCH/bAAKG6FMq -pfpYrmd/FDjIYKF2pHQwcjELMAkGA1UEBhMCUEwxDDAKBgNVBAgTA01hejEQMA4G -A1UEChMHU2Ftc3VuZzENMAsGA1UECxMEU1BSQzEQMA4GA1UEAxMHU2Ftc3VuZzEi -MCAGCSqGSIb3DQEJARYTc2Ftc3VuZ0BzYW1zdW5nLmNvbYIJAMdKgvadG/Z9MAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAD8ujzSUCABepxSFKbrvO2RR0 -IynFR/8CkVruoVOn5Glv8gC8CYeA+DulUVnpIB8dXcuR65Ee9Hm/NWil7STlKN3J -H79T93V3bP6UDN6c2Y5Cxn1ha11dradq5JtTKveFnFEdcl1cL+v5/4BMbUbooCyK -b5QTsgBHLLCwHBL8oGU= ------END CERTIFICATE----- diff --git a/tests/vcore_tests/test-cases/keys/root_cakey.pem b/tests/vcore_tests/test-cases/keys/root_cakey.pem deleted file mode 100644 index ff33c13..0000000 --- a/tests/vcore_tests/test-cases/keys/root_cakey.pem +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,D2942E015452A445 - -0M/tC+qVDqyhNsxZZB/dGLuNxsStSUA7TRDRiSBee9JsvcFZjq03D/VjBakNIeET -6efmKfAngomfvrWtxhped3RI4vasX05swfnr4qiUKjLPyftmNEepbNGeI8MaiD7a -fEOZuAacstyS5RMHRBXrktq+jtXW2meQTuvEMBJf1AeAIuaFNvr3OvvpCtDwRffi -1ijUVuG0ZQ6MpP7cGeqLYUZ9StTMxeiEesAPM4YrG7HIY13KaHwMr1ZRtENe7qZ8 -R8vwgW188FYkSSrcQjCVEuj/ztTg9eVuSKdTNgjfKzTWnlrjAzi8CKBsrkYoarwS -6Rv3TqVVnx4HHdo9RIUKZPeLOdcMD1OPK7aOUedPTAcht3Y7SQQphBQypLf6PLKB -DCo79B4TUA1W9MijT2d2GN7oJHqHax8zO2j+yCLkEcHF32JZsEFE63Bwss72FXMg -mTmpCwyzR+oN93687JDUBAP9zNVd76ZnpzwlMZirB6QTY/lrH+iXLH3R3PO6cl2R -0Jei4IQ1oB+SX6GOPt4tKGTqktUFhsJYbXyifj4O1ZyDVYTp0JafOLxJfU33oYTm -278yshFdyHRgfKIHvqctZ1xJN2ioVcWf+9DprHc5kGb6wUKRVfQpipTS2hgbMBz+ -UWRZWq+CUD5QkTz4cSQfhPWQF6TNWpTQc0dvAlo3Cmxrro1PriDItsCOeydeNWvn -Dyynx7ODp/F1rX5ekaXkVxsdGgD/HuNF+c7tEytD7U4/CmevytuXRIrFM0alj2OE -aBFTqKicBoKgDV9VUOTKwuFeNV7MSuVDUnngEBeYrinwGa7wuV7tzA== ------END RSA PRIVATE KEY----- diff --git a/tests/vcore_tests/test-cases/widgets/access_info.wgt b/tests/vcore_tests/test-cases/widgets/access_info.wgt deleted file mode 100644 index 81239b763389360bdba070756335ea423562b1d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 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 R0L=Su`90NCP5Jxj{{hG+c4q(p diff --git a/tests/vcore_tests/test-cases/widgets/not_allowed.wgt b/tests/vcore_tests/test-cases/widgets/not_allowed.wgt deleted file mode 100644 index 30f1999fbdda6926ebc1dd98a39dec76d56c9b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 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 diff --git a/tests/vcore_tests/test-cases/widgets/recognized1.wgt b/tests/vcore_tests/test-cases/widgets/recognized1.wgt deleted file mode 100644 index cacf5500c37757ff2d9d248efdb0ec3529a26280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21140 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 F{sDHI64?L% diff --git a/tests/vcore_tests/test-cases/widgets/save_cert.wgt b/tests/vcore_tests/test-cases/widgets/save_cert.wgt deleted file mode 100644 index 8aa3ab02b4d9755af430c38c30a4b9df6379550e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19747 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

usJrHSKG)2U{QEvio6y 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 Bv9bUF diff --git a/tests/vcore_tests/vcore_tests.cpp b/tests/vcore_tests/vcore_tests.cpp deleted file mode 100644 index 97df6c8..0000000 --- a/tests/vcore_tests/vcore_tests.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file main.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of main - */ -#include -#include - -#include - -#include -#include - -#include -using namespace LoopControl; - -void init_cb (WrtErrStatus status, void* data) -{ - (void) status; - (void) data; - LogInfo("Init Succesfull"); - finish_wait_for_wrt_init(); -} - -int main (int argc, char *argv[]) -{ - init_loop(argc, argv); - LogInfo("Initializing WRT"); - wrt_installer_init_for_tests(NULL, &init_cb); - wrt_init(NULL, &init_cb); - - wait_for_wrt_init(); - LogInfo("Starting tests"); - - int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); - - wrt_installer_shutdown_for_tests(); - wrt_shutdown(); - quit_loop(); - return status; -} - diff --git a/tests/w3c_tests/CMakeLists.txt b/tests/w3c_tests/CMakeLists.txt deleted file mode 100644 index 59af809..0000000 --- a/tests/w3c_tests/CMakeLists.txt +++ /dev/null @@ -1,433 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) -# @author Pawel Sikorski (p.sikorski@samsung.com) -# @version 1.0 -# @brief -# -SET(TARGET_W3C_TEST "wrt-tests-w3c") - -# Set DPL tests sources -SET(W3C_TESTS_SOURCES - ${PROJECT_SOURCE_DIR}/tests/w3c_tests/w3c_tests.cpp - ${PROJECT_SOURCE_DIR}/tests/w3c_tests/TestCases.cpp - ${PROJECT_SOURCE_DIR}/tests/w3c_tests/W3CTestBase.cpp - ${PROJECT_SOURCE_DIR}/tests/w3c_tests/InstallerWrapper.cpp - ) - -PKG_CHECK_MODULES(W3CTEST_LIBS - dpl-test-efl - dpl-utils-efl - dpl-wrt-dao-ro - REQUIRED) - -ADD_EXECUTABLE("${TARGET_W3C_TEST}" - ${W3C_TESTS_SOURCES} - ) - -INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/src/localization - ${CMAKE_SOURCE_DIR}/src/common - ${W3CTEST_LIBS_INCLUDE_DIRS} - ) -LINK_DIRECTORIES( - ${W3CTEST_LIBS_LIBRARY_DIRS} - ) -TARGET_LINK_LIBRARIES(${TARGET_W3C_TEST} - ${W3CTEST_LIBS_LIBRARIES} - ${TARGET_LOCALIZATION_LIB} - ${TARGET_PROFILING_LIB} - ) -WRT_TEST_INSTALL(${TARGET_W3C_TEST}) - -SET(TESTS_DIR ${PROJECT_SOURCE_DIR}/tests/w3c_tests/test-cases/ ) - -INSTALL(FILES - ${TESTS_DIR}/ta-qxLSCRCHlN/000/dk.wgt - ${TESTS_DIR}/i18n-lro/017/i18nlro17.wgt - ${TESTS_DIR}/i18n-lro/033/i18nlro33.wgt - ${TESTS_DIR}/i18n-lro/006/i18nlro06.wgt - ${TESTS_DIR}/i18n-lro/021/i18nlro21.wgt - ${TESTS_DIR}/i18n-lro/037/i18nlro37.wgt - ${TESTS_DIR}/i18n-lro/012/i18nlro12.wgt - ${TESTS_DIR}/i18n-lro/031/i18nlro31.wgt - ${TESTS_DIR}/i18n-lro/043/i18nlro43.wgt - ${TESTS_DIR}/i18n-lro/015/i18nlro15.wgt - ${TESTS_DIR}/i18n-lro/026/i18nlro26.wgt - ${TESTS_DIR}/i18n-lro/029/i18nlro29.wgt - ${TESTS_DIR}/i18n-lro/042/i18nlro42.wgt - ${TESTS_DIR}/i18n-lro/040/i18nlro40.wgt - ${TESTS_DIR}/i18n-lro/044/i18nlro44.wgt - ${TESTS_DIR}/i18n-lro/022/i18nlro22.wgt - ${TESTS_DIR}/i18n-lro/002/i18nlro02.wgt - ${TESTS_DIR}/i18n-lro/036/i18nlro36.wgt - ${TESTS_DIR}/i18n-lro/035/i18nlro35.wgt - ${TESTS_DIR}/i18n-lro/027/i18nlro27.wgt - ${TESTS_DIR}/i18n-lro/028/i18nlro28.wgt - ${TESTS_DIR}/i18n-lro/016/i18nlro16.wgt - ${TESTS_DIR}/i18n-lro/013/i18nlro13.wgt - ${TESTS_DIR}/i18n-lro/005/i18nlro05.wgt - ${TESTS_DIR}/i18n-lro/038/i18nlro38.wgt - ${TESTS_DIR}/i18n-lro/010/i18nlro10.wgt - ${TESTS_DIR}/i18n-lro/020/i18nlro20.wgt - ${TESTS_DIR}/i18n-lro/019/i18nlro19.wgt - ${TESTS_DIR}/i18n-lro/041/i18nlro41.wgt - ${TESTS_DIR}/i18n-lro/004/i18nlro04.wgt - ${TESTS_DIR}/i18n-lro/014/i18nlro14.wgt - ${TESTS_DIR}/i18n-lro/011/i18nlro11.wgt - ${TESTS_DIR}/i18n-lro/001/i18nlro01.wgt - ${TESTS_DIR}/i18n-lro/023/i18nlro23.wgt - ${TESTS_DIR}/i18n-lro/039/i18nlro39.wgt - ${TESTS_DIR}/i18n-lro/007/i18nlro07.wgt - ${TESTS_DIR}/i18n-lro/003/i18nlro03.wgt - ${TESTS_DIR}/i18n-lro/030/i18nlro30.wgt - ${TESTS_DIR}/i18n-lro/008/i18nlro08.wgt - ${TESTS_DIR}/i18n-lro/018/i18nlro18.wgt - ${TESTS_DIR}/i18n-lro/009/i18nlro09.wgt - ${TESTS_DIR}/i18n-lro/032/i18nlro32.wgt - ${TESTS_DIR}/i18n-lro/034/i18nlro34.wgt - ${TESTS_DIR}/ta-RRZxvvTFHx/000/b5.wgt - ${TESTS_DIR}/ta-RRZxvvTFHx/001/b6.wgt - ${TESTS_DIR}/ta-roCaKRxZhS/000/d2.wgt - ${TESTS_DIR}/ta-paWbGHyVrG/000/d4.wgt - ${TESTS_DIR}/ta-rZdcMBExBX/000/df.wgt - ${TESTS_DIR}/ta-rZdcMBExBX/002/ha.wgt - ${TESTS_DIR}/ta-rZdcMBExBX/001/dr.wgt - ${TESTS_DIR}/ta-LTUJGJFCOU/000/d7.wgt - ${TESTS_DIR}/ta-LTUJGJFCOU/002/gb.wgt - ${TESTS_DIR}/ta-LTUJGJFCOU/001/d8.wgt - ${TESTS_DIR}/ta-MFcsScFEaC/000/d3.wgt - ${TESTS_DIR}/ta-KNiLPOKdgQ/000/e1.wgt - ${TESTS_DIR}/ta-luyKMFABLX/000/d5.wgt - ${TESTS_DIR}/ta-FDGQBROtzW/000/dn.test - ${TESTS_DIR}/ta-FDGQBROtzW/001/dm - ${TESTS_DIR}/ta-GVVIvsdEUo/000/z3 - ${TESTS_DIR}/ta-GVVIvsdEUo/002/z5.wgt - ${TESTS_DIR}/ta-GVVIvsdEUo/001/z4.html - ${TESTS_DIR}/ta-iuJHnskSHq/000/zz.wgt - ${TESTS_DIR}/ta-iuJHnskSHq/002/zb.wgt - ${TESTS_DIR}/ta-iuJHnskSHq/001/za.wgt - ${TESTS_DIR}/ta-iuJHnskSHq/003/zc.wgt - ${TESTS_DIR}/ta-iipTwNshRg/000/d1.wgt - ${TESTS_DIR}/ta-iipTwNshRg/001/ga.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/006/cy.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/000/c9.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/002/cw.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/005/ct.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/004/cr.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/001/cq.wgt - ${TESTS_DIR}/ta-UScJfQHPPy/003/ce.wgt - ${TESTS_DIR}/ta-uLHyIMvLwz/000/dl.wgt - ${TESTS_DIR}/ta-uLHyIMvLwz/002/dp.wgt - ${TESTS_DIR}/ta-uLHyIMvLwz/001/split.wgt.001 - ${TESTS_DIR}/ta-VerEfVGeTc/000/cf.wgt - ${TESTS_DIR}/ta-VerEfVGeTc/002/ch.wgt - ${TESTS_DIR}/ta-VerEfVGeTc/001/cg.wgt - ${TESTS_DIR}/i18n-rtl/017/i18nrtl17.wgt - ${TESTS_DIR}/i18n-rtl/033/i18nrtl33.wgt - ${TESTS_DIR}/i18n-rtl/006/i18nrtl06.wgt - ${TESTS_DIR}/i18n-rtl/021/i18nrtl21.wgt - ${TESTS_DIR}/i18n-rtl/037/i18nrtl37.wgt - ${TESTS_DIR}/i18n-rtl/012/i18nrtl12.wgt - ${TESTS_DIR}/i18n-rtl/031/i18nrtl31.wgt - ${TESTS_DIR}/i18n-rtl/043/i18nrtl43.wgt - ${TESTS_DIR}/i18n-rtl/015/i18nrtl15.wgt - ${TESTS_DIR}/i18n-rtl/026/i18nrtl26.wgt - ${TESTS_DIR}/i18n-rtl/029/i18nrtl29.wgt - ${TESTS_DIR}/i18n-rtl/042/i18nrtl42.wgt - ${TESTS_DIR}/i18n-rtl/040/i18nrtl40.wgt - ${TESTS_DIR}/i18n-rtl/044/i18nrtl44.wgt - ${TESTS_DIR}/i18n-rtl/022/i18nrtl22.wgt - ${TESTS_DIR}/i18n-rtl/002/i18nrtl02.wgt - ${TESTS_DIR}/i18n-rtl/036/i18nrtl36.wgt - ${TESTS_DIR}/i18n-rtl/035/i18nrtl35.wgt - ${TESTS_DIR}/i18n-rtl/027/i18nrtl27.wgt - ${TESTS_DIR}/i18n-rtl/028/i18nrtl28.wgt - ${TESTS_DIR}/i18n-rtl/016/i18nrtl16.wgt - ${TESTS_DIR}/i18n-rtl/013/i18nrtl13.wgt - ${TESTS_DIR}/i18n-rtl/005/i18nrtl05.wgt - ${TESTS_DIR}/i18n-rtl/038/i18nrtl38.wgt - ${TESTS_DIR}/i18n-rtl/010/i18nrtl10.wgt - ${TESTS_DIR}/i18n-rtl/020/i18nrtl20.wgt - ${TESTS_DIR}/i18n-rtl/019/i18nrtl19.wgt - ${TESTS_DIR}/i18n-rtl/041/i18nrtl41.wgt - ${TESTS_DIR}/i18n-rtl/004/i18nrtl04.wgt - ${TESTS_DIR}/i18n-rtl/014/i18nrtl14.wgt - ${TESTS_DIR}/i18n-rtl/011/i18nrtl11.wgt - ${TESTS_DIR}/i18n-rtl/001/i18nrtl01.wgt - ${TESTS_DIR}/i18n-rtl/023/i18nrtl23.wgt - ${TESTS_DIR}/i18n-rtl/039/i18nrtl39.wgt - ${TESTS_DIR}/i18n-rtl/007/i18nrtl07.wgt - ${TESTS_DIR}/i18n-rtl/003/i18nrtl03.wgt - ${TESTS_DIR}/i18n-rtl/030/i18nrtl30.wgt - ${TESTS_DIR}/i18n-rtl/008/i18nrtl08.wgt - ${TESTS_DIR}/i18n-rtl/018/i18nrtl18.wgt - ${TESTS_DIR}/i18n-rtl/009/i18nrtl09.wgt - ${TESTS_DIR}/i18n-rtl/032/i18nrtl32.wgt - ${TESTS_DIR}/i18n-rtl/034/i18nrtl34.wgt - ${TESTS_DIR}/ta-ignore-unrequired-feature-with-invalid-name/000/gg.wgt - ${TESTS_DIR}/ta-hkWmGJgfve/000/bq.wgt - ${TESTS_DIR}/ta-hkWmGJgfve/002/bs.wgt - ${TESTS_DIR}/ta-hkWmGJgfve/001/br.wgt - ${TESTS_DIR}/ta-nYAcofihvj/006/ib.wgt - ${TESTS_DIR}/ta-nYAcofihvj/000/iq.wgt - ${TESTS_DIR}/ta-nYAcofihvj/002/iw.wgt - ${TESTS_DIR}/ta-nYAcofihvj/005/it.wgt - ${TESTS_DIR}/ta-nYAcofihvj/004/ir.wgt - ${TESTS_DIR}/ta-nYAcofihvj/001/i9.wgt - ${TESTS_DIR}/ta-nYAcofihvj/003/ie.wgt - ${TESTS_DIR}/ta-its/012/its12.wgt - ${TESTS_DIR}/ta-its/000/its0.wgt - ${TESTS_DIR}/ta-its/015/its15.wgt - ${TESTS_DIR}/ta-its/002/its2.wgt - ${TESTS_DIR}/ta-its/013/its13.wgt - ${TESTS_DIR}/ta-its/005/its5.wgt - ${TESTS_DIR}/ta-its/010/its10.wgt - ${TESTS_DIR}/ta-its/004/its4.wgt - ${TESTS_DIR}/ta-its/014/its14.wgt - ${TESTS_DIR}/ta-its/011/its11.wgt - ${TESTS_DIR}/ta-its/001/its1.wgt - ${TESTS_DIR}/ta-its/007/its7.wgt - ${TESTS_DIR}/ta-its/003/its3.wgt - ${TESTS_DIR}/ta-its/008/its8.wgt - ${TESTS_DIR}/ta-its/009/its9.wgt - ${TESTS_DIR}/ta-pIffQywZin/000/db.wgt - ${TESTS_DIR}/ta-paIabGIIMC/000/dc.wgt - ${TESTS_DIR}/ta-paIabGIIMC/001/dv.wgt - ${TESTS_DIR}/ta-vcYJAPVEym/000/cu.wgt - ${TESTS_DIR}/ta-vcYJAPVEym/002/ra.wgt - ${TESTS_DIR}/ta-vcYJAPVEym/001/ci.wgt - ${TESTS_DIR}/ta-vcYJAPVEym/003/co.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/006/bp.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/000/bj.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/002/bl.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/005/bo.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/004/bn.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/001/bk.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/007/ad.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/003/bm.wgt - ${TESTS_DIR}/ta-FAFYMEGELU/008/ae.wgt - ${TESTS_DIR}/ta-viewmodes/006/viewg.wgt - ${TESTS_DIR}/ta-viewmodes/005/viewf.wgt - ${TESTS_DIR}/ta-viewmodes/001/viewb.wgt - ${TESTS_DIR}/ta-viewmodes/007/viewh.wgt - ${TESTS_DIR}/ta-viewmodes/008/viewi.wgt - ${TESTS_DIR}/ta-YUMJAPVEgI/000/cj.wgt - ${TESTS_DIR}/ta-YUMJAPVEgI/002/cl.wgt - ${TESTS_DIR}/ta-YUMJAPVEgI/004/cx.wgt - ${TESTS_DIR}/ta-YUMJAPVEgI/001/ck.wgt - ${TESTS_DIR}/ta-YUMJAPVEgI/003/cz.wgt - ${TESTS_DIR}/ta-defaultlocale-ignore/000/ta-de-000.wgt - ${TESTS_DIR}/ta-defaultlocale-ignore/002/ta-de-002.wgt - ${TESTS_DIR}/ta-defaultlocale-ignore/004/ta-de-004.wgt - ${TESTS_DIR}/ta-defaultlocale-ignore/001/ta-de-001.wgt - ${TESTS_DIR}/ta-defaultlocale-ignore/003/ta-de-003.wgt - ${TESTS_DIR}/i18n-rlo/017/i18nrlo17.wgt - ${TESTS_DIR}/i18n-rlo/033/i18nrlo33.wgt - ${TESTS_DIR}/i18n-rlo/006/i18nrlo06.wgt - ${TESTS_DIR}/i18n-rlo/021/i18nrlo21.wgt - ${TESTS_DIR}/i18n-rlo/037/i18nrlo37.wgt - ${TESTS_DIR}/i18n-rlo/012/i18nrlo12.wgt - ${TESTS_DIR}/i18n-rlo/031/i18nrlo31.wgt - ${TESTS_DIR}/i18n-rlo/043/i18nrlo43.wgt - ${TESTS_DIR}/i18n-rlo/015/i18nrlo15.wgt - ${TESTS_DIR}/i18n-rlo/026/i18nrlo26.wgt - ${TESTS_DIR}/i18n-rlo/029/i18nrlo29.wgt - ${TESTS_DIR}/i18n-rlo/042/i18nrlo42.wgt - ${TESTS_DIR}/i18n-rlo/040/i18nrlo40.wgt - ${TESTS_DIR}/i18n-rlo/044/i18nrlo44.wgt - ${TESTS_DIR}/i18n-rlo/022/i18nrlo22.wgt - ${TESTS_DIR}/i18n-rlo/002/i18nrlo02.wgt - ${TESTS_DIR}/i18n-rlo/036/i18nrlo36.wgt - ${TESTS_DIR}/i18n-rlo/035/i18nrlo35.wgt - ${TESTS_DIR}/i18n-rlo/027/i18nrlo27.wgt - ${TESTS_DIR}/i18n-rlo/028/i18nrlo28.wgt - ${TESTS_DIR}/i18n-rlo/016/i18nrlo16.wgt - ${TESTS_DIR}/i18n-rlo/013/i18nrlo13.wgt - ${TESTS_DIR}/i18n-rlo/005/i18nrlo05.wgt - ${TESTS_DIR}/i18n-rlo/038/i18nrlo38.wgt - ${TESTS_DIR}/i18n-rlo/010/i18nrlo10.wgt - ${TESTS_DIR}/i18n-rlo/020/i18nrlo20.wgt - ${TESTS_DIR}/i18n-rlo/019/i18nrlo19.wgt - ${TESTS_DIR}/i18n-rlo/041/i18nrlo41.wgt - ${TESTS_DIR}/i18n-rlo/004/i18nrlo04.wgt - ${TESTS_DIR}/i18n-rlo/014/i18nrlo14.wgt - ${TESTS_DIR}/i18n-rlo/011/i18nrlo11.wgt - ${TESTS_DIR}/i18n-rlo/001/i18nrlo01.wgt - ${TESTS_DIR}/i18n-rlo/023/i18nrlo23.wgt - ${TESTS_DIR}/i18n-rlo/039/i18nrlo39.wgt - ${TESTS_DIR}/i18n-rlo/007/i18nrlo07.wgt - ${TESTS_DIR}/i18n-rlo/003/i18nrlo03.wgt - ${TESTS_DIR}/i18n-rlo/030/i18nrlo30.wgt - ${TESTS_DIR}/i18n-rlo/008/i18nrlo08.wgt - ${TESTS_DIR}/i18n-rlo/018/i18nrlo18.wgt - ${TESTS_DIR}/i18n-rlo/009/i18nrlo09.wgt - ${TESTS_DIR}/i18n-rlo/032/i18nrlo32.wgt - ${TESTS_DIR}/i18n-rlo/034/i18nrlo34.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/006/au.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/000/ao.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/002/aq.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/005/at.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/004/as.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/001/ap.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/007/av.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/003/ar.wgt - ${TESTS_DIR}/ta-AYLMhryBnD/008/oa.wgt - ${TESTS_DIR}/ta-aaaaaaaaaa/000/z1.wgt - ${TESTS_DIR}/ta-aaaaaaaaaa/001/z2.wgt - ${TESTS_DIR}/ta-UEMbyHERkI/000/c6.wgt - ${TESTS_DIR}/ta-UEMbyHERkI/002/rb.wgt - ${TESTS_DIR}/ta-UEMbyHERkI/001/c7.wgt - ${TESTS_DIR}/ta-UEMbyHERkI/003/c8.wgt - ${TESTS_DIR}/ta-dPOgiLQKNK/000/e4.wgt - ${TESTS_DIR}/ta-dPOgiLQKNK/002/e6.wgt - ${TESTS_DIR}/ta-dPOgiLQKNK/001/e5.wgt - ${TESTS_DIR}/ta-dPOgiLQKNK/003/e7.wgt - ${TESTS_DIR}/ta-CEGwkNQcWo/000/e2.wgt - ${TESTS_DIR}/ta-CEGwkNQcWo/001/e3.wgt - ${TESTS_DIR}/ta-vOBaOcWfll/000/e8.wgt - ${TESTS_DIR}/ta-LQcjNKBLUZ/000/d9.wgt - ${TESTS_DIR}/ta-LQcjNKBLUZ/001/d0.wgt - ${TESTS_DIR}/ta-VdCEyDVSA/000/cp.wgt - ${TESTS_DIR}/ta-VdCEyDVSA/002/cs.wgt - ${TESTS_DIR}/ta-VdCEyDVSA/005/x2.wgt - ${TESTS_DIR}/ta-VdCEyDVSA/004/x1.wgt - ${TESTS_DIR}/ta-VdCEyDVSA/001/ca.wgt - ${TESTS_DIR}/ta-VdCEyDVSA/003/cd.wgt - ${TESTS_DIR}/ta-dxzVDWpaWg/000/bg.wgt - ${TESTS_DIR}/ta-dxzVDWpaWg/001/bh.wgt - ${TESTS_DIR}/ta-sdwhMozwIc/000/b7.wgt - ${TESTS_DIR}/ta-sdwhMozwIc/002/b9.wgt - ${TESTS_DIR}/ta-sdwhMozwIc/001/b8.wgt - ${TESTS_DIR}/ta-BnWPqNvNVo/000/aw.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/006/c4.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/000/b3.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/002/b0.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/005/c3.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/004/c2.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/001/b4.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/007/c5.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/003/c1.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/008/cc.wgt - ${TESTS_DIR}/ta-RGNHRBWNZV/009/cv.wgt - ${TESTS_DIR}/ta-klLDaEgJeU/000/bt.wgt - ${TESTS_DIR}/ta-klLDaEgJeU/002/bv.wgt - ${TESTS_DIR}/ta-klLDaEgJeU/005/amp.wgt - ${TESTS_DIR}/ta-klLDaEgJeU/004/lt.wgt - ${TESTS_DIR}/ta-klLDaEgJeU/001/bu.wgt - ${TESTS_DIR}/ta-klLDaEgJeU/003/bw.wgt - ${TESTS_DIR}/ta-defaultlocale-usage/000/ta-de-000.wgt - ${TESTS_DIR}/ta-defaultlocale-usage/001/dlocuse01.wgt - ${TESTS_DIR}/ta-argMozRiC/006/al.wgt - ${TESTS_DIR}/ta-argMozRiC/000/af.wgt - ${TESTS_DIR}/ta-argMozRiC/002/ah.wgt - ${TESTS_DIR}/ta-argMozRiC/005/ak.wgt - ${TESTS_DIR}/ta-argMozRiC/004/aj.wgt - ${TESTS_DIR}/ta-argMozRiC/001/ag.wgt - ${TESTS_DIR}/ta-argMozRiC/007/am.wgt - ${TESTS_DIR}/ta-argMozRiC/003/ai.wgt - ${TESTS_DIR}/ta-argMozRiC/008/an.wgt - ${TESTS_DIR}/i18n-ltr/017/i18nltr17.wgt - ${TESTS_DIR}/i18n-ltr/033/i18nltr33.wgt - ${TESTS_DIR}/i18n-ltr/006/i18nltr06.wgt - ${TESTS_DIR}/i18n-ltr/021/i18nltr21.wgt - ${TESTS_DIR}/i18n-ltr/037/i18nltr37.wgt - ${TESTS_DIR}/i18n-ltr/012/i18nltr12.wgt - ${TESTS_DIR}/i18n-ltr/031/i18nltr31.wgt - ${TESTS_DIR}/i18n-ltr/043/i18nltr43.wgt - ${TESTS_DIR}/i18n-ltr/015/i18nltr15.wgt - ${TESTS_DIR}/i18n-ltr/026/i18nltr26.wgt - ${TESTS_DIR}/i18n-ltr/029/i18nltr29.wgt - ${TESTS_DIR}/i18n-ltr/042/i18nltr42.wgt - ${TESTS_DIR}/i18n-ltr/040/i18nltr40.wgt - ${TESTS_DIR}/i18n-ltr/044/i18nltr44.wgt - ${TESTS_DIR}/i18n-ltr/022/i18nltr22.wgt - ${TESTS_DIR}/i18n-ltr/002/i18nltr02.wgt - ${TESTS_DIR}/i18n-ltr/036/i18nltr36.wgt - ${TESTS_DIR}/i18n-ltr/035/i18nltr35.wgt - ${TESTS_DIR}/i18n-ltr/027/i18nltr27.wgt - ${TESTS_DIR}/i18n-ltr/028/i18nltr28.wgt - ${TESTS_DIR}/i18n-ltr/016/i18nltr16.wgt - ${TESTS_DIR}/i18n-ltr/013/i18nltr13.wgt - ${TESTS_DIR}/i18n-ltr/005/i18nltr05.wgt - ${TESTS_DIR}/i18n-ltr/038/i18nltr38.wgt - ${TESTS_DIR}/i18n-ltr/010/i18nltr10.wgt - ${TESTS_DIR}/i18n-ltr/020/i18nltr20.wgt - ${TESTS_DIR}/i18n-ltr/019/i18nltr19.wgt - ${TESTS_DIR}/i18n-ltr/041/i18nltr41.wgt - ${TESTS_DIR}/i18n-ltr/004/i18nltr04.wgt - ${TESTS_DIR}/i18n-ltr/014/i18nltr14.wgt - ${TESTS_DIR}/i18n-ltr/011/i18nltr11.wgt - ${TESTS_DIR}/i18n-ltr/001/i18nltr01.wgt - ${TESTS_DIR}/i18n-ltr/023/i18nltr23.wgt - ${TESTS_DIR}/i18n-ltr/039/i18nltr39.wgt - ${TESTS_DIR}/i18n-ltr/007/i18nltr07.wgt - ${TESTS_DIR}/i18n-ltr/003/i18nltr03.wgt - ${TESTS_DIR}/i18n-ltr/030/i18nltr30.wgt - ${TESTS_DIR}/i18n-ltr/008/i18nltr08.wgt - ${TESTS_DIR}/i18n-ltr/018/i18nltr18.wgt - ${TESTS_DIR}/i18n-ltr/009/i18nltr09.wgt - ${TESTS_DIR}/i18n-ltr/032/i18nltr32.wgt - ${TESTS_DIR}/i18n-ltr/034/i18nltr34.wgt - ${TESTS_DIR}/ta-EGkPfzCBOz/000/dt.wgt - ${TESTS_DIR}/ta-EGkPfzCBOz/002/v9.wgt - ${TESTS_DIR}/ta-EGkPfzCBOz/001/dg.wgt - ${TESTS_DIR}/ta-xlgUWUVzCY/000/d6.wgt - ${TESTS_DIR}/ta-ZjcdAxFMSx/000/dq.wgt - ${TESTS_DIR}/ta-ZjcdAxFMSx/002/hh.wgt - ${TESTS_DIR}/ta-ZjcdAxFMSx/001/dw.wgt - ${TESTS_DIR}/ta-xGYcVTMoAX/000/ds.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/006/bb.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/000/a5.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/002/a7.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/005/ba.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/010/bf.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/004/a9.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/001/a6.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/007/bc.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/003/a8.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/008/bd.wgt - ${TESTS_DIR}/ta-DwhJBIJRQN/009/be.wgt - ${TESTS_DIR}/ta-LYLMhryBBT/000/bx.wgt - ${TESTS_DIR}/ta-LYLMhryBBT/002/bz.wgt - ${TESTS_DIR}/ta-LYLMhryBBT/001/by.wgt - ${TESTS_DIR}/ta-bbbbbbbbbb/000/xx.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/006/a4.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/000/ax.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/002/az.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/005/a3.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/004/a2.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/001/ay.wgt - ${TESTS_DIR}/ta-BxjoiWHaMr/003/a1.wgt - ${TESTS_DIR}/ta-RawAIWHoMs/000/b1.wgt - ${TESTS_DIR}/ta-RawAIWHoMs/002/b2.wgt - ${TESTS_DIR}/ta-RawAIWHoMs/001/rd.wgt - ${TESTS_DIR}/ta-ACCJfDGwDQ/000/aa.wgt - ${TESTS_DIR}/ta-ACCJfDGwDQ/002/ac.wgt - ${TESTS_DIR}/ta-ACCJfDGwDQ/001/ab.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/006/i4.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/000/ix.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/002/iz.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/005/i3.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/004/i2.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/001/iy.wgt - ${TESTS_DIR}/ta-eHUaPbgfKg/003/i1.wgt - DESTINATION - /opt/apps/widget/tests/w3c_widgets - ) - - diff --git a/tests/w3c_tests/InstallerWrapper.cpp b/tests/w3c_tests/InstallerWrapper.cpp deleted file mode 100644 index 8981e63..0000000 --- a/tests/w3c_tests/InstallerWrapper.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "InstallerWrapper.h" - -#include - -#include - -namespace -{ - -const DPL::String params = L"DPL_USE_OLD_STYLE_LOGS=0 " - "DPL_USE_OLD_STYLE_PEDANTIC_LOGS=0 "; -const DPL::String installCmd = params + L"wrt-installer -if "; -const DPL::String uninstallCmd = params + L"wrt-installer -u "; - -} - -namespace InstallerWrapper -{ - -WidgetHandle install(const DPL::String& path) -{ - DPL::String msg; - - auto cmd = installCmd + path; - auto utf8 = DPL::ToUTF8String(cmd); - LogDebug("executing: " << utf8); - auto filehandle = popen(utf8.c_str(), "r"); - if (!filehandle) { - return InstallerWrapper::OtherError; - } - - char buffer[1024]; - int ret; - while ((ret = fread_unlocked(buffer, - sizeof(char), - sizeof(buffer)/sizeof(char), - filehandle)) > 0) - { - LogDebug("E:" << buffer); - msg += DPL::FromASCIIString(buffer); - } - auto err = pclose(filehandle); - if (!WIFEXITED(err)) { - return OtherError; - } - if (0 != WEXITSTATUS(err)) { - if (1 == WEXITSTATUS(err)) { - return WrongWidgetPackage; - } - return OtherError; - } - WidgetHandle handle; - auto nr = sscanf(DPL::ToUTF8String(msg).c_str(), - "installed %d\n", - &handle); - if (1 != nr) { - return OtherError; - } - return handle; -} - -bool uninstall(WidgetHandle id) -{ - char buffer[1024]; - sprintf(buffer, "%d", id); - auto cmd = uninstallCmd + DPL::FromUTF8String(buffer) + L" > /dev/null"; - system(DPL::ToUTF8String(cmd).c_str()); - return true; -} - -} - diff --git a/tests/w3c_tests/InstallerWrapper.h b/tests/w3c_tests/InstallerWrapper.h deleted file mode 100644 index 88cf4a5..0000000 --- a/tests/w3c_tests/InstallerWrapper.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WRT_TESTS_W3C_TESTS_INSTALLER_WRAPPER_H -#define WRT_TESTS_W3C_TESTS_INSTALLER_WRAPPER_H - -#include - -namespace InstallerWrapper -{ - -typedef int WidgetHandle; -const WidgetHandle WrongWidgetPackage = 1; -const WidgetHandle OtherError = -1; - -WidgetHandle install(const DPL::String& path); -bool uninstall(WidgetHandle id); - -} - -#endif//WRT_TESTS_W3C_TESTS_INSTALLER_WRAPPER_H diff --git a/tests/w3c_tests/TestCases.cpp b/tests/w3c_tests/TestCases.cpp deleted file mode 100644 index 64c46b8..0000000 --- a/tests/w3c_tests/TestCases.cpp +++ /dev/null @@ -1,2902 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include - -#define LRE L"\x0202a" -#define LRO L"\x0202d" -#define RLE L"\x0202b" -#define RLO L"\x0202e" -#define PDF L"\x0202c" - -#define MakeInvalidTest(arg1, arg2) \ - RUNNER_TEST(arg1 ## _ ## arg2) \ -{ \ - W3CTestBase test(#arg2 ".wgt"); \ - test.StartTest(); \ - test.CheckIsNotValid(); \ -} - -RUNNER_TEST(ta_viewmodes_viewb) -{ - W3CTestBase test("viewb.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(1); - test.CheckWidgetWindowMode(L"floating"); -} - -RUNNER_TEST(ta_viewmodes_viewf) -{ - W3CTestBase test("viewf.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(0); -} - -RUNNER_TEST(ta_viewmodes_viewg) -{ - W3CTestBase test("viewg.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(3); - test.CheckWidgetWindowMode(L"windowed"); - test.CheckWidgetWindowMode(L"floating"); - test.CheckWidgetWindowMode(L"maximized"); -} - -RUNNER_TEST(ta_viewmodes_viewh) -{ - W3CTestBase test("viewh.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(2); - test.CheckWidgetWindowMode(L"windowed"); - test.CheckWidgetWindowMode(L"floating"); -} - -RUNNER_TEST(ta_viewmodes_viewi) -{ - W3CTestBase test("viewi.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(0); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl01) -{ - W3CTestBase test("i18nrtl01.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl02) -{ - W3CTestBase test("i18nrtl02.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nrtl03) -{ - W3CTestBase test("i18nrtl03.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrtl04) -{ - W3CTestBase test("i18nrtl04.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrtl05) -{ - W3CTestBase test("i18nrtl05.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl06) -{ - W3CTestBase test("i18nrtl06.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - L"The arrow should point right " RLE L"<--" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nrtl07) -{ - W3CTestBase test("i18nrtl07.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - L"The arrow should point right " RLE L"<--" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrtl08) -{ - W3CTestBase test("i18nrtl08.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - L"The arrow should point right " RLE L"<--" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrtl09) -{ - W3CTestBase test("i18nrtl09.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - L"The arrow should point right " RLE L"<--" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl10) -{ - W3CTestBase test("i18nrtl10.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE L"The arrow should point right " LRE L"-->" PDF PDF); -} - - -RUNNER_TEST(ta_VdCEyDVSA_i18nrtl11) -{ - W3CTestBase test("i18nrtl11.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - RLE L"The arrow should point right " LRE L"-->" PDF PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrtl12) -{ - W3CTestBase test("i18nrtl12.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - RLE L"The arrow should point right " LRE L"-->" PDF PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrtl13) -{ - W3CTestBase test("i18nrtl13.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - RLE L"The arrow should point right " LRE L"-->" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl14) -{ - W3CTestBase test("i18nrtl14.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl15) -{ - W3CTestBase test("i18nrtl15.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nrtl16) -{ - W3CTestBase test("i18nrtl16.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrtl17) -{ - W3CTestBase test("i18nrtl17.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrtl18) -{ - W3CTestBase test("i18nrtl18.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl19) -{ - W3CTestBase test("i18nrtl19.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE L"<-- " LRE L"< PAS" PDF L"SED" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl20) -{ - W3CTestBase test("i18nrtl20.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE L"<-- " RLE L"PAS >" PDF L"SED" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl21) -{ - W3CTestBase test("i18nrtl21.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE LRO L"SED -->" PDF L"SAP >" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrtl22) -{ - W3CTestBase test("i18nrtl22.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLE RLO L"<-- DES" PDF L"SAP >" PDF); -} - -RUNNER_TEST(ta_roCaKRxZhS_i18nrtl23) -{ - W3CTestBase test("i18nrtl23.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"test.png"); -} - -RUNNER_TEST(ta_LQcjNKBLUZ_i18nrtl26) -{ - W3CTestBase test("i18nrtl26.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.htm"); -} - -RUNNER_TEST(ta_paIabGIIMC_i18nrtl27) -{ - W3CTestBase test("i18nrtl27.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content type"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_i18nrtl28) -{ - W3CTestBase test("i18nrtl28.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content encoding"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nrtl29) -{ - W3CTestBase test("i18nrtl29.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nrtl30) -{ - W3CTestBase test("i18nrtl30.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:x-bugus-feature", false); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nrtl31) -{ - W3CTestBase test("i18nrtl31.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"The arrow should point right -->", - L"TEST"); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nrtl32) -{ - W3CTestBase test("i18nrtl32.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"TEST", - L"The arrow should point right -->"); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nrtl33) -{ - W3CTestBase test("i18nrtl33.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"The arrow should point right -->", - L"TEST", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nrtl34) -{ - W3CTestBase test("i18nrtl34.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"The arrow should point right -->", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nrtl35) -{ - W3CTestBase test("i18nrtl35.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"TEST", - true); -} - -RUNNER_TEST(ta_argMozRiC_i18nrtl36) -{ - W3CTestBase test("i18nrtl36.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_argMozRiC_i18nrtl37) -{ - W3CTestBase test("i18nrtl37.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorEmail(L"The arrow should point right -->"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrtl38) -{ - W3CTestBase test("i18nrtl38.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicenseHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_UScJfQHPPy_i18nrtl39) -{ - W3CTestBase test("i18nrtl39.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(123); -} - -RUNNER_TEST(ta_BxjoiWHaMr_i18nrtl40) -{ - W3CTestBase test("i18nrtl40.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(123); -} - -RUNNER_TEST(ta_RawAIWHoMs_i18nrtl41) -{ - W3CTestBase test("i18nrtl41.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetId(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_VerEfVGeTc_i18nrtl42) -{ - W3CTestBase test("i18nrtl42.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(RLE L"<-- The arrow should point right" PDF); -} - -RUNNER_TEST(ta_viewmodes_i18nrtl43) -{ - W3CTestBase test("i18nrtl43.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(2); - test.CheckWidgetWindowMode(L"floating"); - test.CheckWidgetWindowMode(L"windowed"); -} - -RUNNER_TEST(ta_klLDaEgJeU_i18nrtl44) -{ - W3CTestBase test("i18nrtl44.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(RLE L"PASS" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo01) -{ - W3CTestBase test("i18nrlo01.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo02) -{ - W3CTestBase test("i18nrlo02.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nrlo03) -{ - W3CTestBase test("i18nrlo03.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrlo04) -{ - W3CTestBase test("i18nrlo04.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrlo05) -{ - W3CTestBase test("i18nrlo05.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo06) -{ - W3CTestBase test("i18nrlo06.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - L"P" RLO L"SA" PDF L"S" RLO L"DE" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nrlo07) -{ - W3CTestBase test("i18nrlo07.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - L"P" RLO L"SA" PDF L"S" RLO L"DE" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrlo08) -{ - W3CTestBase test("i18nrlo08.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - L"P" RLO L"SA" PDF L"S" RLO L"DE" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrlo09) -{ - W3CTestBase test("i18nrlo09.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - L"P" RLO L"SA" PDF L"S" RLO L"DE" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo10) -{ - W3CTestBase test("i18nrlo10.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO RLO L"DE" PDF L"S" LRO L"AS" PDF L"P" PDF); -} - - -RUNNER_TEST(ta_VdCEyDVSA_i18nrlo11) -{ - W3CTestBase test("i18nrlo11.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - RLO RLO L"DE" PDF L"S" LRO L"AS" PDF L"P" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrlo12) -{ - W3CTestBase test("i18nrlo12.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - RLO RLO L"DE" PDF L"S" LRO L"AS" PDF L"P" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrlo13) -{ - W3CTestBase test("i18nrlo13.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - RLO RLO L"DE" PDF L"S" LRO L"AS" PDF L"P" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo14) -{ - W3CTestBase test("i18nrlo14.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo15) -{ - W3CTestBase test("i18nrlo15.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nrlo16) -{ - W3CTestBase test("i18nrlo16.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nrlo17) -{ - W3CTestBase test("i18nrlo17.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrlo18) -{ - W3CTestBase test("i18nrlo18.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo19) -{ - W3CTestBase test("i18nrlo19.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO L"<-- DES" LRE L"AS" PDF L"P >" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo20) -{ - W3CTestBase test("i18nrlo20.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO L"<-- DES" RLE L"AS" PDF L"P >" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo21) -{ - W3CTestBase test("i18nrlo21.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO L"<-- DES" LRO L"AS" PDF L"P >" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nrlo22) -{ - W3CTestBase test("i18nrlo22.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - RLO L"<-- DES" RLO L"SA" PDF L"P >" PDF); -} - -RUNNER_TEST(ta_roCaKRxZhS_i18nrlo23) -{ - W3CTestBase test("i18nrlo23.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"test.png"); -} - -RUNNER_TEST(ta_LQcjNKBLUZ_i18nrlo26) -{ - W3CTestBase test("i18nrlo26.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.htm"); -} - -RUNNER_TEST(ta_paIabGIIMC_i18nrlo27) -{ - W3CTestBase test("i18nrlo27.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content type"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_i18nrlo28) -{ - W3CTestBase test("i18nrlo28.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content encoding"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nrlo29) -{ - W3CTestBase test("i18nrlo29.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nrlo30) -{ - W3CTestBase test("i18nrlo30.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:x-bugus-feature", false); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nrlo31) -{ - W3CTestBase test("i18nrlo31.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"PASSED", - L"TEST"); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nrlo32) -{ - W3CTestBase test("i18nrlo32.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"TEST", - L"PASSED"); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nrlo33) -{ - W3CTestBase test("i18nrlo33.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"PASSED", - L"TEST", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nrlo34) -{ - W3CTestBase test("i18nrlo34.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"PASSED", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nrlo35) -{ - W3CTestBase test("i18nrlo35.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"TEST", - true); -} - -RUNNER_TEST(ta_argMozRiC_i18nrlo36) -{ - W3CTestBase test("i18nrlo36.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_argMozRiC_i18nrlo37) -{ - W3CTestBase test("i18nrlo37.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorEmail(L"PASSED"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nrlo38) -{ - W3CTestBase test("i18nrlo38.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicenseHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_UScJfQHPPy_i18nrlo39) -{ - W3CTestBase test("i18nrlo39.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(123); -} - -RUNNER_TEST(ta_BxjoiWHaMr_i18nrlo40) -{ - W3CTestBase test("i18nrlo40.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(123); -} - -RUNNER_TEST(ta_RawAIWHoMs_i18nrlo41) -{ - W3CTestBase test("i18nrlo41.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetId(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_VerEfVGeTc_i18nrlo42) -{ - W3CTestBase test("i18nrlo42.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(RLO L"DESSAP" PDF); -} - -RUNNER_TEST(ta_viewmodes_i18nrlo43) -{ - W3CTestBase test("i18nrlo43.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(2); - test.CheckWidgetWindowMode(L"floating"); - test.CheckWidgetWindowMode(L"windowed"); -} - -RUNNER_TEST(ta_klLDaEgJeU_i18nrlo44) -{ - W3CTestBase test("i18nrlo44.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(RLO L"SSAP" PDF); -} - -MakeInvalidTest(ta_ACCJfDGwDQ, aa) -MakeInvalidTest(ta_ACCJfDGwDQ, ab) -MakeInvalidTest(ta_ACCJfDGwDQ, ac) - -RUNNER_TEST(ta_argMozRiC_af) -{ - W3CTestBase test("af.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); -} - -RUNNER_TEST(ta_argMozRiC_ag) -{ - W3CTestBase test("ag.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"P A S S"); -} - -RUNNER_TEST(ta_argMozRiC_ah) -{ - W3CTestBase test("ah.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); -} - -RUNNER_TEST(ta_argMozRiC_ai) -{ - W3CTestBase test("ai.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorEmail(L"PASS"); -} - -RUNNER_TEST(ta_argMozRiC_aj) -{ - W3CTestBase test("aj.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); -} - -RUNNER_TEST(ta_argMozRiC_ak) -{ - W3CTestBase test("ak.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); -} - -RUNNER_TEST(ta_argMozRiC_al) -{ - W3CTestBase test("al.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L""); -} - -RUNNER_TEST(ta_argMozRiC_am) -{ - W3CTestBase test("am.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorHref(L"PASS:PASS"); -} - -RUNNER_TEST(ta_argMozRiC_an) -{ - W3CTestBase test("an.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorHrefIsNull(); -} - -RUNNER_TEST(ta_AYLMhryBnD_ao) -{ - W3CTestBase test("ao.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetNameIsNotNull(); - test.CheckWidgetName(L"PASS"); -} - -RUNNER_TEST(ta_AYLMhryBnD_ap) -{ - W3CTestBase test("ap.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetNameIsNotNull(); - test.CheckWidgetName(L"P A S S"); -} - -RUNNER_TEST(ta_AYLMhryBnD_aq) -{ - W3CTestBase test("aq.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetNameIsNotNull(); - test.CheckWidgetName(L"PASS"); -} - -RUNNER_TEST(ta_AYLMhryBnD_ar) -{ - W3CTestBase test("ar.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName(L"PASS"); -} - -RUNNER_TEST(ta_AYLMhryBnD_as) -{ - W3CTestBase test("as.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L"PASS"); - test.CheckWidgetShortName(L"PASS"); -} - -RUNNER_TEST(ta_AYLMhryBnD_at) -{ - W3CTestBase test("at.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L"PASS"); - test.CheckWidgetShortName(L"PASS"); -} - -RUNNER_TEST(ta_AYLMhryBnD_au) -{ - W3CTestBase test("au.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName(L""); -} - - -RUNNER_TEST(ta_AYLMhryBnD_av) -{ - W3CTestBase test("av.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L""); -} - -RUNNER_TEST(ta_AYLMhryBnD_oa) -{ - W3CTestBase test("oa.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L"PASS"); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr01) -{ - W3CTestBase test("i18nltr01.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr02) -{ - W3CTestBase test("i18nltr02.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName(LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nltr03) -{ - W3CTestBase test("i18nltr03.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nltr04) -{ - W3CTestBase test("i18nltr04.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nltr05) -{ - W3CTestBase test("i18nltr05.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr06) -{ - W3CTestBase test("i18nltr06.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L"The arrow should point right " LRE L"-->" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nltr07) -{ - W3CTestBase test("i18nltr07.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - L"The arrow should point right " LRE L"-->" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nltr08) -{ - W3CTestBase test("i18nltr08.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - L"The arrow should point right " LRE L"-->" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nltr09) -{ - W3CTestBase test("i18nltr09.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - L"The arrow should point right " LRE L"-->" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr10) -{ - W3CTestBase test("i18nltr10.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRE L"The arrow should point right " RLE L"<--" PDF PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nltr11) -{ - W3CTestBase test("i18nltr11.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - LRE L"The arrow should point right " RLE L"<--" PDF PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nltr12) -{ - W3CTestBase test("i18nltr12.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - LRE L"The arrow should point right " RLE L"<--" PDF PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nltr13) -{ - W3CTestBase test("i18nltr13.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - LRE L"The arrow should point right " RLE L"<--" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr14) -{ - W3CTestBase test("i18nltr14.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr15) -{ - W3CTestBase test("i18nltr15.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName( - LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nltr16) -{ - W3CTestBase test("i18nltr16.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nltr17) -{ - W3CTestBase test("i18nltr17.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nltr18) -{ - W3CTestBase test("i18nltr18.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr19) -{ - W3CTestBase test("i18nltr19.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRE L"< PAS" LRE L"SED -->" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr20) -{ - W3CTestBase test("i18nltr20.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRE L"< PAS" RLE L"<-- SED" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr21) -{ - W3CTestBase test("i18nltr21.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRE L"< PAS" LRO L"SED -->" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nltr22) -{ - W3CTestBase test("i18nltr22.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRE L"< PAS" RLO L"<-- DES" PDF PDF); -} - -RUNNER_TEST(ta_roCaKRxZhS_i18nltr23) -{ - W3CTestBase test("i18nltr23.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"test.png"); -} - -RUNNER_TEST(ta_LQcjNKBLUZ_i18nltr26) -{ - W3CTestBase test("i18nltr26.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.htm"); -} - -RUNNER_TEST(ta_paIabGIIMC_i18nltr27) -{ - W3CTestBase test("i18nltr27.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content type"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_i18nltr28) -{ - W3CTestBase test("i18nltr28.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content encoding"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nltr29) -{ - W3CTestBase test("i18nltr29.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nltr30) -{ - W3CTestBase test("i18nltr30.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:x-bugus-feature", false); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nltr31) -{ - W3CTestBase test("i18nltr31.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"The arrow should point right -->", - L"TEST"); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nltr32) -{ - W3CTestBase test("i18nltr32.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"TEST", - L"The arrow should point right -->"); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nltr33) -{ - W3CTestBase test("i18nltr33.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"The arrow should point right -->", - L"TEST", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nltr34) -{ - W3CTestBase test("i18nltr34.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"The arrow should point right -->", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nltr35) -{ - W3CTestBase test("i18nltr35.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"TEST", - true); -} - -RUNNER_TEST(ta_argMozRiC_i18nltr36) -{ - W3CTestBase test("i18nltr36.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_argMozRiC_i18nltr37) -{ - W3CTestBase test("i18nltr37.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorEmail(L"The arrow should point right -->"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nltr38) -{ - W3CTestBase test("i18nltr38.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicenseHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_UScJfQHPPy_i18nltr39) -{ - W3CTestBase test("i18nltr39.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(123); -} - -RUNNER_TEST(ta_BxjoiWHaMr_i18nltr40) -{ - W3CTestBase test("i18nltr40.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(123); -} - -RUNNER_TEST(ta_RawAIWHoMs_i18nltr41) -{ - W3CTestBase test("i18nltr41.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetId(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_VerEfVGeTc_i18nltr42) -{ - W3CTestBase test("i18nltr42.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(LRE L"The arrow should point right -->" PDF); -} - -RUNNER_TEST(ta_viewmodes_i18nltr43) -{ - W3CTestBase test("i18nltr43.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(2); - test.CheckWidgetWindowMode(L"floating"); - test.CheckWidgetWindowMode(L"windowed"); -} - -RUNNER_TEST(ta_klLDaEgJeU_i18nltr44) -{ - W3CTestBase test("i18nltr44.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRE L"PASS" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro01) -{ - W3CTestBase test("i18nlro01.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro02) -{ - W3CTestBase test("i18nlro02.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nlro03) -{ - W3CTestBase test("i18nlro03.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nlro04) -{ - W3CTestBase test("i18nlro04.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nlro05) -{ - W3CTestBase test("i18nlro05.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro06) -{ - W3CTestBase test("i18nlro06.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - L"םפל" LRO L"חל" PDF L"ק"); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nlro07) -{ - W3CTestBase test("i18nlro07.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - L"םפל" LRO L"חל" PDF L"ק"); -} - -RUNNER_TEST(ta_argMozRiC_i18nlro08) -{ - W3CTestBase test("i18nlro08.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - L"םפל" LRO L"חל" PDF L"ק"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nlro09) -{ - W3CTestBase test("i18nlro09.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - L"םפל" LRO L"חל" PDF L"ק"); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro10) -{ - W3CTestBase test("i18nlro10.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName( - LRO LRO L"קח" PDF L"לל" RLO L"םפ" PDF PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nlro11) -{ - W3CTestBase test("i18nlro11.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription( - LRO LRO L"קח" PDF L"לל" RLO L"םפ" PDF PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nlro12) -{ - W3CTestBase test("i18nlro12.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - LRO LRO L"קח" PDF L"לל" RLO L"םפ" PDF PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nlro13) -{ - W3CTestBase test("i18nlro13.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - LRO LRO L"קח" PDF L"לל" RLO L"םפ" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro14) -{ - W3CTestBase test("i18nlro14.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro15) -{ - W3CTestBase test("i18nlro15.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetShortName(LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_VdCEyDVSA_i18nlro16) -{ - W3CTestBase test("i18nlro16.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_argMozRiC_i18nlro17) -{ - W3CTestBase test("i18nlro17.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nlro18) -{ - W3CTestBase test("i18nlro18.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense( - LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro19) -{ - W3CTestBase test("i18nlro19.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRO L"< PAS" LRE L"SED -->" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro20) -{ - W3CTestBase test("i18nlro20.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRO L"< PAS" RLE L"<-- DES" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro21) -{ - W3CTestBase test("i18nlro21.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRO L"< PAS" LRO L"SED -->" PDF PDF); -} - -RUNNER_TEST(ta_AYLMhryBnD_i18nlro22) -{ - W3CTestBase test("i18nlro22.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRO L"< PAS" RLO L"<-- DES" PDF PDF); -} - -RUNNER_TEST(ta_roCaKRxZhS_i18nlro23) -{ - W3CTestBase test("i18nlro23.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"test.png"); -} - -RUNNER_TEST(ta_LQcjNKBLUZ_i18nlro26) -{ - W3CTestBase test("i18nlro26.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.htm"); -} - -RUNNER_TEST(ta_paIabGIIMC_i18nlro27) -{ - W3CTestBase test("i18nlro27.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content type"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_i18nlro28) -{ - W3CTestBase test("i18nlro28.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("No way to verify content encoding"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nlro29) -{ - W3CTestBase test("i18nlro29.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); -} - -RUNNER_TEST(ta_rZdcMBExBX_i18nlro30) -{ - W3CTestBase test("i18nlro30.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:x-bugus-feature", false); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nlro31) -{ - W3CTestBase test("i18nlro31.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"םפללחק", - L"TEST"); -} - -RUNNER_TEST(ta_CEGwkNQcWo_i18nlro32) -{ - W3CTestBase test("i18nlro32.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", - L"TEST", - L"םפללחק"); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nlro33) -{ - W3CTestBase test("i18nlro33.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"םפללחק", - L"TEST", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nlro34) -{ - W3CTestBase test("i18nlro34.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"םפללחק", - false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_i18nlro35) -{ - W3CTestBase test("i18nlro35.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"TEST", - L"TEST", - true); -} - -RUNNER_TEST(ta_argMozRiC_i18nlro36) -{ - W3CTestBase test("i18nlro36.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_argMozRiC_i18nlro37) -{ - W3CTestBase test("i18nlro37.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorEmail(L"םפללחק"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_i18nlro38) -{ - W3CTestBase test("i18nlro38.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicenseHref(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_UScJfQHPPy_i18nlro39) -{ - W3CTestBase test("i18nlro39.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(123); -} - -RUNNER_TEST(ta_BxjoiWHaMr_i18nlro40) -{ - W3CTestBase test("i18nlro40.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(123); -} - -RUNNER_TEST(ta_RawAIWHoMs_i18nlro41) -{ - W3CTestBase test("i18nlro41.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetId(L"http://widget.example.org/"); -} - -RUNNER_TEST(ta_VerEfVGeTc_i18nlro42) -{ - W3CTestBase test("i18nlro42.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(LRO L"קחללפם" PDF); -} - -RUNNER_TEST(ta_viewmodes_i18nlro43) -{ - W3CTestBase test("i18nlro43.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWindowModesCount(2); - test.CheckWidgetWindowMode(L"floating"); - test.CheckWidgetWindowMode(L"windowed"); -} - -RUNNER_TEST(ta_klLDaEgJeU_i18nlro44) -{ - W3CTestBase test("i18nlro44.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(LRO L"PASS" PDF); -} - -RUNNER_TEST(ta_BnWPqNvNVo_aw) -{ - W3CTestBase test("aw.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.html"); -} - -RUNNER_TEST(ta_BxjoiWHaMr_ax) -{ - W3CTestBase test("ax.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(123); -} - -RUNNER_TEST(ta_BxjoiWHaMr_ay) -{ - W3CTestBase test("ay.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeightIsNull(); -// RUNNER_TODO_MSG("Cannot check if user agent ignored the height value"); -} - -RUNNER_TEST(ta_BxjoiWHaMr_az) -{ - W3CTestBase test("az.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(100); -} - -RUNNER_TEST(ta_BxjoiWHaMr_a1) -{ - W3CTestBase test("a1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeight(123); -} - -RUNNER_TEST(ta_BxjoiWHaMr_a2) -{ - W3CTestBase test("a2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeightIsNull(); -} - -RUNNER_TEST(ta_BxjoiWHaMr_a3) -{ - W3CTestBase test("a3.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeightIsNull(); -} - -RUNNER_TEST(ta_BxjoiWHaMr_a4) -{ - W3CTestBase test("a4.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetHeightIsNull(); -// RUNNER_TODO_MSG("Cannot check if user agent ignored the height value"); -} - -RUNNER_TEST(ta_DwhJBIJRQN_a5) -{ - W3CTestBase test("a5.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(0); -} - -RUNNER_TEST(ta_DwhJBIJRQN_a6) -{ - W3CTestBase test("a6.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(1); - test.CheckWidgetPreference(L"PASS", L"PASS", false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_a7) -{ - W3CTestBase test("a7.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(1); - test.CheckWidgetPreference(L"PASS", L"PASS", false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_a8) -{ - W3CTestBase test("a8.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(1); - test.CheckWidgetPreference(L"PASS", L"PASS", true); -} - -RUNNER_TEST(ta_DwhJBIJRQN_a9) -{ - W3CTestBase test("a9.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(1); - test.CheckWidgetPreference(L"PASS", L"PASS", false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_ba) -{ - W3CTestBase test("ba.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(1); - test.CheckWidgetPreference(L"a", L"a", false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_bb) -{ - W3CTestBase test("bb.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreferenceListLength(2); - test.CheckWidgetPreference(L"a", L"a", false); - test.CheckWidgetPreference(L"A", L"b", false); -} - -RUNNER_TEST(ta_DwhJBIJRQN_bc) -{ - W3CTestBase test("bc.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetPreference(L"PASS", L"PASS", false); -} - -MakeInvalidTest(ta_dxzVDWpaWg, bg) -MakeInvalidTest(ta_dxzVDWpaWg, bh) - -RUNNER_TEST(ta_FAFYMEGELU_bj) -{ - W3CTestBase test("bj.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_FAFYMEGELU_bk) -{ - W3CTestBase test("bk.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"locales/en/icon.png"); -} - -RUNNER_TEST(ta_FAFYMEGELU_bl) -{ - W3CTestBase test("bl.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"locales/en/icon.jpg"); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_FAFYMEGELU_bm) -{ - W3CTestBase test("bm.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"locales/en/icon.jpg"); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_FAFYMEGELU_bn) -{ - W3CTestBase test("bn.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"locales/en/icon.png"); - test.CheckWidgetIcon(L"icons/pass.png"); -} - -RUNNER_TEST(ta_FAFYMEGELU_bo) -{ - W3CTestBase test("bo.wgt"); - test.StartTest(); - test.CheckIsValid(); - int first = test.CheckWidgetIcon(L"icon.png"); - int second = test.CheckWidgetIcon(L"icon.jpg"); - RUNNER_ASSERT_MSG(second - first == 1, "Widget Icons list order mismatch"); -} - -RUNNER_TEST(ta_FAFYMEGELU_bp) -{ - W3CTestBase test("bp.wgt"); - test.StartTest(); - test.CheckIsValid(); - int first = test.CheckWidgetIcon(L"icon.png"); - int second = test.CheckWidgetIcon(L"locales/en/icon.jpg"); - RUNNER_ASSERT_MSG(second - first == 1, "Widget Icons list order mismatch"); -} - -RUNNER_TEST(ta_FAFYMEGELU_ad) -{ - W3CTestBase test("ad.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_FAFYMEGELU_ae) -{ - W3CTestBase test("ae.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"locales/en/icon.png"); -} - -RUNNER_TEST(ta_hkWmGJgfve_bq) -{ - W3CTestBase test("bq.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.html"); -} - -MakeInvalidTest(ta_hkWmGJgfve, br) - -RUNNER_TEST(ta_hkWmGJgfve_bs) -{ - W3CTestBase test("bs.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.html"); -} - -MakeInvalidTest(ta_klLDaEgJeU, bt) -MakeInvalidTest(ta_klLDaEgJeU, bu) - -RUNNER_TEST(ta_klLDaEgJeU_bv) -{ - W3CTestBase test("bv.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass&.html"); -} - -RUNNER_TEST(ta_klLDaEgJeU_bw) -{ - W3CTestBase test("bw.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); -} - -MakeInvalidTest(ta_klLDaEgJeU, lt) -MakeInvalidTest(ta_klLDaEgJeU, amp) - -RUNNER_TEST(ta_LYLMhryBBT_bx) -{ - W3CTestBase test("bx.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L"PASS"); -} - -RUNNER_TEST(ta_LYLMhryBBT_by) -{ - W3CTestBase test("by.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L""); -} - -RUNNER_TEST(ta_LYLMhryBBT_bz) -{ - W3CTestBase test("bz.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetName(L"PASS"); -} - -RUNNER_TEST(ta_RawAIWHoMs_b1) -{ - W3CTestBase test("b1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetId(L"pass:"); -} - -RUNNER_TEST(ta_RawAIWHoMs_rd) -{ - W3CTestBase test("rd.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIdIsNull(); -} - -RUNNER_TEST(ta_RawAIWHoMs_b2) -{ - W3CTestBase test("b2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetId(L"pass:"); -} - -RUNNER_TEST(ta_RGNHRBWNZV_cc) -{ - W3CTestBase test("cc.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -RUNNER_TEST(ta_RGNHRBWNZV_cv) -{ - W3CTestBase test("cv.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.html"); -} - -RUNNER_TEST(ta_RGNHRBWNZV_b3) -{ - W3CTestBase test("b3.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); - test.CheckWidgetStartFileType(L"text/html"); -} - -RUNNER_TEST(ta_RGNHRBWNZV_b4) -{ - W3CTestBase test("b4.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.html"); - test.CheckWidgetStartFileType(L"text/html"); -} - -MakeInvalidTest(ta_RGNHRBWNZV, b0) -MakeInvalidTest(ta_RGNHRBWNZV, c1) -MakeInvalidTest(ta_RGNHRBWNZV, c2) -MakeInvalidTest(ta_RGNHRBWNZV, c3) - -RUNNER_TEST(ta_RGNHRBWNZV_c4) -{ - W3CTestBase test("c4.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"INdeX.htm", true); - test.CheckWidgetStartFile(L"index.html"); -} - -RUNNER_TEST(ta_RGNHRBWNZV_c5) -{ - W3CTestBase test("c5.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"INdeX.htm", true); - test.CheckWidgetStartFile(L"index.html"); -} - -MakeInvalidTest(ta_RRZxvvTFHx, b5) - -RUNNER_TEST(ta_RRZxvvTFHx_b6) -{ - W3CTestBase test("b6.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.html"); -} - -RUNNER_TEST(ta_sdwhMozwIc_b7) -{ - W3CTestBase test("b7.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); - test.CheckAuthorHref(L"PASS:"); - test.CheckAuthorEmail(L"PASS"); -} - -RUNNER_TEST(ta_sdwhMozwIc_b8) -{ - W3CTestBase test("b8.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L""); -} - -RUNNER_TEST(ta_sdwhMozwIc_b9) -{ - W3CTestBase test("b9.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckAuthorName(L"PASS"); - test.CheckAuthorHref(L"PASS:"); - test.CheckAuthorEmail(L"PASS"); -} - -RUNNER_TEST(ta_UEMbyHERkI_c6) -{ - W3CTestBase test("c6.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_UEMbyHERkI_c7) -{ - W3CTestBase test("c7.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L""); -} - -RUNNER_TEST(ta_UEMbyHERkI_rb) -{ - W3CTestBase test("rb.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_UEMbyHERkI_c8) -{ - W3CTestBase test("c8.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_UScJfQHPPy_c9) -{ - W3CTestBase test("c9.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidthIsNull(); -// RUNNER_TODO_MSG("Cannot check if user agent ignored the width value"); -} - -RUNNER_TEST(ta_UScJfQHPPy_cq) -{ - W3CTestBase test("cq.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(123); -} - -RUNNER_TEST(ta_UScJfQHPPy_cw) -{ - W3CTestBase test("cw.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(200); -} - -RUNNER_TEST(ta_UScJfQHPPy_ce) -{ - W3CTestBase test("ce.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidth(123); -} - -RUNNER_TEST(ta_UScJfQHPPy_cr) -{ - W3CTestBase test("cr.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidthIsNull(); -// RUNNER_TODO_MSG("Cannot check if width is Null"); -} - -RUNNER_TEST(ta_UScJfQHPPy_ct) -{ - W3CTestBase test("ct.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidthIsNull(); -// RUNNER_TODO_MSG("Cannot check if width is Null"); -} - -RUNNER_TEST(ta_UScJfQHPPy_cy) -{ - W3CTestBase test("cy.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetWidthIsNull(); -// RUNNER_TODO_MSG("Cannot check if user agent ignored the width value"); -} - -RUNNER_TEST(ta_vcYJAPVEym_cu) -{ - W3CTestBase test("cu.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L"PASS"); - test.CheckWidgetLicenseHref(L"PASS:"); -} - -RUNNER_TEST(ta_vcYJAPVEym_ci) -{ - W3CTestBase test("ci.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L""); - test.CheckWidgetLicenseHrefIsNull(); -} - -RUNNER_TEST(ta_vcYJAPVEym_ra) -{ - W3CTestBase test("ra.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L"PASS"); -} - -RUNNER_TEST(ta_vcYJAPVEym_co) -{ - W3CTestBase test("co.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L"PASS"); -} - -RUNNER_TEST(ta_VdCEyDVSA_cp) -{ - W3CTestBase test("cp.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_VdCEyDVSA_ca) -{ - W3CTestBase test("ca.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_VdCEyDVSA_cs) -{ - W3CTestBase test("cs.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L""); -} - -RUNNER_TEST(ta_VdCEyDVSA_cd) -{ - W3CTestBase test("cd.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"\n\tP\n\tA\n\tS\n\tS\n"); -} - -RUNNER_TEST(ta_VdCEyDVSA_x1) -{ - W3CTestBase test("x1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_VdCEyDVSA_x2) -{ - W3CTestBase test("x2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetDescription(L"PASS"); -} - -RUNNER_TEST(ta_VerEfVGeTc_cf) -{ - W3CTestBase test("cf.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(L"PASS"); -} - -RUNNER_TEST(ta_VerEfVGeTc_cg) -{ - W3CTestBase test("cg.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(L""); -} - -RUNNER_TEST(ta_VerEfVGeTc_ch) -{ - W3CTestBase test("ch.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetVersion(L"PASS"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_cj) -{ - W3CTestBase test("cj.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L"PASS"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_ck) -{ - W3CTestBase test("ck.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L"PASS"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_cl) -{ - W3CTestBase test("cl.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L""); -} - -RUNNER_TEST(ta_YUMJAPVEgI_cz) -{ - W3CTestBase test("cz.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L"\n\tP\n\tA\n\tS\n\tS\n"); -} - -RUNNER_TEST(ta_YUMJAPVEgI_cx) -{ - W3CTestBase test("cx.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLicense(L""); - test.CheckWidgetLicenseHref(L"test/pass.html"); -} - -RUNNER_TEST(ta_iipTwNshRg_d1) -{ - W3CTestBase test("d1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(1); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_iipTwNshRg_ga) -{ - W3CTestBase test("ga.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(1); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_roCaKRxZhS_d2) -{ - W3CTestBase test("d2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(1); - test.CheckWidgetIcon(L"icon.png"); -} - -RUNNER_TEST(ta_MFcsScFEaC_d3) -{ - W3CTestBase test("d3.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -MakeInvalidTest(ta_paWbGHyVrG, d4) - -RUNNER_TEST(ta_luyKMFABLX_d5) -{ - W3CTestBase test("d5.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(0); -} - -RUNNER_TEST(ta_xlgUWUVzCY_d6) -{ - W3CTestBase test("d6.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 0); -} - -RUNNER_TEST(ta_LTUJGJFCOU_d7) -{ - W3CTestBase test("d7.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -RUNNER_TEST(ta_LTUJGJFCOU_d8) -{ - W3CTestBase test("d8.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -RUNNER_TEST(ta_LTUJGJFCOU_gb) -{ - W3CTestBase test("gb.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -MakeInvalidTest(ta_LQcjNKBLUZ, d9) - -RUNNER_TEST(ta_LQcjNKBLUZ_d0) -{ - W3CTestBase test("d0.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -MakeInvalidTest(ta_ZjcdAxFMSx, dq) -MakeInvalidTest(ta_ZjcdAxFMSx, dw) - -//RUNNER_TEST(ta_xGYcVTMoAX_ds) -//{ -// W3CTestBase test("ds.wgt"); -// test.StartTest(); -// test.CheckIsValid(); -// test.CheckAuthorEmailIsNull(); -// test.CheckAuthorHrefIsNull(); -// test.CheckAuthorNameIsNull(); -// test.CheckWidgetFeatureListLength(0); -// test.CheckWidgetIconListLength(0); -// test.CheckWidgetStartFileEncoding(L"UTF-8"); -// test.CheckWidgetStartFileType(L"text/html"); -// //(widget config doc must be 'config.xml' at the root of the widget package) -// //This is implicitly tested by test.CheckIsValid(). -// test.CheckWidgetDescriptionIsNull(); -// test.CheckWidgetHeightIsNull(); -// test.CheckWidgetIdIsNull(); -// test.CheckWidgetLicenseIsNull(); -// test.CheckWidgetLicenseHrefIsNull(); -// //(test.CheckWidgetLicence file is null) -// //This is implicitly tested by above, we don't store the licence file in DB -// test.CheckWidgetNameIsNull(); -// test.CheckWidgetPreferenceListLength(0); -// test.CheckWidgetShortNameIsNull(); -// test.CheckWidgetVersionIsNull(); -// test.CheckWidgetWidthIsNull(); -// test.CheckWidgetWindowModesCount(0); -// test.CheckWidgetStartFile(L"index.htm", false); -// //(user agent locales must contain at least one item whose value is 'en') -// //There seems to be no support for this, TODO for Piotr M? -//} - -RUNNER_TEST(ta_paIabGIIMC_dc) -{ - W3CTestBase test("dc.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.php"); - test.CheckWidgetStartFileType(L"text/html"); -} - -MakeInvalidTest(ta_paIabGIIMC, dv) - -RUNNER_TEST(ta_rZdcMBExBX_df) -{ - W3CTestBase test("df.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(0); -} - -RUNNER_TEST(ta_rZdcMBExBX_ha) -{ - W3CTestBase test("ha.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(2); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", L"test", L"pass1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", L"test", L"pass2"); -} - -RUNNER_TEST(ta_EGkPfzCBOz_dt) -{ - W3CTestBase test("dt.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(1); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 0); -} - -RUNNER_TEST(ta_EGkPfzCBOz_dg) -{ - W3CTestBase test("dg.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(1); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 1); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", L"PASS", L"PASS"); -} - -RUNNER_TEST(ta_EGkPfzCBOz_v9) -{ - W3CTestBase test("v9.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(1); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 2); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", L"PASS", L"value1"); - test.CheckWidgetFeatureParam(L"feature:a9bb79c1", L"PASS", L"value2"); -} - -RUNNER_TEST(ta_pIffQywZin_db) -{ - W3CTestBase test("db.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -RUNNER_TEST(ta_FDGQBROtzW_dn) -{ - W3CTestBase test("dn.test"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -RUNNER_TEST(ta_FDGQBROtzW_dm) -{ - W3CTestBase test("dm"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"index.htm"); -} - -MakeInvalidTest(ta_qxLSCRCHlN, dk) -MakeInvalidTest(ta_uLHyIMvLwz, dl) - -RUNNER_TEST(ta_uLHyIMvLwz_do) -{ - W3CTestBase test("split.wgt.001"); - test.StartTest(); - test.CheckIsNotValid(); -} - -MakeInvalidTest(ta_uLHyIMvLwz, dp) - -RUNNER_TEST(ta_KNiLPOKdgQ_e1) -{ - W3CTestBase test("e1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 0); -} - -RUNNER_TEST(ta_CEGwkNQcWo_e2) -{ - W3CTestBase test("e2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 0); -} - -RUNNER_TEST(ta_CEGwkNQcWo_e3) -{ - W3CTestBase test("e3.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeature(L"feature:a9bb79c1"); - test.CheckWidgetFeatureParamListLength(L"feature:a9bb79c1", 0); -} - -RUNNER_TEST(ta_dPOgiLQKNK_e4) -{ - W3CTestBase test("e4.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFileEncoding(L"UTF-8"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_e5) -{ - W3CTestBase test("e5.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFileEncoding(L"ISO-8859-1"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_e6) -{ - W3CTestBase test("e6.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFileEncoding(L"ISO-8859-1"); -} - -RUNNER_TEST(ta_dPOgiLQKNK_e7) -{ - W3CTestBase test("e7.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFileEncoding(L"UTF-8"); -} - -MakeInvalidTest(ta_vOBaOcWfll, e8) - -RUNNER_TEST(ta_bbbbbbbbbb_xx) -{ - W3CTestBase test("xx.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFile(L"pass.html"); -} - -RUNNER_TEST(ta_iuJHnskSHq_zz) -{ - W3CTestBase test("zz.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(0); -} - -RUNNER_TEST(ta_iuJHnskSHq_za) -{ - W3CTestBase test("za.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(1); - test.CheckWidgetIcon(L"pass.png"); -} - -RUNNER_TEST(ta_iuJHnskSHq_zb) -{ - W3CTestBase test("zb.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(1); - test.CheckWidgetIcon(L"locales/en/icon.png"); - test.CheckWidgetIconWidthAndHeightAreNull(L"locales/en/icon.png"); -} - -RUNNER_TEST(ta_iuJHnskSHq_zc) -{ - W3CTestBase test("zc.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconListLength(1); - test.CheckWidgetIcon(L"locales/en/custom.png"); - test.CheckWidgetIconWidthAndHeightAreNull(L"locales/en/custom.png"); -} - -RUNNER_TEST(ta_eHUaPbgfKg_ix) -{ - W3CTestBase test("ix.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconHeight(L"icon/icon.png", 123); -} - -RUNNER_TEST(ta_eHUaPbgfKg_iy) -{ - W3CTestBase test("iy.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconHeightIsNull(L"icon/icon.png"); -} - -RUNNER_TEST(ta_eHUaPbgfKg_iz) -{ - W3CTestBase test("iz.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconHeight(L"icon/icon.png", 100); -} - -RUNNER_TEST(ta_eHUaPbgfKg_i1) -{ - W3CTestBase test("i1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconHeight(L"icon/icon.png", 123); -} - -RUNNER_TEST(ta_eHUaPbgfKg_i2) -{ - W3CTestBase test("i2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"icon/icon.png"); - test.CheckWidgetIconHeightIsNull(L"icon/icon.png"); -} - -RUNNER_TEST(ta_eHUaPbgfKg_i3) -{ - W3CTestBase test("i3.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIcon(L"icon/icon.png"); - test.CheckWidgetIconHeightIsNull(L"icon/icon.png"); -} - -RUNNER_TEST(ta_eHUaPbgfKg_i4) -{ - RUNNER_IGNORED_MSG( - "Test definition seems to be inconsistent with the specification"); -// W3CTestBase test("i4.wgt"); -// test.StartTest(); -// test.CheckIsValid(); -// test.CheckWidgetIconHeight("icon/icon.png", 0); -} - -RUNNER_TEST(ta_nYAcofihvj_iq) -{ - W3CTestBase test("iq.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconWidth(L"icon/icon.png", 123); -} - -RUNNER_TEST(ta_nYAcofihvj_i9) -{ - RUNNER_IGNORED_MSG( - "Test definition seems to be inconsistent with the specification"); -// W3CTestBase test("i9.wgt"); -// test.StartTest(); -// test.CheckIsValid(); -// test.CheckWidgetIconWidth("icon/icon.png", 0); -} - -RUNNER_TEST(ta_nYAcofihvj_iw) -{ - W3CTestBase test("iw.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconWidth(L"icon/icon.png", 100); -} - -RUNNER_TEST(ta_nYAcofihvj_ie) -{ - W3CTestBase test("ie.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconWidth(L"icon/icon.png", 123); -} - -RUNNER_TEST(ta_nYAcofihvj_ir) -{ - W3CTestBase test("ir.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconWidthIsNull(L"icon/icon.png"); -} - -RUNNER_TEST(ta_nYAcofihvj_it) -{ - W3CTestBase test("it.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetIconWidthIsNull(L"icon/icon.png"); -} - -RUNNER_TEST(ta_nYAcofihvj_ib) -{ - RUNNER_IGNORED_MSG("Test definition seems to be inconsistent with the specification"); -// W3CTestBase test("ib.wgt"); -// test.StartTest(); -// test.CheckIsValid(); -// test.CheckWidgetIconWidth("icon/icon.png", 0); -} - -RUNNER_TEST(ta_aaaaaaaaaa_z1) -{ - W3CTestBase test("z1.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFileEncoding(L"ISO-8859-1"); -} - -RUNNER_TEST(ta_aaaaaaaaaa_z2) -{ - W3CTestBase test("z2.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetStartFileEncoding(L"Windows-1252"); -} - -RUNNER_TEST(ta_GVVIvsdEUo_z3) -{ - RUNNER_TODO_MSG("http test not enabled !!!"); - W3CTestBase test("z3"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("Cannot check mimetype"); -} - -RUNNER_TEST(ta_GVVIvsdEUo_z4) -{ - RUNNER_TODO_MSG("http test not enabled !!!"); - W3CTestBase test("z4.html"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_TODO_MSG("Cannot check mimetype"); -} - -RUNNER_TEST(ta_GVVIvsdEUo_z5) -{ - RUNNER_TODO_MSG("http test not enabled !!!"); - W3CTestBase test("z5.wgt"); - test.StartTest(); - test.CheckIsNotValid(); - RUNNER_TODO_MSG("Cannot check mimetype for wrong value"); -} - -RUNNER_TEST(ta_ignore_unrequired_feature_with_invalid_name_gg) -{ - W3CTestBase test("gg.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetFeatureListLength(0); -} - -RUNNER_TEST(ta_defaultlocale_ignore_ta_de_000) -{ - W3CTestBase test("ta-de-000.wgt"); - test.StartTest(); - test.CheckIsValid(); - test.CheckWidgetLanguageTags(LocalizationUtils::GetUserAgentLanguageTags()); -} - -RUNNER_TEST(ta_defaultlocale_ignore_ta_de_001) -{ - W3CTestBase test("ta-de-001.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_IGNORED_MSG("Not clear what to test"); -} - -RUNNER_TEST(ta_defaultlocale_ignore_ta_de_002) -{ - W3CTestBase test("ta-de-002.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_IGNORED_MSG("Not clear how to test"); -} - -RUNNER_TEST(ta_defaultlocale_ignore_ta_de_003) -{ - W3CTestBase test("ta-de-003.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_IGNORED_MSG("Not valid Test Cases - W3C incompatibility"); -} - -RUNNER_TEST(ta_defaultlocale_ignore_ta_de_004) -{ - W3CTestBase test("ta-de-004.wgt"); - test.StartTest(); - test.CheckIsValid(); - RUNNER_IGNORED_MSG("Not clear how to test"); -} - -RUNNER_TEST(ta_defaultlocale_process_dlocuse01) -{ - RUNNER_IGNORED_MSG("No file"); -} - -RUNNER_TEST(ta_defaultlocale_process_dlocuse02) -{ - RUNNER_IGNORED_MSG("No file"); -} - -RUNNER_TEST(ta_defaultlocale_process_dlocuse03) -{ - RUNNER_IGNORED_MSG("No file"); -} diff --git a/tests/w3c_tests/W3CTestBase.cpp b/tests/w3c_tests/W3CTestBase.cpp deleted file mode 100644 index 26838b0..0000000 --- a/tests/w3c_tests/W3CTestBase.cpp +++ /dev/null @@ -1,730 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "W3CTestBase.h" - -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -#include "InstallerWrapper.h" - -using namespace WrtDB; - -W3CTestBase::~W3CTestBase() -{ - LogDebug("Finishing test case"); - - LogDebug("deleting dao"); - if (dao) - { - delete dao; - } - - if (NULL != dao) - { - LogDebug("Uninstalling widget " << widgetHandle); - InstallerWrapper::uninstall(widgetHandle); - } - - LogDebug("Finished"); -} - -void W3CTestBase::StartTest() -{ - this->widgetHandle = InstallerWrapper::install(DPL::FromUTF8String(widgetPath)); - if (InstallerWrapper::OtherError == this->widgetHandle) { - this->dao = NULL; - this->m_wrongWidgetPackage = false; - } else if (InstallerWrapper::WrongWidgetPackage == this->widgetHandle) { - this->dao = NULL; - this->m_wrongWidgetPackage = true; - } else { - this->dao = new WidgetDAOReadOnly(this->widgetHandle); - } -} - -void W3CTestBase::CheckIsNotValid() -{ - DPL::String msg; - if (dao) - { - msg = L"Widget should not be installed but has been anyway"; - } else if (!m_wrongWidgetPackage) { - msg = L"Unknown error happend"; - } - - RUNNER_ASSERT_MSG(!dao && m_wrongWidgetPackage, - "Install finished with: " << msg); -} - -void W3CTestBase::CheckIsValid() -{ - DPL::String msg; - if (!dao) { - if (m_wrongWidgetPackage) { - msg = L"Wrong widget package"; - } else { - msg = L"Unknown error happend"; - } - } - - RUNNER_ASSERT_MSG(dao && !m_wrongWidgetPackage, - "Install finished with: " << msg); -} - -void W3CTestBase::CheckAuthorName(const DPL::String& name) -{ - RUNNER_ASSERT(dao); - DPL::Optional wname = dao->getAuthorName(); - RUNNER_ASSERT_MSG(!!wname, "Author name must not be null"); - - RUNNER_ASSERT_MSG (*wname == name, "Author name is '" << - *wname << "' but should be '" << name << "'"); -} - -void W3CTestBase::CheckAuthorNameIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getAuthorName(), "Author name must be null"); -} - -void W3CTestBase::CheckAuthorNameIsNotNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!!dao->getAuthorName(), "Author name must not be null"); -} - -void W3CTestBase::CheckAuthorEmail(const DPL::String& email) -{ - RUNNER_ASSERT(dao); - DPL::Optional wemail = dao->getAuthorEmail(); - RUNNER_ASSERT_MSG(!!wemail, "Author email must not be null"); - - RUNNER_ASSERT_MSG (*wemail == email, "Author email is '" << - *wemail << "' but should be '" << email << "'"); -} - -void W3CTestBase::CheckAuthorEmailIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getAuthorEmail(), "Author email must be null"); -} - -void W3CTestBase::CheckAuthorEmailIsNotNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!!dao->getAuthorEmail(), "Author email must not be null"); -} - -void W3CTestBase::CheckAuthorHref(const DPL::String& href) -{ - RUNNER_ASSERT(dao); - DPL::Optional whref = dao->getAuthorHref(); - - RUNNER_ASSERT_MSG(!!whref, "Author href must not be null"); - - RUNNER_ASSERT_MSG (*whref == href, "Author href is '" << *whref - << "' but should be '" << href << "'"); -} - -void W3CTestBase::CheckAuthorHrefIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getAuthorHref(), "Author href must be null"); -} - -void W3CTestBase::CheckWidgetName(const DPL::String& name) -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wname = localizedInfo.name; - RUNNER_ASSERT_MSG (!!wname, "Widget name must be diffrent than null"); - RUNNER_ASSERT_MSG (*wname == name, "Widget name should be '" << name - << "' but is '" << *wname << "'"); -} - -void W3CTestBase::CheckWidgetNameIsNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wname = localizedInfo.name; - RUNNER_ASSERT_MSG (!wname, "Widget name must be null"); -} - -void W3CTestBase::CheckWidgetNameIsNotNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wname = localizedInfo.name; - RUNNER_ASSERT_MSG (!!wname, "Widget name must not be null"); -} - -void W3CTestBase::CheckWidgetShortNameIsNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wname = localizedInfo.shortName; - RUNNER_ASSERT_MSG (!wname, - "Widget short name must be null"); -} - -void W3CTestBase::CheckWidgetShortNameIsNotNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wname = localizedInfo.shortName; - RUNNER_ASSERT_MSG (!!wname, - "Widget short name must not be null"); -} - -void W3CTestBase::CheckWidgetShortName(const DPL::String& name) -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wname = localizedInfo.shortName; - RUNNER_ASSERT_MSG(!!wname, "Widget short name must be diffrent than null"); - RUNNER_ASSERT_MSG(*wname == name, "Widget short name should be '" << name - << "' but is '" << *wname << "'"); -} - -void W3CTestBase::CheckWidgetStartFile(const DPL::String& file, bool negate) -{ - using namespace W3CFileLocalization; - RUNNER_ASSERT(dao); - - DPL::Optional opwfile = - W3CFileLocalization::getStartFile(widgetHandle); - DPL::String wfile; - if (!!opwfile) wfile = *opwfile; - LogDebug("Start file found: " << opwfile); - if (negate) - { - RUNNER_ASSERT_MSG (wfile != file, "Widget start file same: '" - << wfile << " == " << file << " '"); - } - else - { - RUNNER_ASSERT_MSG (wfile == file, "Widget start file differs: '" << - wfile << " != " << file << " '"); - } -} - -void W3CTestBase::CheckWidgetStartFileType(const DPL::String& type) -{ - RUNNER_ASSERT(dao); - OptionalWidgetStartFileInfo info = - W3CFileLocalization::getStartFileInfo(widgetHandle, m_tags); - DPL::Optional wtype; - if (!!info) wtype = info->type; - RUNNER_ASSERT_MSG(!!wtype, "Widget start file type is not set."); - RUNNER_ASSERT_MSG(type == *wtype, "Widget start file type: '" << - *wtype << " != " << type << " '"); -} - -void W3CTestBase::CheckWidgetStartFileEncoding(const DPL::String& enc) -{ - RUNNER_ASSERT(dao); - OptionalWidgetStartFileInfo info = - W3CFileLocalization::getStartFileInfo(widgetHandle, m_tags); - DPL::Optional wenc; - if (!!info) wenc = info->encoding; - RUNNER_ASSERT_MSG(!!wenc, "Widget start file encoding is not set."); - RUNNER_ASSERT_MSG(enc == *wenc, "Widget start file differs: '" << - *wenc << " != " << enc << " '"); -} - -void W3CTestBase::CheckWidgetHeightIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getPreferredSize().height, - "Widget height must be null"); -} - -void W3CTestBase::CheckWidgetHeight(int height) -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(dao->getPreferredSize().height, - "Widget height must not be null"); - int h = (*dao->getPreferredSize().height); - RUNNER_ASSERT_MSG(h == height, "Widget height returned: " << h); -} - -void W3CTestBase::CheckWidgetWidthIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getPreferredSize().width, - "Widget width must be null"); -} - -void W3CTestBase::CheckWidgetWidth(int width) -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(dao->getPreferredSize().width, - "Widget width must not be null"); - int w = (*dao->getPreferredSize().width); - RUNNER_ASSERT_MSG(w == width, "Widget width returned: " << w); -} - -void W3CTestBase::CheckWidgetPreferenceListLength(unsigned len) -{ - RUNNER_ASSERT(dao); - unsigned size = dao->getPropertyList().size(); - RUNNER_ASSERT_MSG(size == len, "Widget preference list should be of length:" - << len << " but is: " << size); -} - -void W3CTestBase::CheckWidgetPreference(const DPL::String& name, - const DPL::String& value, - bool readonly) -{ - RUNNER_ASSERT(dao); - PropertyDAOReadOnly::WidgetPreferenceList list = dao->getPropertyList(); - FOREACH (it, list) - { - if (it->key_name == name && - (!!it->key_value) && - *it->key_value == value && - it->readonly == readonly) - { - RUNNER_ASSERT_MSG(true, "Preference (" << name << - ", " << value << ") found!!"); - return; // Found so returning - } - } - RUNNER_ASSERT_MSG(false, "Preference (" << name << ", " << - value << ") not found!!"); -} - -void W3CTestBase::CheckWidgetIconListLength(unsigned len) -{ - RUNNER_ASSERT(dao); - - W3CFileLocalization::WidgetIconList list = - W3CFileLocalization::getValidIconsList(widgetHandle, m_tags); - - W3CFileLocalization::WidgetIconList::iterator it; - unsigned size = list.size(); - for (it = list.begin(); it != list.end(); ++it) - { - LogDebug(it->src); - } - RUNNER_ASSERT_MSG(size == len, "Widget icon list should be of length: " << - len << " but is: " << size); -} - -int W3CTestBase::CheckWidgetIcon(const DPL::String& path) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - - W3CFileLocalization::WidgetIconList list = - W3CFileLocalization::getValidIconsList(widgetHandle, m_tags); - - W3CFileLocalization::WidgetIconList::iterator it; - LogDebug("icons found: " << list.size()); - int number = 0; - for (it = list.begin(); it != list.end(); ++it, ++number) - { - LogDebug("Checking: " << it->src); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - it->src); - if (!!oppath && *oppath == path) - { - RUNNER_ASSERT_MSG(true, "Icon (" << path << ") found!!"); - return number; - } - } - RUNNER_ASSERT_MSG(false, "Icon (" << path << ") not found!!"); - return -1; -} - -void W3CTestBase::CheckWidgetIconHeight(const DPL::String& path, int height) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - icon->src); - RUNNER_ASSERT_MSG(!!oppath && *oppath == path, - "Wrong icon found: " << oppath << " != " << path); - RUNNER_ASSERT_MSG(!!icon->height && - *(icon->height) == height, "Icon height not match"); -} - -void W3CTestBase::CheckWidgetIconHeightIsNull(const DPL::String& path) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - icon->src); - RUNNER_ASSERT_MSG(!!oppath && *oppath == path, - "Wrong icon found: " << oppath << " != " << path); - RUNNER_ASSERT_MSG(!icon->height, "Icon height should be null"); -} - -void W3CTestBase::CheckWidgetIconWidth(const DPL::String& path, int width) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - icon->src); - RUNNER_ASSERT_MSG(!!oppath && *oppath == path, - "Wrong icon found: " << oppath << " != " << path); - RUNNER_ASSERT_MSG(!!icon->width && - *(icon->width) == width, "Icon width not match"); -} - -void W3CTestBase::CheckWidgetIconWidthIsNull(const DPL::String& path) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - icon->src); - RUNNER_ASSERT_MSG(!!oppath && *oppath == path, - "Wrong icon found: " << oppath << " != " << path); - RUNNER_ASSERT_MSG(!icon->width, "Icon width should be null"); -} - -void W3CTestBase::CheckWidgetIconWidthAndHeight(const DPL::String& path, - int width, - int height) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - icon->src); - RUNNER_ASSERT_MSG(!!oppath && *oppath == path, - "Wrong icon found: " << oppath << " != " << path); - RUNNER_ASSERT_MSG(!!icon->width && - *(icon->width) == width, "Icon width not match"); - RUNNER_ASSERT_MSG(!!icon->height && - *(icon->height) == height, "Icon height not match"); -} - -void W3CTestBase::CheckWidgetIconWidthAndHeightAreNull(const DPL::String& path) -{ - RUNNER_ASSERT(dao); - OptionalWidgetIcon icon = W3CFileLocalization::getIcon(widgetHandle); - RUNNER_ASSERT_MSG(!!icon, "Icon not found"); - DPL::OptionalString oppath = - W3CFileLocalization::getFilePathInWidgetPackage(widgetHandle, - m_tags, - icon->src); - RUNNER_ASSERT_MSG(!!oppath && *oppath == path, - "Wrong icon found: " << oppath << " != " << path); - RUNNER_ASSERT_MSG(!icon->width, "Icon width should be null"); - RUNNER_ASSERT_MSG(!icon->height, "Icon height should be null"); -} - -void W3CTestBase::CheckWidgetId(const DPL::String& id) -{ - RUNNER_ASSERT(dao); - DPL::OptionalString tmp = dao->getGUID(); - RUNNER_ASSERT(!!tmp); - RUNNER_ASSERT_MSG(id == *tmp, "Widget id doesn't match (" << - id << " != " << *tmp << ")"); -} - -void W3CTestBase::CheckWidgetIdIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getGUID(), "Widget id must be null"); -} - -void W3CTestBase::CheckWidgetDescriptionIsNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - RUNNER_ASSERT_MSG(!localizedInfo.description, - "Widget description must be null"); -} - -void W3CTestBase::CheckWidgetDescriptionIsNotNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - RUNNER_ASSERT_MSG(!localizedInfo.description, - "Widget description must not be null"); -} - -void W3CTestBase::CheckWidgetDescription(const DPL::String& desc) -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional wdesc = localizedInfo.description; - RUNNER_ASSERT_MSG(!!wdesc, "Widget description must not be null"); - RUNNER_ASSERT_MSG(*wdesc == desc, "Widget description is '" << - *wdesc << "' but should be '" << desc << "'"); -} - -void W3CTestBase::CheckWidgetLicenseIsNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - RUNNER_ASSERT_MSG(!localizedInfo.license, "Widget license must be null"); -} - -void W3CTestBase::CheckWidgetLicense(const DPL::String& license) -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional lic = localizedInfo.license; - RUNNER_ASSERT_MSG(!!lic, "Widget license must not be null"); - RUNNER_ASSERT_MSG(license == *lic, "Widget license doesn't match (" << - license << " != " << *lic << ")"); -} - -void W3CTestBase::CheckWidgetLicenseHrefIsNull() -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - RUNNER_ASSERT_MSG(!localizedInfo.licenseHref, - "Widget license href must be null"); -} - -void W3CTestBase::CheckWidgetLicenseHref(const DPL::String& license) -{ - RUNNER_ASSERT(dao); - WidgetLocalizedInfo localizedInfo = - W3CFileLocalization::getLocalizedInfo(widgetHandle); - DPL::Optional lic = localizedInfo.licenseHref; - RUNNER_ASSERT_MSG(!!lic, "Widget license href must not be null"); - RUNNER_ASSERT_MSG(license == *lic, "Widget license href doesn't match (" << - license << " != " << *lic << ")"); -} - -void W3CTestBase::CheckWidgetVersionIsNull() -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(!dao->getVersion(), "Widget version must be null"); -} - -void W3CTestBase::CheckWidgetVersion(const DPL::String& version) -{ - RUNNER_ASSERT(dao); - DPL::Optional ver = dao->getVersion(); - RUNNER_ASSERT_MSG(!!ver, "Widget version must not be null"); - - RUNNER_ASSERT_MSG(version == *ver, "Widget version should be" << - version << " but is " << *ver << ")"); -} - -void W3CTestBase::CheckWidgetFeatureListLength(unsigned len) -{ - RUNNER_ASSERT(dao); - unsigned size = dao->getFeaturesList().size(); - RUNNER_ASSERT_MSG(size == len, "Widget feature list should be of length: " - << len << " but is: " << size); -} - -void W3CTestBase::CheckWidgetFeature(const DPL::String& name ) -{ - RUNNER_ASSERT(dao); - RUNNER_ASSERT_MSG(dao->hasFeature(DPL::ToUTF8String(name)), - "Feature ( " << name << " ) not found."); -} - -void W3CTestBase::CheckWidgetFeature(const DPL::String& name, bool required) -{ - bool found = false; - bool verified = false; - RUNNER_ASSERT(dao); - WidgetFeatureSet features = dao->getFeaturesList(); - FOREACH (it, features) - { - if (it->name == name) - { - found = true; - if (it->required == required) - { - verified = true; - } - } - } - RUNNER_ASSERT_MSG(found, "Feature ( " << name << " ) not found. "); - RUNNER_ASSERT_MSG(verified, "Feature required attribute mismatched."); -} - -void W3CTestBase::CheckWidgetFeatureParamListLength(const DPL::String& name, - unsigned length) -{ - bool found = false; - bool verified = false; - RUNNER_ASSERT(dao); - WidgetFeatureSet features = dao->getFeaturesList(); - FOREACH (it, features) - { - if (it->name == name) - { - found = true; - size_t size = - dao->getResourceAttribute(DPL::ToUTF8String(name)).size(); - if (size == length) - { - verified = true; - break; - } - } - } - RUNNER_ASSERT_MSG(found, "Feature ( " << name << " ) not found. "); - RUNNER_ASSERT_MSG(verified, - "Feature ( " << name << " ) has wrong params count:"); -} - -void W3CTestBase::CheckWidgetFeatureParam(const DPL::String& fname, - const DPL::String& pname) -{ - bool found = false; - bool verified = false; - RUNNER_ASSERT(dao); - WidgetFeatureSet features = dao->getFeaturesList(); - FOREACH (it, features) - { - if (it->name == fname) - { - found = true; - std::list ns = - dao->getResourceAttribute(DPL::ToUTF8String(fname)); - if (std::find(ns.begin(), - ns.end(), - DPL::ToUTF8String(pname)) != ns.end()) - { - verified = true; - break; - } - } - } - RUNNER_ASSERT_MSG(found, "Feature ( " << fname << " ) not found. "); - RUNNER_ASSERT_MSG(verified, - "Feature param ( " << pname << " ) not found. "); -} - -void W3CTestBase::CheckWidgetFeatureParam(const DPL::String& fname, - const DPL::String& pname, - const DPL::String& value) -{ - bool ffound = false; - bool pfound = false; - bool verified = false; - RUNNER_ASSERT(dao); - WidgetFeatureSet features = dao->getFeaturesList(); - FOREACH (it, features) - { - if (it->name == fname) - { - ffound = true; - if (it->params.count(pname) >= 1) - { - pfound = true; - std::pair paramValuesRange; - paramValuesRange = it->params.equal_range(pname); - std::pair toFind(pname, - value); - if (std::find(paramValuesRange.first, paramValuesRange.second, - toFind) != paramValuesRange.second) - { - verified = true; - break; - } - } - } - } - RUNNER_ASSERT_MSG(ffound, - "Feature ( " << fname << " ) not found. "); - RUNNER_ASSERT_MSG(pfound, - "Feature param ( " << pname << " ) not found. "); - RUNNER_ASSERT_MSG(verified, - "Feature param value mismatch ( " << value << " )"); -} - -void W3CTestBase::CheckWidgetWindowModesCount(size_t len) -{ - RUNNER_ASSERT(dao); - size_t size = dao->getWindowModes().size(); - RUNNER_ASSERT_MSG(size == len, - "Widget window modes list should be of length: " - << len << " but is: " << size); -} - -void W3CTestBase::CheckWidgetWindowMode(const DPL::String& mode) -{ - RUNNER_ASSERT(dao); - std::list list = dao->getWindowModes(); - FOREACH(m, list) { - if (*m == mode) { - RUNNER_ASSERT(true); - return; - } - } - - RUNNER_ASSERT_MSG(false, "Widget window mode'" << mode <<" not found"); -} - -void W3CTestBase::CheckWidgetLanguageTags(const LanguageTagsList& tags) -{ - RUNNER_ASSERT_MSG(m_tags == tags, "Locales do not pass"); -} - -void W3CTestBase::CheckWidgetLanguageTag(const DPL::String& tag) -{ - FOREACH(it, m_tags) { - if (*it == tag) { - RUNNER_ASSERT_MSG(false, "locale should not be found"); - return; - } - } - RUNNER_ASSERT(true); -} - diff --git a/tests/w3c_tests/W3CTestBase.h b/tests/w3c_tests/W3CTestBase.h deleted file mode 100644 index c65d6a3..0000000 --- a/tests/w3c_tests/W3CTestBase.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef W3C_TEST_BASE_H -#define W3C_TEST_BASE_H - -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include "InstallerWrapper.h" - -class W3CTestBase : DPL::Noncopyable -{ -protected: - WrtDB::WidgetDAOReadOnly* dao; - -protected: - std::string widgetPath; - InstallerWrapper::WidgetHandle widgetHandle; - bool m_wrongWidgetPackage; - LanguageTagsList m_tags; - -public: - W3CTestBase (const std::string path) : - dao(0), - widgetPath (std::string(WrtDB::GlobalConfig::GetTestsDataPath()) + - "/w3c_widgets/" + path), - widgetHandle(0), - m_wrongWidgetPackage(false) - { - LanguageTagsList empty; - LocalizationUtils::SetUserLanguageTags(empty); - empty.push_back(L"en"); - LocalizationUtils::SetSystemLanguageTags(empty); - m_tags = LocalizationUtils::GetUserAgentLanguageTags(); - } - - void StartTest(); - - void CheckIsValid(); - void CheckIsNotValid(); - void CheckAuthorName(const DPL::String&); - void CheckAuthorNameIsNull(); - void CheckAuthorNameIsNotNull(); - void CheckAuthorEmail(const DPL::String&); - void CheckAuthorEmailIsNull(); - void CheckAuthorEmailIsNotNull(); - void CheckAuthorHref(const DPL::String&); - void CheckAuthorHrefIsNull(); - void CheckWidgetName(const DPL::String&); - void CheckWidgetNameIsNull(); - void CheckWidgetNameIsNotNull(); - void CheckWidgetShortName(const DPL::String&); - void CheckWidgetShortNameIsNull(); - void CheckWidgetShortNameIsNotNull(); - void CheckWidgetStartFile(const DPL::String&, bool negate = false); - void CheckWidgetStartFileEncoding(const DPL::String&); - void CheckWidgetStartFileType(const DPL::String&); - void CheckWidgetHeight(int height); - void CheckWidgetHeightIsNull(); - void CheckWidgetWidth(int widget); - void CheckWidgetWidthIsNull(); - void CheckWidgetPreferenceListLength(unsigned len); - void CheckWidgetPreference(const DPL::String& name, - const DPL::String& value, - bool readonly); - void CheckWidgetIconListLength(unsigned len); - int CheckWidgetIcon(const DPL::String& name); - void CheckWidgetIconHeight(const DPL::String& name, int height); - void CheckWidgetIconWidth(const DPL::String& name, int width); - void CheckWidgetIconHeightIsNull(const DPL::String& name); - void CheckWidgetIconWidthIsNull(const DPL::String& name); - void CheckWidgetIconWidthAndHeight(const DPL::String& path, - int width, - int height); - void CheckWidgetIconWidthAndHeightAreNull(const DPL::String& path); - void CheckWidgetId(const DPL::String& id); - void CheckWidgetIdIsNull(); - void CheckWidgetDescriptionIsNull(); - void CheckWidgetDescriptionIsNotNull(); - void CheckWidgetDescription(const DPL::String& description); - void CheckWidgetLicenseIsNull(); - void CheckWidgetLicense(const DPL::String& license); - void CheckWidgetLicenseHrefIsNull(); - void CheckWidgetLicenseHref(const DPL::String& license); - void CheckWidgetVersionIsNull(); - void CheckWidgetVersion(const DPL::String& version); - void CheckWidgetFeatureListLength(unsigned len); - void CheckWidgetFeature(const DPL::String& name); - void CheckWidgetFeature(const DPL::String& name, bool required); - void CheckWidgetFeatureParamListLength(const DPL::String& fname, - unsigned length); - void CheckWidgetFeatureParam(const DPL::String& fname, - const DPL::String& pname); - void CheckWidgetFeatureParam(const DPL::String& fname, - const DPL::String&, - const DPL::String&); - void CheckWidgetWindowModesCount(size_t len); - void CheckWidgetWindowMode(const DPL::String& mode); - void CheckWidgetLanguageTags(const LanguageTagsList& tags); - void CheckWidgetLanguageTag(const DPL::String& tag); - - virtual ~W3CTestBase(); -}; - -#endif diff --git a/tests/w3c_tests/download.sh b/tests/w3c_tests/download.sh deleted file mode 100644 index 9a12388..0000000 --- a/tests/w3c_tests/download.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -for i in $(cat test-suite.xml| grep "oSlG7QQ2d1;yHdKI}jp&^_M%-Sj!eNrEP z_9?C4W?*Fb%E-U~*1K8rypN~9Zr}-@jiIMZwwySvdCJ^iOHj~?6K79qZwo!8p{cpy z(sg}({p;H1*G}tuT|cjVtvy3CY}4Z)2Bz72j@$`popMGgT6IC1sY`NzvPFV1-fG+3j+f?(7_q``Pq6| z#bDRox^&m)yyh2l*Y-||&Ax3Q(zgD2ykbdkJImy0y}Vv}yVR0f`Pk0J?&dyfRp=tC zdD*>5^WXc+6J^5V?1SP@T&j$hwRN|uUe@{GiSWn!JpqOPe6L0Mo`0FT?fWFQv?(r~ zt1sm`-de=8dj;e2`?ICzUCvmzct_&W3gP0f(gq?&Z8P+|e#dP)*YtAJ*2zmn|NZC< z>fiZ5xIZ~2S3QOM*aj{)|JpdS8GVfI0bLLh{?OB(i?hduLwK^#k{n{ex%*F2Pv$o#cWLW8MiAW zm)|Q$Xk!R-S@Y>)!L{xu8*lnt-Rt%%bA#XM#67ZW4rTK%Feno8()!KR)5EEIqG<9P z%f)sb+E>n5$;`Jo62Cie%f%%VIBrjxbhF60NJ4dbwb0zYg%)N-J~xy0tK>SV-fqfI z|Mfs`nfPaR^S_&ZbUn7|yMF%hqv9Fon?FlQ{%1s_h9em^)N9%onB8n3(t7`|==Ph%+O;1SdNVKLOT8j;MxwUIaP`bg zB~Pno`{M)HzP~Kk_g-#~cILsn>s-e^Tu?da$f|p?b+-ETfSw>9i@TdxzL!NDXm>qr z{A%ZncjxTRZV(TPF0VSdiRb903Kr8j7yC<^g%~GZW$X`KAs!Gfu!R4?4$B86Hf~9A zjOshLvkAUw-u&#}|Mbb$mV4aZnZIGzT=Up5viQ|jBVnaAc~%|QgV-!%KCip|uw=5p zj*I*mt5>nOEnKnsk?bt_hneLCDyRi%35|` zZOpVhL(fU}hyeRi_|nGScU!zSFu?qQ7?gc{Je^(rf?dJE^;*arTX3-+JjmOiz{7eW zbXUW)j7N>DCoc$j!OHR1Xy(nkX5CI$vzOftM}1hJ6IB34LQgjNnAn}=CA zAk16RxDjX`yr=*g1}ZA>7>1d)5Qe>N+|R^-oYH{Cfl?YC<1j-WVce3&56ldRcmNs( YiU$nCSlK{9!UBYrz!0hdmVOKj0898Vt^fc4 diff --git a/tests/w3c_tests/test-cases/i18n-lro/002/i18nlro02.wgt b/tests/w3c_tests/test-cases/i18n-lro/002/i18nlro02.wgt deleted file mode 100644 index 4de36948d3a9e30abd63722185e9d17d068a9366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1513 zcmWIWW@Zs#U|`^2@bXW#-59Q@Pz2;n2VyP;8HVKiytK@8y^7qN&=5`rW^I*=KHDAM z_>@*~GcdAzWn^Fg>)ot*-pA8lH}Hhd#?VtHTTYzTJY{aMDJW>giL)oQw}qb4(A3;; z>AJqY{&j8hYp3 z!B-yhRMZWa{{MD4UHEjHcgY0JeeSPpXI3xkeDH+1Fxzp(j~}knqRu}1lD(yT0$bV? zmyXqY?lo@7WHi%eJe+@4wtwaF3rED)i00Rj#ByV4?`*jt)68x7YqJh{=frAtzH{(=`03;PyMQSw^8SNXc!MaMSLZ7ekn_s#kF zuQac)Hr=MF7`yq;&I_xi$ym0sO|V^geKwb-?JSB z*_mrgda5#oTyql&4!iuUZ|;aQ`|AWyWps0^}EtaX(9QRC$A>Rv6MSc;<><`$#HM(k7jY(iAR$Pcj+vVcVB*PmGp(V znin2$^{AF8{b(t3W}UM}F@0;}IgX6m781_x76#4?YXw)wY}@_Xx7dExvKRH$+bk>&?g`i&dh1`3b-`g@`PV;l_SLLOpT9Z#&h)zdwKq5W z$L@JEW4qrAdqgrh9uj5yEAQXzcff>g4ooVXz+{q{my%kcmr;@nPAFxQk6}yOrhS3g z%?2W^_y3A+zgetZ`*EQ+^CG^~DM*VD$YcFuTr&hG36@v!Lfs*{^|j$W!@ zF`aXX9;G5>n&;I>SpKNWp$L*c@ z8+Oe#j~ye6Uu`uKR$7y1)p0$D%`)cmy4w#+CJXGi$e*!#6^q-#6{{b~&N5FZ-TH08 zg4~-M+O~a|SzfR*VvdQh#|Ck~vy6L$(@mnRW%t#_Ov^L$oP-o$UkYE^*!yma_XY-- zKM;fRm5-;ht6#7yIJjO5nfu6TzCKCp&;1=${pjq@=Jbk+EFY%ij>L@%1^zJx zcr!A|G2<$mB!F&WU;xG>!`ns>3%R6Xg_Klir4+Jxn5727yd{m>fabx=5TIe8G6aud zm}v`P*xSatObo~=4QL!FrQtCSGvpD*EotNfmT~ZS02&602Mohl*+4p5Sj(l H!oUCk3Kl%& diff --git a/tests/w3c_tests/test-cases/i18n-lro/003/i18nlro03.wgt b/tests/w3c_tests/test-cases/i18n-lro/003/i18nlro03.wgt deleted file mode 100644 index b10260122db345c242c63fb8209e374a2f9b2ed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 zcmWIWW@Zs#U|`^2@bXW#?a6dG-2mk61!67+8HVKiytK@8y^7qN&=5`rW^I*=J{KI{ z_>@*~GcdAzWn^Fg>kaL5*( zhTWAt9!uPXEi*Yo?!J8z8)<&vdgUg^L)yodI{IjeuGE_&f04~bjZx%rbc@-;mzkYU zbgn;9&EX4pemN?xJ$m=%{~LZkFF3h3pY>nGrki$Yi}$T(c{jJS#$ls*0Nf9?d&+IU zPxL9j2z1&G76t}(pdT{w^RxA`ioqT@3v@gPqj{irQf&Th1(CM(&*K|+tX%98c5Usg zC0gRKlQXAUWd;>*|JF1^nEh&FPrpmp)BkpS7J7NR)Ak)GxHtW9@q;%r)tV;rAE`HX zI(mHlrfXThI^)u+^)nOPJg4l?x+}IsS8GGJRKc&cJ0Dv1idl6@hjp17hVN%|4!qO+ zY|)nYsjqcr=tWycMm_Amukm#Tx7|mJV^_WHzvY(hKZ~&0GRuWGrEh(m zyWx`uInE5yw@@p6X`*2AF`wl&7-_<^FEAUJs9W#< z72STbSiAP)LT~0pe5qGN&Pdeu7_Od~spM((Y=3+J+xM3R``*j#(at=Wcb)6lhYKnP z9a(ixw$4_+9?%oyV{vyA%lEQ~1MRM-jbH7Y@$Q`6*$v`h(dAVqH}M?3RKa38=VE_J zvk>FNtBn1jE5rlh1(xtX*kSpg#KtWtj!}K*b~eE`&6}V7`=379+H#NEJM%Z}nrj|A zMi#%?Y9y?*CeNzldJvms%;$BtAC^oO*m03RWA!Q)w}mTKKa!ngo>02=+kyqTH#f9x z`!KV-U}eM{6Jd`H;(lit_Xww(L|M!3tBskKXXrV}9uZ()3SZjT`)-T(1_qcv5QDOi zkEgS%U$84UxLymHV+$_Ug9mvV6nI!KgzjpXmhq@@_2dO1FIYMLdfd79{oJj6>ol94 zI!mrMt-IcEEoq)li_ry};wj~Ge@9h6I=izuy`mz^hbg%uapOXPe~ba%j7)OOxC$i+ zpqm&NfHBGNwh_caE}~c=MHE`@Mm7(#fIyhHr11#QJa};dGz?2ofovFN+Cmuiw(%Mh y19D0O8V5>gc-)2=@(AOWG_nJWGk81z4FkmkhGDF1pdeuZLQ7x>O$KUVU;qH=Up^fG diff --git a/tests/w3c_tests/test-cases/i18n-lro/004/i18nlro04.wgt b/tests/w3c_tests/test-cases/i18n-lro/004/i18nlro04.wgt deleted file mode 100644 index 6bec543ed23a3213c78bffc7ebff55558afed65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1498 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 diff --git a/tests/w3c_tests/test-cases/i18n-lro/007/i18nlro07.wgt b/tests/w3c_tests/test-cases/i18n-lro/007/i18nlro07.wgt deleted file mode 100644 index 4458b665d1afffe846d13f3c61a8caf82265ee2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1514 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 ZWQK=PfHx}}NP-0jZvtsfU}3?)003=T`vw32 diff --git a/tests/w3c_tests/test-cases/i18n-lro/010/i18nlro10.wgt b/tests/w3c_tests/test-cases/i18n-lro/010/i18nlro10.wgt deleted file mode 100644 index f8a4b58555311a6ba1b5dc11fc84e095caa95e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 zcmWIWW@Zs#U|`^2@bXW#y?I-FtB$kl8h;PU=w*M?TP-b-TLH=kVkq3CpkEoq91fPH+fRDs^% zbMKPbCttiQvGO95&*!ph`o4D=@20(OYRK=&J|5w<(yKq~qi}I!s!D^(7lB=gax2Z^ z4lp(!*}(VC=zf0m-&fK9imw)>Ja_E7+Ah97;hvb!%02JrvpSdUo6PcGSLG&S0NfwN z(<^Kzrb?(@20HH)3j+f?&>tE3`Pq6|#b8f#0zCl2XrAZ|iOs%kAW}Q8zV(8)tdLKX zS(HZQi)%fiRuU%pvGO9Xj|rA8@sa0T_G7<)_$J%Rx3gY4?%VbJ#fzAikC-pJ6ntv@ zu~8vpPW;KJ)t@c*p5v3dbf9MvM`7qLS&!(Dgz2UUKX&eXY}qSf)hT_g%RDgqM#D-D zIfvrFTi>r(ah*z)R`=Ha^D%nqyyAoD_xcLA&YdVLaae1{o-LZW=X*|8YgC`SaD2m5 zC9m{Y*EqS02iruqvF&M)H|OU!X?n5SVB5-t5t~2lymZR5Z;lu9iM}g8bz7z^*uQq) z{r{>${n7{L9)7*XcTfI|760GLUc7v7|GhhR=YLw)xc|A$#2@j`tJi)z9p86V?RbG3 z-R;7v(?ExS6zHCD%#yc4L0}ugkG#^z(jK{>!ZF{QNfcL=ERhgWqS2j!gWy z@%aOpe`5QQ(!|k_DBE9o|7O1frfYLxy5Iz+iOjr|)C#?fl3Z}AD4cxE#{@G~nDzx` zHyenw-v2AQ{bsRt?Z<`Q%!~L^uZWzHsO>RaJu_3u)9Ts&_yD%=FAMg)m)oPAc`)xf z*Rc;5R1P|_>Yi+!t$sbAC&IeMvr z#dOZa{*q=P#)(%M`$JcV2gD03;eW8h@TT&dO`p)faf^V8PKl}GTeX_OX9=CVq zZ`d{0Ja&vMezny|SZPh3Rmb%pHp`gL>ux_RnJlp5B7er}RV;1`SFC;{JIg$wbnCYT z3vzF6XxsK-W_iKNh&d+09vj5{&NA*1PB)3NmfcqyGcC{1bCNwG6MZRsX=CrZE#4a# zVE#Z1%0xb%&aQsJuHfK$BV_I)r}+{+6R{pV$lIX6!+IffSHrZ7M~$l|F9>Ndo951_oeEGQ4dBv5*TYR!BjGmcNnB!z>~Y<}GPF0W=R@U;qunQdl4x zhMBeyhP`dP!^D7`(tyT+QW_q&VTL@yxFwCezyb{(4?x2}@ql3%D;p?CSb)$H7(z3F HS{N7rt4%}E diff --git a/tests/w3c_tests/test-cases/i18n-lro/011/i18nlro11.wgt b/tests/w3c_tests/test-cases/i18n-lro/011/i18nlro11.wgt deleted file mode 100644 index 75fd9a57fed7c6861d4043e9cec976cf26057d4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1530 zcmWIWW@Zs#U|`^2@bXW#)$P=5nGEE;24XG-8HVKiytK@8y^7qN&=5`rW*wD_K1mU8 zeM&3185miwQ{VkjNmN=&UrkMXzyJ|NDd* zqjN#IO$n#@)C_;UTeE)p&YCTz@tap!9?DP9UM+6_iIe+rqvqDHw|_S(&RO@)F30@q zr~k}{R&l;7Q~k*l0QVO6j0)R@KcZ8v0bP56g@J(`=&g+W{A|6fVz8gK2EE1Rr{18` zdAAJ&Y{KImKL|;hwOC|KWN75ie7uM;Xn{kGckzOwTYX&AV(oG`8vpH$2?|=N*1MW{ z>z$dh=O$Gr%;NB~6Zo&oA^KT6GTU_i<=1Z>DDs}s=oAQFdb@FpD{EOKbKCsc*7GiV zESwy%A#6`)lr!Tpr3!|#u9^3PUu$Sg&z+;Q_QUb~sa5A#=T}-EyIST}mcX+*;nSsM zTWpQh-YMZZ9={n`yuD(4si<)`0b9gHl?epa1GFUE_C*}k@Z%lhyymabh8Oy0` z6J%F@j^@yGtdFkU|KD3h&b-OG{d(l=iu(qE|8H9_TE4e_@6O%!Ph*+u&sQpa+<)$S z)Z6L%Wmfz4J?xQ*c-tnoChw5_yAQ(BljK{Uyo!)v{r=uwa)JF4^UnSi|6RnoUF+Sv zN(g^%u5%G-#VwkkZCb=CbC~&4O#%A1!j0 zy^2%*YZ9^ism1-ivWHvUml+ganiBGDs-cnU7KPQhLB(#hLggKEOUw3DoY-Hw*kiG$ z^2Ho)ue8&;Cle>dyz_ir!sTjzB5>2u%9E2U7s~joJSzA6c)#i2mwM;)^L~H*bNQ3d z_1mW>{1keW_;qG#hw|s-^9Qef{~(P>7Dq#(Y=7nboBa-$(#?TMgAFuU16r1kz^(d{>jwQD~v^k!bfmwH9yj6`jZ;p&;0N}g8F z_QwaXeScZ7@4eg}?aYID*SU^;xS(>-kyZC(>umMw0X;!J7I!zXd@qYQ(C&KL_|?uC z@6Oqs-5?$oU0!u^6VK606)dK6F7}r+3o%Z-%Ge*eLOdW|UQXPRz}P*5%$<1?st}Pk8rw4l(p=>+L&p1 zhMtq`5drq4@THBt@3wevV1W4pF(@DTcsjfK1-pWS>y3~(w%}qtc#yY2frs@%=&puo z8IKxQPhJr6f|cX1$DMoM&)wR$PP5smv*dcyy6X+slIHoe7+tU_o>D&dcU1MGvpbv9 zD=M;ln36jZH!c+T#~9$v$Rx*%tFV#)x`}}S7?TWd8$m4OqKg$$bfFbn$mU^|5(x8_ zG+qaq2QM>#hJnfqJcePWErelj8{aW8Ag45-aiElj$2iQ8M;N!HQ65;P!Q%mF7$_bv V3}a;j1qllfS^`68HBbu!0{|_iJ>UQU diff --git a/tests/w3c_tests/test-cases/i18n-lro/012/i18nlro12.wgt b/tests/w3c_tests/test-cases/i18n-lro/012/i18nlro12.wgt deleted file mode 100644 index fd525afcf6b2f65917f5ad39e70f3e4c027b15bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1522 zcmWIWW@Zs#U|`^2@bXW#aoy0{CD%wH9Jl0Is`5@s7+dOb1Yg4w*np8S(OZJNwe}kA?1U?m<@0E41?&w%-qkKEz`^Uu_ zU9@gr;9V|r_tMMB`{S-Xx*3)e9%$Hd-#Mn++`H<~n<)m0kM`E8@F=p$z1%gs`d@zE zhTlB>lWcx71;D)|GNZ!wSK!(5OF);NW?^7p2YM+ZKR;V9s~GH`6F|RU@lS8i>Ac$p z0yg3Cjvs_1&03CROk`-}&wRXyF=&B9jd$^aqg#Dk)MD*&I2!-$jR^``sn)xidF!2- zvgamMC(PpTvlIBQ%ONTrzUkVlB)|2Wo7+tc7OObLOwD7zBqn+zl~x*jl^h%c@6U%Plg%(lW!TMo(Z4}E1RUi0j&MEGsVn~jERnofGpzVz+P zj6Lm}rt{SDEENf~dTsUTQwN{fnhmB8SpV#(tXLrEa=&$>FYnP=Q_oKg^DBB1BIQuF zCYw$Cqck87-NwO*H-dFYI1aL~>0V<)CuXj-$)^Q`1o&pV1`*KU4%r1<|@uTrmC zughj#&6&E}RoXp^cB-$vtSRzW!TqGzb5%*7Fs1H|<&H(a?<11L(U2(HUwQv#zXPUlb6~RI1SW~hyp+@my^NAvaH1%j ze9T8q^CfyBH|-0|ZZ;5Uz5iEq`^{qQ+K&spnHTY;UJ*GXQQKp_@0dF&Wj{A#O_u+o}5tB&hIY?d*f*WG?tGFf29MgEM{t61C? zu2}s@c9wZU>DF%x7UbUC(6;Tv%<_Vj5pzt0JvNB@on_o3oNf|jExWHaW?G)1=OlYX zfPE=^X=CrZE#4a#VE#Z1%0oV$&aQsJuHfK$BV>*(xL6M!d6*>x!n`Gomx1QN z%L|}kpz;EbVVG$PVc6ToXG{#pDGg{GD5c>s4m0Et#w}?S2bO2>cmNs(iU$nCSlK{9 Q!UBYrzz|vt)WX0306ru~VgLXD diff --git a/tests/w3c_tests/test-cases/i18n-lro/013/i18nlro13.wgt b/tests/w3c_tests/test-cases/i18n-lro/013/i18nlro13.wgt deleted file mode 100644 index 302b96f6d7555aea4278d47d9bc07adc5162c082..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmWIWW@Zs#U|`^2I2My^+q${Xy&uSX48&YOoSdJRmYJ?sk(=Y&caW>uK)~gFo$C#! z{=B1N-FZcse*{(@WJ{W&B4EG&T1KJ%;WzJ++ZMfJ7oG9W^2MXf-q~H7*tYc?tKyq4 z@J!0^*o@;w^Y1iVOLns9=vnLRwtwo^uCKQWBPs=+JU=(@&(}?NfuWs+fq@<9 z?2P>UY`v`F-rzv*!v+F%+x9;?(Jd=2`q6cQt%i??2+MahyOgtQxyw%aTgR%RC6FTYWJo3yr_r)agPqto-NQd3WJm24Ku ztPZ~4J%yD^y0xWMtn|VwVGWT3x>Ab8-={~pEAC8*TzSVczHaH)Xsx41Zf^{IskXr_ zyRva{zuL0g9a~?@dD#hly13lP>E@ExCr%6Bx?ON-s)zW8lD~h>FnR1Ve*H>lGwb>L zT#L0;JAx%#u1>VtKQn~u?A<>fAI|pBFmJGK5BC(Vj4z7(_ipZm$M^ErznAZ;G}ri7 zBV53#uf9q9ZFwSeX>N$q`%QC2{{3~g{o-onQKR@b ze1_lh-%^IPGwzhVaL>!-ewE#KjZxa$FzxM(1r4mv_H4TG%l&Z{|K)4KWp|i@+#hV| z-?p``qdjr6>vyS-MlZA$w|z`2$cnE{=u&d`)qGng(QLSZ=h$LG95*ejw6yMKYrS}nzvM@-&0AsANd1-f zZ}vN2WSRpbmJ>*4=B1=o=w+1Tn)U@|Hyenw-v2AQ{bsRt?Z<`Q%!~L^uZWzHsO>Ra zJu_3u)9Ts&_yD%=FAMg)m)oPAc`)xf*Rc;5R1P|_>Yi+!t$sbAC&IeMvr#dOZa{*q=P#)(%M`$JcV2gD03;eW8h@ zTT&dO`p)faf^V8PKl}GTeX_OX9=CVqZ`d{0Ja&vMezny|SZPh3Rmb%pHp`gL>ux_R znJlp5B7er}RV;1`SFC;{JIg$wbnCYT3vzF6XxsK-W_iKNh&d+09vj5{&NA*1PB)3N zmfcqyGcC{1bCNx3pxFCvi}wZwhCdL4Qo4_)v#VdQE9=37ybTIGtQSIeHB8HR)VO-` zf{+)i9DhCT-1~m+*1mO`%}$*q*PGT|Z@88;&!@%cf=%(1^0~jGsvn)**_>Wck>$gb z+>y9(p};@J0B=Sn5oX*)0?<-0*wzT55CsIfKJ+{Z(Z#^9t#Lb$3C*GCn$Y7Mp{a)n iDFvWwLk|^%wuQ{_FbeQyWdljD0O3s_EeI?u7#IL_-wo{m diff --git a/tests/w3c_tests/test-cases/i18n-lro/014/i18nlro14.wgt b/tests/w3c_tests/test-cases/i18n-lro/014/i18nlro14.wgt deleted file mode 100644 index 740c7f24022e3cfa59e481f405dcd899b155423c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 zcmWIWW@Zs#U|`^2@bXW#-S}+dnH(T*3J`NK$S@@5=cQ$)>s93Dgobc3FzcvX^wA4> z>r-06&A`a=m63q~tar2Kc^^-I-M|w*8$(Z-Y&mgS^OU*C#-N}TC(fSK-WGaFLsN6Z zrR)0o`q#D1ubtNSx_(~!T6>0OSdhm_olT)kuL3qb4q{-Mz30fC5Np$?T+G4Y#n}dL znHJ9t%nTRSxPSDPoBW#I(`;GmWW^Z*;O@ORqr&##)r`OAfX>*&!oa`|bZr?KPQLYUUZ@pHqPb*^;^6>bw?ajg7Wmaewtk%*pG5dH3(#`&}LtGVds^n7Os{yQuKj{d<+G?)*N# z`u6VRd!`@G&ruip|GH-N)v|xbH{N=(W6lKG)v@u-SABmRljYl}^fS(5-M6E01^@po zma9^(_4w2JYyZg-E895}FSVas=ybnGIyfQ`M=p={-H1x+jw6KA96B ze?&G(eXgv&+#~tB8kaJHJWOs+nsl?sw@5;Ddi516S?9uxCmJ`C_N(MNsorkLPyhAg zod5ZB|94+r|B*ho*&=@b+0We@=CM92{h_^w36UI*hD6!^%KJC_9Wd#d1CsjwQD~v^k!bfmwH9yj6`jZ;p&;0 zN}g8F_QwaXeScZ7@4eg}?aYID*SU^;xS(>-kyZC(>umMw0X;!J7I!zXd@qYQ(C&KL z_|?uC@6Oqs-5?$oU0!u^6VK606)dK6F7}r+3o%Z-%Ge*eLOdW|UQXPRz}P*5%$<1?st}Pk8rw4l(p=> z+L&p1hMtq`5drq4@THBt@3wevV1W4pF)07|csjfK1-pWS>y3~(w%}qtc#yY2frs@% z=&puo8IKxQPhJr6f|cX1$DMoM&)wR$PP5smv*dcyy6X+slIHoe7+tU_o>D&dcU1MG zvpbv9D=M;ln36jZH!c+T#~9$v$Rx*%tMriox`}}S7?TWd8$m4OvWOK@7NM0x$mU^| z4hZv>G;RQz2QMpthJnfoJcePWErelj8}~CYAg45-aiElj$2iQ8M;N!H@dGmhA|8N- Zf#LzfFjh8Dkgx!uB`}0)fW;pJ0|1`GGJ603 diff --git a/tests/w3c_tests/test-cases/i18n-lro/015/i18nlro15.wgt b/tests/w3c_tests/test-cases/i18n-lro/015/i18nlro15.wgt deleted file mode 100644 index f2b70edb55cf0b16eab042d9a9b95b430de28adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1500 zcmWIWW@Zs#U|`^2@bXW#J<55_rV7Yg2*g|rG7QQ2d1;yHdKI}jp&^_M%sMI;eRx9N z`jl31GcdAzWn^Fg>)ot*-pA8lH}Hhd#?VtHTTYzTJY{aOH7IDsiL)oQw}qb4(A3;; z>AJqY{&j8hYp3TZOr1eqHpG88^s-{o5 zn1jQMvkl%dEuI^g87{1G|7g@ny(6X;N8IF7+GMBmUJ=fgR}jjQsp;y{uxe(>a08=E8J(@1$7&+Xf!-&j{%i|btK{J9fQNaveo15Ir+6pQ~uk@Tl4Z6?257YRv9mEf85S`S?7Z%!XNKX2`K#LdM#>h z?1j}i&sBNPXmkpNFTLHc#g(-zj@fU&*>;=d7oFS-4+nizd-lpaL8Ht1Ld=wJi*x3( zUQX3k_tyUNF?;E}qJ!#k$9LTFJHghIDB3gc_LXg^$DXijR-c=&_`X-*(#h+T=F44` zJIoc$9Cu*->)+K{IZb#&GozY?X^C(uCd-_-jW~jpVo%m{waSvYx3g~r?NF=wY*{G59Pyu zbc&w*?o_l@|69}V@A6+Sb-#>#oPXxO$Fj>WANE|ayCb9ZMR&WQ=(Vj3$(*v>cFPv} zHcVEXaz>Kl&w|{?sdK6h&y!?|5Zrjm{cvRdq~mGEq2HxmE3Pd9g>?beFAHiu3Dm!LyXZFANh!zMEA6!D$;2r!?*dD#+8$jv zVVK(echVM4)9j^h{kJjRzx?Ik-1+m)%iVc-^pDW-NSXY&V?Uo8%x8Vh+w_kWks^+U zMA`nz`#1X?FfE${Qw1k5MP%lsq*mxCNbCK-qT6p4 zYuA2U=*_%{FZGJZ8Hw5+!__l0l{~GU?T-&&`~I?E-+Q?|+L;IQu5%sxa6#puBdhMo z*4gUU1A2mdEbeY%`Cb-rpxyPf@vEIP-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN$l_O9 zjf9of7`MmD-!;;AYJ1+8PtX{?9ws6JjN3yfb6H2#!Td*Ma=7zRyA7+*p ztc;jrBJ8n2-0v*o9^rJ8C~Mh$wK3E33_T~=BLeJ8;Y%BP-)-^UzyR|HVo(oY{A8P@E~u40uSqj&|MAFG9ERqp1dIB1uMs2k309ipS!hhoo2IBXUX-Z zb=MoNCC&3`F}h$=Jf(c@@2KiWXLmNIS5##AFeP^+Zd@qvk1@cTkx7mjS8*f(bQ1#u zFeVw^HiB5lg%c~Ja6&7Xkj=v^AQ0v)Y1{`i4_;gV4FeSycnrf#TL{D6HeO(2Ku&2u t<3K45k8zkGk1%dYBO|algU18VFi<>T7{AwFHj2u0{|1DJR<-A diff --git a/tests/w3c_tests/test-cases/i18n-lro/016/i18nlro16.wgt b/tests/w3c_tests/test-cases/i18n-lro/016/i18nlro16.wgt deleted file mode 100644 index 18734c09bc78f58009c712936f9fb0c7b125f8bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 zcmWIWW@Zs#U|`^2@bXW#H9xCm(*We{1!67+8HVKiytK@8y^7qN&=5`rW*wD_K75gH zeM&3185mi3&Ng_C9q5OQ{QPXatYWYSo(8|g=7HWxr}J(b2)JIq8ZL0hrHxmS^VTwl z2d+}PGa5uR1m4fm%P7-CJw@6VQ=cR6F>;vI=AD};-`N*jnAmCexe z`W?6JT+_=Q8K4%c%e0`_;R$y-G#m$IMJcyu<85qAX8d49;Y@In(N%lLzOo=Z~(x-K_F) zN8=sAxU}3u`;r#b&6d6T_>KL#yuAL6*$>`NRM)ig+IKa}`v3EY+@d*tC;G0gTYvDC z+MmZ<_8XOc#(Av!b~LWw|G&j?RYrTW{xtvmKj~#jm4)(Fe)D#&+S9o{t);pLBAkvl z^=D=XKS<$JEoNh~&$wM7x%}RS^frbtmo=X*7F_Fovhk+R)xB=NGB^00PTV8A=1?~O z0)rwEFRkB9Jw2SdCz9sAv0P}^p?$^AN@l*zk@($#TP`k{z;S!hq?<*)MG~sht3~Ga zEwnHx^0}F`UnSScaz;?M?zaB-Syk`P`JYe!{_e}^KTO9XW!BF>_Vc;HeAefti~g}A zQpC}aDBE9o|7O1frf73us^A2sh|Ii{)C#?fl3Z|_D4KlCXDcvWpe1V4zQF8e1CiGI ze?_<7EY`05xX_z<5nt*RkuwstJ%+1iW-57FJ=-52!1n!R!M^u$d$cnT=3VDH_Thrc zK}S~IldZGWuLtx5`B>cD#PYo?;y}CWY2#NrXS_RScXoq#Saf;S$xS>*FIBLZ&bioM z(k#R{@hW3~=nCwzk~k_RjnbyXKn5 zj*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R#ckn=)sJLnnJ1KP{kC91?#&Ht z+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsR zKE(^4z4#s=05K*gNyaxLEZ)h9@Yz?yBeltJZfA$c|phvR*t_OckX>ZcWd7| z&1R?0lIuXy zLP-MXCI$vzOftM}1hJ5dC{{=jg%*>@=3y2P2=kUS9s!yMFD`(Ffr<+}hGC{Hgkf(R zuQ4$or!=5(pp=HkILweo7`LR69ax;f;{j+GC>}5jV`T#c2@4Qf0z+srPzwVC04cRL A*8l(j diff --git a/tests/w3c_tests/test-cases/i18n-lro/017/i18nlro17.wgt b/tests/w3c_tests/test-cases/i18n-lro/017/i18nlro17.wgt deleted file mode 100644 index 84d2d4622f5a0814da2680823fcedf9839f44088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1498 zcmWIWW@Zs#U|`^2@bXW#b?;Egss{2l12Gqa3`25$URq|lUPW$BXb2|*vyRF|ANR<& zKBX1h42&#a85tPBdN*sH_wn@C4LsqqG4zzlmJ_EnPnnx+4+>gw;_ON7ZK0<$G&MI| zx~{LUe_h-B+G%~S>*uwvwP$FC1$ms**%Zq3Dqz#&AO@z{M=nk3`J-fQ`jm?~IJ`L9 z;4RbQxq+GC!W#FF-g1*)C79$Dmz1|k_KvREuLQg4yjP;E^%w%+&hMFBVe8GiZS^^z zt2VPRFt7uipOK%Rt(R2{c00)39++Xb;0Aztckad%CA+L@_(P4HSf7Ym(CvC_`KG(?$|up%Ps|ya5eJR)B)*>eB^^D8S&&r<9+;SoC&W4aZojZT=N_0KqGZA0Cogf;|A|`pJmy2^al>`ngf}rJN3brwZniadrr}S=Q*p*mUThBvdAVfuiRJEF zk8e11twH?5=U*Qux(V*&PM$5*rK&w&d+nSjFIJi~yz!CES6ssKH~C}1|L{o_cO2ev ztlwmo7;hN(f41z^$8YYhfB&w3WA=mj6V)~UO|Myfwd~)ch}@z%ekb~_u3LZbmD-=j zT=pB4e#UvM`*t+0;QznHaaG2(8Gl-T)=z#}Qe~mMmEXLbtM+uRPiv{}fe5GLP5qe} z!Vgk7Rg2k}>@#jxNG`v(A-#HPABe>U2`a#e}O@f zh?mxHzMdXV-4jW3-&iiR>(IX9XC*V==7{~Sz%3V-OyIaZY0}Li-y#Xs>D3~0`xaW5 z6#3jt+OLx9G;?$I(pu-s>g9D+cGX48WLWOPYlkCthXj4_zT1 z5HGNV|G^H+2PHOcNpXzoJGZk5zG>e4?BDeyZx|avcQgu{28lPvA8WDCoc$j!OHR1SG<(jOCs+173b8hQ%EcTUUYu?4mTB?az|3%Ajr&J$xydgRPV$RO%3CFS z$JFdsg57l9D@oRR3;`%^{I^Nq?gmB%hISSP26mtuGxGDZ^|Fe4gMIxE8}Qg(j!%5* zwA|PA&V&nm&P;}x9v*MnEK+)}yOx~vxa2GPs$M;B*Q8ITMVXJj|M@d#M|GY9mj(0w zWe1)-ovPKlZ%@+ollPq2c3$mLSok@s`&26HuG>PH)xqaoPcgOjIvw)rw#xX*DZ=$Y zu6M%D-`;B%Pl(yHF67-3{rwkznNCf5^!CQ865$(*w(dD_v0C_Y*_~ToI8@(r{(KQE zxiIHa>653NZ*whPdM)9um}6_ZkzvyNGrM*j$vOJ@`k@zIoR37<0!x>i%U7G~RJ^|? zqDGMODODt1{B!HY<=gW`^>e*$bH1sJ z{Az0vy#0Q`BGu~?AWrHj?Iu|xAZVG(H9rLxWM4n??%4*uI068k@_p|-|Tn5$TSB=EGLl8%u7kF(90;v zHSG(`ZZ;5Uz5iEq`^{qQ+K&spnHTY;UJ*GXQQKp_@0dF&Wj{A#O_u+o}5tB&hIY?d*f*WG?tGFf29MgEM{t61C?u2}s@c9wZU z>DF%x7UbUC(6;Tv%<_Vj5pzt0JvNB@on_o3oNf|jExWHaW?G)1=Ola7ly2|4E#4a# z82&&EO6fkH&aQsJuB-~&Ham5e zTyI);z2REYJf9Y$3pT}5%IE%$s(y5KXLEW*MV1d!a!2CEg#!N=1H2iTM3`~sf1ssc zu&oh9AxZ;uedu`-qKkoHTjLTS6PiQOHKE5jLQ^FZQVKxVh8`*iZGFt}FbeQyWdljD O0O3s_{SPR`zyJUvbOF); diff --git a/tests/w3c_tests/test-cases/i18n-lro/019/i18nlro19.wgt b/tests/w3c_tests/test-cases/i18n-lro/019/i18nlro19.wgt deleted file mode 100644 index a7a9b8efcc9334d64f87a939985809c1cefeba23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1527 zcmWIWW@Zs#U|`^2@bXW#eLI)u_G}>UArNyh$S@@5=cQ$)>s93Dgobc3FzcvX^l=G& z>r-06&A`a=m63q~tk?IPFITgH0PBOj%O%nt`Zbqa&f*cdReLb*fSDt+A?L{{Uw&M@ zC7*6=(Er`gCeu=bNjLh+)qArZta9%CFsG+ix6fr?n$FUYWw9?09mq+^R$X)=K`!sN zC#PI(zT>M4k9-!K;599`T5y;S;b(# znFIZ0f$6v2$$|N|6$FmYf9_xSXldW1sNDHsr8B2&of)=rvYKlCUAc~(7AyEt8iXUK z?*DC35L5kj*2f74{`TANZ~i<_dIFPOgM4tpr%#KudiU)~Ge3FHn{DUSE|rC!v${{E zvhJ$vH2E8JzkAA25wkAou&65+SKoG6sPXP1$IRW|@7xmEa}{-O<6GKkisgnl~2zu3Ch@~yWjp#s!+f53EhXjm%iM%9y9HKn)+9h-`8*c zJ*-*Q{K)pxyrcgoz3;hqwmy8%7ENFE4bM}rUVY#r`|ojATa0tn1g{s)WfKnV|G#2# z+@yOxH7ft(4d(jwr+>NJKHIr<-_vc|7VMgqA-iFtNV3>17S=Te&!-+e(0}Y|+_IJa z76sfMqK%jBq|Q~P%FRA2_BQ)VyJNVdX^(kxXvJGb5m!Ga&9`xl2PGodPW$Gcm;CG) zHL>j4ql(W0^{?GDd%tpZZs2`#=c%+u;g#KYCcnt(xw&!T;#B9qm$HSI{Sd3Q-aP;6 z)uUJMs(-leJ>#6%XKM@l|1x6RKThBAj{%Vuj)p|p{>u9|`yDWun*-AWConB!=B1=o z=w+1Tf>T4$+8)EzGc%Pu zt)A_V4`BQLvS8nPxjovM2lK9T9s6)W<)9<0?#b5K>emB$f_yCQZesaf7IC26^|bM; zoipB@vpc&%JS@7r>f|P#qn9dJOy^weFKHHHoOqS7KXiq7K)k>b{s%iOAC%a*CB-qS z@7&HN_@;UDvw#27CtF+YaeHU}hFx>bW5>wiS6hvQmDc20bzBc(vyAz??)Jly$pSkr z@@K4G#p1Sb#p*}0v&<7pw|-l&Aou2mwrw9~mKUsym}4UBu|eGLEaM*GbdxA+*?qM! z)A9^GC)pzc>}%mm8++ev@!r4y^9N#3=JD}#cJ&K(1qat#A#6112;-JC$^Z*8csu|N Z1H}V|VXSPRAYlPQOJE4C0BT`i005~?RYm{+ diff --git a/tests/w3c_tests/test-cases/i18n-lro/020/i18nlro20.wgt b/tests/w3c_tests/test-cases/i18n-lro/020/i18nlro20.wgt deleted file mode 100644 index 3343437cc547910a55c784741072976ba26ed3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1834 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 b01X4h1BPL&Y@i@v0YXb)2(1QcVPF6NFtt_A diff --git a/tests/w3c_tests/test-cases/i18n-lro/023/i18nlro23.wgt b/tests/w3c_tests/test-cases/i18n-lro/023/i18nlro23.wgt deleted file mode 100644 index 92d7173be57acdb19cb26ad5f874192003fdaebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9257 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 TPcIAr`u#Kio;^YGKX?BJ51Aex diff --git a/tests/w3c_tests/test-cases/i18n-lro/026/i18nlro26.wgt b/tests/w3c_tests/test-cases/i18n-lro/026/i18nlro26.wgt deleted file mode 100644 index 9c60639a96a7b44f2828b234682477592360b5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 zcmWIWW@Zs#U|`^2ST-@kcH7@GzjJ}SZXo7jkYPy9&r8cp*Q?0Q2@T<7U|z0&!{;vN zO`p;VZU#n{uZ#=~V7<1zj$DTgcv#-owO(M>x#gsJ@LRl7j*znsyY~XS{R?^T-ad3L zXTz-Pivo&|R8@bp`}NmSanJ2@LWRM$YD&hRzkR4(bHvHs#lX@+c-pzB2*+bWA7{A! zS;nh)UGU=-#aQck(VqYN9qzw7wAA|@a{%1Iwv#h#eICVqeF1dGTNVZecA$eZ^7FIx zvWmg3U1oH{XFWHDYkPwevu_&+{LT5_>Ov`RnwO!@D^8&OsBWfzo8-_)-hYM|A%P-#;7mki|>7ZmId%)foy{bKW* z-Cq`FZ19vkW@ej$3^GoD?@_>s`tW2eIR zJ=6c(V%IPu!&GqN#lV9y+Bd6Mra6dPHC1{uM!$UdVOB*^#Xe6T;jOjxAZU9z4j~puod= zA#_*6w2ViMt0ylAdBMu@*W=E;@8@pqTc_FV)LC-9Y2EdPYf1BbT8u8(6i+Fi`#Y-o z(b=8N=@k`OK1|6Si5nLR{6lh!H!zo3rLSR12D+mVh&h06$t}syD=tnf06XTN-VL81 zE{s&WIk4noIbSDFLFfsMlV>+R-lTa_=cMP>;^Hq~HePJsurp`Ur(iA7E^n>kpxmjG zgeGsk-2KV>bI_Wupx`xA8!kz<1$=d2o9E{OUEQ|0u#J=E_S(7J z=;LNU1ehn#kuwrE?P&x$a5mJD1&PJQdKo3TU`PG}Ix-m3k-9wx`I-y_Sl|Ecy0u$q zU0P<+mCY&@A31WJwOezyt>&!H7tPlqU)P*N9)XuCG{Ve%a$k)SG(=E>?X{?kw_pnk|{L_+DR*!J2>a`}DN_^6a!r_FU){#dV_1 zDQV_OlT*rm?dkt^@n$R91$Z+u$uZ+9&m@3eVPF8377TAeK0_(pSRthwTFHiN9%gZa zFmFlYMxc4{!Ut#=sPMsK7-o`0HtZG?10sO}4Fe@mJcePWDP+Uam>G~#7|=9O3d3U> nX5=GGd)vqjENBr)0caX1DPWk!$_5HwRv>Hx2KPCj9tH*g5jJCL diff --git a/tests/w3c_tests/test-cases/i18n-lro/027/i18nlro27.wgt b/tests/w3c_tests/test-cases/i18n-lro/027/i18nlro27.wgt deleted file mode 100644 index b1933a60354d175a5d78b71a9e8cd4ed3b4339ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 zcmWIWW@Zs#U|`^2@b*u(J^1mcUnP(?3y8TGWEhh3^U^ZY^(u06LPIzim~~Yy`kZTj z>r-06&A`a=m63q~tkyl?kUTX1iwiziELvtCACe5UvFe71Yi zmlxk}a`+~`)<8b<-9MhQdXsg*@>Jw3eN>~yd<1< zKWVw}%BuIx;S0qMA2vqKDN|XVaO{IN`}h4OUtXU2^Tuy4V*uRo3j<S^ zI|~B?JJ9hN`T5y;S;b(NuhTo}W4!boy32cmef2K|GDmu9- zXy@d8f4p8_59#XMp1k^!Z$j_2PfYIbeSK~hWM8(OvPb>NV*k{ZO`g{$PFLTu{oxYr ziFyw{etOx-I-w^0+Evvw?s@yg+`_#CmK$`eQZB7CUMVu`_RqtA#U}>jF_iNy_Y|&- zFN*y4ZtjJ{_wx1LzvHho*Z5Z?=lSRQ&tosnevLlrJ^NA_Q*>NdE&sVIZ_VdqoK#(6 zy|U$AsIP*(^V9|XKYPwViKG2 z`Bc(t`QFvGKGFU+3b{RG8!y}4y7o&=uI;SY-RvW$7p(4)IyU>@%G$S$nq4v`OSk+^ z<2iP~XvX?QbCRDmmngm2vH9`Q+durxy-dVRh0d5wD4xDv;b>sVPWH8%4by%*@=fAB zd-|lOiAK-2x&?>lKgyIxM7Y|FN?RAd=AWs+lv)hLoWKar%u7kF(90;v1xI3q~})d0v^6?7uz@N%$f8lSWC3aTdO!Icj_de z$(t{CfAanuwB}NGQ1Is|4WA_20(c$Rru!Ba1*SQ6Iu!>1) z`ntIp5bpe1_|nGScU!zS(2f2;3`&?jp3bg*!LDFez7sO{k=J~Qo-kPt9^`FM;9~rXyJT3ur69WS<*D$Hc*hT0HGx?gdPF4FfafB;sfWv diff --git a/tests/w3c_tests/test-cases/i18n-lro/028/i18nlro28.wgt b/tests/w3c_tests/test-cases/i18n-lro/028/i18nlro28.wgt deleted file mode 100644 index 7580946d5bdde351d11b2017b3b65db1d6b69603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 zcmWIWW@Zs#U|`^2I3AO1d)aH=v2q}9E)a78adLiMT4uUlMQ)C5uOr_f1p(LZwntOG z83mdzVSJawpy?^e)3fmS^o+;%{~oPA-y;(wa^hgpzN~xEdtZt^)UYn^o_!))RVsN! zVfa?nM}GE87Dp$X`*BJra)G(Mtjwc@W||xmYk6l*KDymTUrO;wS|Qs6ze)0{yXvoA z_^$tqXU9|K02JpHF7;iqfsuisorQsc9q7D_{QPXatm59_gMNn%cx*4P-%zyh@-ih0 z#f7pCQcRpGDrL?xn~uF!+Lfa6av9gx`<=7bEisVTY4WkUuFmg{uDJs1oQC+|gin8h zrn<$)Y+9Z2TCw>~mg|HIm0R7OZeqH-#^u(%E8mq;8xOfDCN6Z9-SUfti?yKJ?ZlnG zORoib=tYKUm0y}3pZRy1m*K~qySQ&)W~Z@Zx+V!WLM%90$>rYkm}&c~)xYfce*5+B_T+oKUHj*_3;i$MXIN!iy}lwd_?BP7>C>y;ADp@C zZ=100&XyAOsTX$VsJGVt59F_%$R`x<@n3Y=<(K>1eB{-(%l?`eeY@$`ti`1Vjs^8Z zTB~U!G+M6L+4k?^j$4Pfd~K24-f%_G;_c$xwepV=Z{%Fu>$Zny*QphWdnD)Fx-K_k z(TTuduif&;5_oi)e`=kwOtte+Kjdd^9k-`feple4jVmT5Y-^meyM|S>Z_#Pnthv30 zxA}`EWLWOPYlkCthXj4_zT15HGNV|G^H+2PHOcNpXzoJGZk5zG>e4?BDeyZx|avcQgu{28lPvA8W$ z={}y$u71I;tOpPBHYo70UI^XQFfHRzpBAGFHpNrQ=l+hWesp$cb9zNZmJd^MN8-kX0{<8TycwB9m~m%)prv52tr0{a z3IcR}=y?*Ni-BQV<9r|!nnTewp~pEwQwbAN3P9I}9x4cJoy_ns3h-uS14*y|;Y}d@ J6DY;N003$G`w{>E diff --git a/tests/w3c_tests/test-cases/i18n-lro/029/i18nlro29.wgt b/tests/w3c_tests/test-cases/i18n-lro/029/i18nlro29.wgt deleted file mode 100644 index 80b495dc0f518b8b1adb7c2556f165febe52aa1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1321 zcmWIWW@Zs#U|`^2@b*u(t-JE%Mj?n3wOymKvtM{nys5kcc}o095znxelnS=Tmb|B{TcEoykOEn&mN zqM}*vK3!D)F@ra5w}CaG+a0!tF#zu9g#j_PWqUMkZveWborQsc9q8zc z{QPXatYWZ>*Xf<~$-{JUZ?LcbVFMo9%kha%otFE$7BKl*H?S~qs;HDX%WOLKT4`5` z%FAV3U-t`}$9n#h+G+B!x~|Uej;^@^t4w3Oal)rBF;m^<$8N~n^mT$`-c}`#7ki=> z7ezL{+vRdA?rOPGYU3d{#l(fKvRi(!aIqG2yPdf6cj>i25534Rt@2CL<1_!x@-qBb zmJ_;*bIrx5xCbxxc4kWFq^u49#%gUYrvzJz%KDB%^n^U5CiPa{~&UPcir1xib z?K+Zk@bmRUFT6M(iLeEhE;*O4Hr1)vx_-xhC81Ni56(R_$y9ppt#|tVUg4@6zt29s z`&aQj+tK)Q%ANnM?n~_5S+}|(Gx(NY!s*ki-XEN~>u;N|?#`AH^{E$j=cu>V{}1G^ zom8h{H~Am;nY7Kdy)*25@~pooZ{NoH)ztlUL+?_F&1F6T2bhZEB6I#OF5KFl`I^%@ zk8!1P!7caOQTLA=-f(kKb#H}a$<)BZ6~-1@*V`JnPHbK_rR;vsL5T>q&!JO_&(uut zYmqH4+fyO^|D{{!u|;l8H`$8beG*+_(WUo&L8;lX9QzZFn-*4DT6VIvUcAR&@*~*h zEi)p*+2>W-*6~b=O9iITQXu98MtEjkN@|5(MoBI>%0bbMC6R6pEcsZ@*U3{5dP3vm z*^Q4kX`a+M>A97=fQN6}#r6$5b0&QX))MXV)+!FlojOTq^5)CkpS(W@t+~`46#RKg z!zanM0A2^S>ArBy2YDM5cvvrl?rNBp@u+e2%B=W(Gt&01X4h1BTmJ*+4p5V{4_ H!oUCkM#(}aG_$Ll8@^jS3j)`@ASR3_c^JgiW8 z?)$6kdF;&zRaXyOv7Oz!lU;8^+dF0%=lP7E>zy7>S2wLmt6~m-yMJLojBVk>IprIG z&T402U|e7s3PE@ zptw=`(FD^t@r$a;p5~z|{?Fa<((Baq6H7bqfBszjC~qgD<^zsDvlu6*i?1^I^=FFj z#nRYjTU2adC3%zFKfqJwT%&+QjMEJN>PFPDLj- z1?`-??~m8(>mgm8+mlyc@=fTy_KC^;y|2&hg6zw-Q}(DoS?r(MvdQ!M#Odl=wm)2= zJyGw$$4@UiStrz_U%RTB#yxMpm|M7)z;c6*Rm!Dx#w$f;-Try_ulU4(Jce?<<(|To z@kNpU-p##m_+Gx=`*-}6<{JNsG|}k!R=42r{70GchzMt&S7}?vGbt_=m{?1Jm=hS`nRzLx6?z#Zx!@?zTmKGQ zly43!`B=`^$x{$|LgVDwjgL2Jp42(%xs|(shi}`(_6<98CVdLl67BNVDh|q>I!S2q z=F8omygvu6xzrsL{CP^lC&{(|UI(`6zJ*1BX^x#vg@K#a2D#PMZHo)rIB9OLoy(0r zZVm>7JHHmbw6XWy7ViyoqdyRX5~h!*v#VdQE7+Cqgv_zIlJ($0-UbC8)(fG#8m47D zYFs^eLC6bMj=vsv?tMRZYu`G}W~a`Q>rLyfH(X1a=hI?z!KQdh`P|=8)sN2ZY)-GJ z$ns%I?nvCYP~ab9fHxzP95b$LE&+5C0|PMEFuZL9v5+%8D{w7A&)R_Nn<2410o)PhJoS%!!TAh SP>`?yp(QYco&vQnFaQ8oR_jy% diff --git a/tests/w3c_tests/test-cases/i18n-lro/031/i18nlro31.wgt b/tests/w3c_tests/test-cases/i18n-lro/031/i18nlro31.wgt deleted file mode 100644 index 0704791ba2810a06f67300587096eeb5393f89af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1297 zcmWIWW@Zs#U|`^2I3AO1d-cb=l?#BpA3)3n#L4-2X_@JI6}dUF{*HW21_FCNccuB- z1aV3&*%H$teuBL#B!{VWN>b%M4r%^(sYW+vp5ghvD|4#yF2MzhSHFBC;Lda6QhA!t zhoZccDOK;C<=dNcSI&HqH&cQCMAe^_OJ=WCa{K1RV5D|=m)|A#mQ}u%UfR`HWcg3O z3=+B7_O$Z&qi^k;|0eUCh%Wn_wdPbc>ynFM2cpC@wk?q8`64~(KU?9hj}6J+ZGJEW zp!lP#<0r=kMh1p<76t}(pg%J5^RxA`ihF|ty$>4*)NR}U=tQ@ywCG3I3AP$OA|fo` z)$CHvuH`N}>2s-9>F@hzv(_!Mnp>G!bie$5?ev)KcN#rKuj` zA4>lIIm6_!&-nE#q0Ox4?{h8IR_zFuaJf3sYX8g-uCsUle0(_DL&Lnmx;@-exH7&d z^546;7arfsU;kdduhLxOUy+>WpX)!5y*T@3@1v!@nbwWE`m6V`r@#6p?YHHL(51N{ zPVYC(75Vqq-S&&Cl}C-@-|!iJ%YRE5*3P(7_QE|cm-|(A-!(>QZ^N{=GZr+kKHIbD z#xM8BS^Sr;376er3UYt2rGMMjx{mh5&92|2J{rByTHN+AtspDDI-yI+-Bs-e^Tu?da$f|p? zb+-ETfSw>9i@TdxzL!NDXm>qr{A%ZncjxTRZV(TPF0VSdiRb903Kr8j7yC<^g%~GZ zW$X`KAs!Gfu!R4?4$B86Hf~9AjOshLvkAUw-u&#}|Mbb$mV4aZnZIGzT=Up5viQ|j zBVnaAc~%|QgV-!%KCip|uw=5pj*I*mt5>nOEnKnsk?bt_hneLC zDyRi%35|`ZOpVhL(fU}sDWbdyDi=u7#RLQ3`*%fp3bg*!LFXMMahmQ*uY*#)Sg^7z4Z+nM9azmk~fq!C+e>h(eSY==#v}Bt#bj z!?wl~KqfSYqH98rbA+b3Oh_pJT^o9+Ahc~_hKEsrH!B-Rf&~a~0%;{+VZp!v0PXe@ AK>z>% diff --git a/tests/w3c_tests/test-cases/i18n-lro/032/i18nlro32.wgt b/tests/w3c_tests/test-cases/i18n-lro/032/i18nlro32.wgt deleted file mode 100644 index 05eb7ffdc159d71c7578a4eeb47d4073829feaf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 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 Rkgx!uB`}1R1GO+P002duM124N diff --git a/tests/w3c_tests/test-cases/i18n-lro/034/i18nlro34.wgt b/tests/w3c_tests/test-cases/i18n-lro/034/i18nlro34.wgt deleted file mode 100644 index c779968a207a11edbef29713a3c644899821687c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1521 zcmWIWW@Zs#U|`^2xEPph>tDcsyAQ}a0>oSlG7QQ2d1;yHdKI}jp&^_M%)itx`po9P z>r-06&A`a=m63q~tT(pLk*`@n!1epQCZEZAN8O~QSyUOE<7QMKPhqFvxqz_ZP=8w)Gq3lA8HwCjY~ zEt&dEZ=$4{=fd}SwhO*5h&Pns&n|qn=kASA>z`lyOJBVfn-DO~=?lXgxtjHx=F1$6 zKIic%;U;?k+(%~NIkrET&K|i0bm&eN1_pMZk23P}v-Pry!QPn;^a=>0d8aq%VBT#5 z9^3QrjxU1PIeYkCUto0QyE`k9HEMxF&F!)PonwNpJXWfx8*u%vc0K*^Nm=%?W}T0= zc6O)k6f*}MVE>TK=TrA*k=A1S*bS>w-YYiW$#R`=!F8|e(@jEm7dctg<>tAbVrunu zI^@-@mch#@!u3F|cS38m|JvmfVm7S{eYiw_|HWU1Q#eS@R{yf)`}^zL%a`ww7I|;kuk!Eu&vOrc z9ei>3(aL92eart@G~2F!wU9r3);sCEEl;E_HHSFKZ)z5)V^d@P(*7kp$?fTd1zH#W zEs5HnXg6Q}_0g5d3)dyvH$_JW&9{tV&(S(Mr8K#jDJQr9bH^vx@HAU0ta z^YYp)tG~M0@XXi!y8eRNA*wM=0+rm=be$Zzw-Xgeg{n8=D=jZ2}}~1c`2zCdKo3T;6%YV z|ELd#=2i4WVcHj%-E1JzdjGHJ_M64pwI3IHGcV#xy&`f(qPE9y^~_8qPpfD9;{({f zzbx4IUT%+e=E1z{T*p3KP&w$xs(Z3^w)*veo**BKyPH_Pmqi?CcRg+VYUhl1=j_gI z5D$wkuR6Jj=jf#h7SlNw`%9XI7$;t3>N~fy3BGCG z{OsTV^vTwid)(fczhT#0^Vl)6_|;Y;VWl;BRvp)a*eqi{ue<%QWU|1Hi~Jd@SFyM) zT(SC*>@4$y(yiYXEXcjNp>5lTndJp5Bj%V0du$N*JIlC7INc=5T6SM;%(Og1&q?-( z0Q*|_(#GC*Tf8?g!2E$2l!tsgon8HcUBSWiPRQKng(^mHu^v3g+n~V1dLeXI!?cV? zjjJaw2zkNE@z>+dz3=C4?OUhW?9^Fuy=mR`hHFXld|Hey*c4AGpZhzi`q9~)&FK{t zSw2k39f=zk3jAXX@MdI^W5!iRNdVo%zyOR%hPRC%7IKNj3MsMBvNy7Mm?Z?lyd{m7 zfabx=3!q_G$_iw|Fw+*ou(yp*nHZ2$8qhdUO2gwe%#cSIx1>=FSf0V-0caQ~9xx1J TWdj8X3lLfYLue6D3j+fH9{@v> diff --git a/tests/w3c_tests/test-cases/i18n-lro/035/i18nlro35.wgt b/tests/w3c_tests/test-cases/i18n-lro/035/i18nlro35.wgt deleted file mode 100644 index 3f2bc850ec5b0f9f28ace480988e5c768d9a5596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1636 zcmWIWW@Zs#U|`^2xEPphyZpl9*hV041rT#F$S@@5=cQ$)>s93Dgobc3F#l4&=)=K( z*Qd0Cn}Lz#Dtz*#eZUHIJqV-upf$w1`?i6Ao%#NxRi~{~B)l|r zV~cKF(&f!bOf1&6)wp&;Y_-Qq6?NW&|MyCrK54bFd~NsB%DVeDTONxoX($&s$28;5 z2UqQEySk+9lVbxSpPb7G;+z~ReZ@}q!hP)}ueTo#Qqh^UA+sbxy0By8IX;!HQ?gNt z#{a{%Tx&Vx`^hUkuI>?ls($r}g`!M)xLcH2 zzGUl%CANn@T+&{`WOL8fcH;__J1al4x4xW}e!kUos#r>Jgv(v2trfv5O>fO#9nT-` zn6!(#wEII@Q2B=EF{`d`oLnaJyMOo7!xClPk942R6;M85ow|L7ebnZ^eO$I`w+rST z?pyuJ=g4j6&%N~}DSRj6vJ$_&jO#LBxxD$+(TocQOG`2W(_hpDue09}q2u>+*ShJA zQ8KlPbHk07h?%Fgd-u<7i-`XH`f^GC+6$El#+qqsCN5|&P1{q%(UhfJ$|%CJ)}FUO_j-3B>sgQKYPzBAY4c;#v_w1C+}66l!1ui4_v@~OO4nD&@R{dt`LWOC zL~l@w8^kLaY(u&m;K+Nj2*u3v<(_0`JCQuUQ<13Uc!p*>3NH5 ze#a^-yTbe@y3qB{jWv-HGZ?)SL(6LNA_OkUzs!rWP^?hie`9jl?-McD#PYo?;y}CW zY2#NrXS_RScXoq#Saf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k z1$JEI&se>R#ckn=)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1 z`)XsRKE(^4z71X<~~n3G4e3$!GpXF z3OuYALU%Px%Xrkddh&vh7pxqAJ?`B5e(u)3b(+mioh8?s)?IJ7mNd_&#pr@f@s#qp zzoV)jo!!}-UQviL!!t07~d`HUIzs diff --git a/tests/w3c_tests/test-cases/i18n-lro/036/i18nlro36.wgt b/tests/w3c_tests/test-cases/i18n-lro/036/i18nlro36.wgt deleted file mode 100644 index 482b92e8e81b996e84dadea24ab24fae60edf81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1482 zcmWIWW@Zs#U|`^2xEPphYf}95SRs%%4~V%KWEhh3^U^ZY^(u06LPIzin188X^zqla z>Qh?5&A`a=m63q~tk?ByEZ1QL0hR~f=Oo=^-qGTq=~yi8D9u{mBxQEI|Hg%Lw-40x zq~w>~J|Nv%SGPRi)2ArGbrM0LFQTl&l+wiZbi|Z-P2IQTk(p!vmGt7B4cgy6vnMOP zS^8M;O#{a<@z%c#FDH7s@BSO7+G}^x{rg4U0Jx)hO0#UkzRWv&0_c{7EDQ|nKu2ff z=V$9>6@y)Te8DZBt3ZtA;@(Mt*|!Y@j?aJYulOaXouxfcVzDZ}?v^bV92ZtfR|l-= z)_vtMuf#8{Yya<(X^&6kUiZ=8_OAZ>_4i9|bDy4)5tssPkDU|7{ruA6DSK3o7)~n+`kD0N#O=veNed2fy6hL&y>-3XW4j>tcm9owLDAFXrc8S_ zL3YZQ_x93DuP@;juAlT@e_PbrzVst6FF)GnY+qy@9uS{haNBjFVH9w@{+D$KlZFA zJtx-9H2n^Hru(g%4UfKA{?Yi{u}{-M9MJZag|^#y=)RLU`U8Y5Obh-|Tn5lxq%544lA( zkeQc~TA`Owk_%1>jPsBBaA;yAUemt7>}CUz*86`&x8E$*uKl>sn|Tpm>J^bQ616>s zt7m2^d0IW&A0NQ>{bj+v_i}r*GY{rn=Q{S`g33WhR^5}Wv(>K$^aS}>+}*_Ty)5ED zyX$G=S376CJ7;%xgLqhUdDY2HJV!58u$a!d*k95t#5nOPV}Ixh@ql=NCHxO|SUxDR zaZ8G0RNuLsP4G?g=4b!@r%$%F+~fAn{0+P2n#Ycj#jmy+2`jD1v+B4W#AX@udEM=Y zC6fhqT;$JKy^6(c;fmFdWM`Qtly3dDU_tK94Q<;#%q%Zh88OF1*kgmZ-&w{z!s#Ya z*0TF*W2WU9dQP%O1lYI2mp1mk+v2@}0p<_Hpq%65>Fnwk>rLyfH(X1a=hI?z!KQdh z`P|=8)sN2ZY)-GJ$ns%I?nvCYP~ab9fHxzP95b%MM*`?31_oeEGQ4dBv5<=*R!C8V zmZ_1=!z>pN<}GR53N#O1N&pQ5l@fRi!%SNU!`?RTV`4x~X+YyZDGiTtm?4iaZb{>N fW(Gt&01X4h1BPL&Y@i@v0YXb)2vq|MJ_ZH=ucJF) diff --git a/tests/w3c_tests/test-cases/i18n-lro/037/i18nlro37.wgt b/tests/w3c_tests/test-cases/i18n-lro/037/i18nlro37.wgt deleted file mode 100644 index f531976ca07a7c0e733d3e434412ce20ec12627d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1497 zcmWIWW@Zs#U|`^2xEPph8+ls$TO*LS6^OYQWEhh3^U^ZY^(u06LPIzin188X^x3oM zmQQH~Hv=QfS4IW~u-?s@=Y2f=bpucMYz#eRvgO2S%~R%P+k=8uoH%<@dt2x!4Nc7r zm#*vU>tEM4zjj*R>-u@^Ywa1DVVfQYF)+gz%EcTkE}m`h zHj8Ot?3{}k#Vhvg+&an0D{bOhp$l=UwJRDcJ9n-uD>#1RMf1-Xvw-TxE`|WOCxptf zYtz*#eXs@SdJsnQLGL8r?8gQIZRfwP7ua=0@nFtP zUCk*nyKYa>ElFIsGq*ZmO{elJkH}h;8IS(&lREkF)L*aC4NEKC*Uy`ncHBg8&Kv>z zw3e>T+>zN|OTF|r&z){!uvo<_W@;YuB{9((mAn>z@7?({=a`69m-MtQ^NXwRH!Re6 z=TIDYtN+d}ku9gg{HBHdczoT<_Gy#9O<&>Gxf6IL4r@u+ZqK|mO>(mQk~fyleRbNd zQ~h>z?Xg{D+a|h=ZBN7f@bBMEx=zGO+`bZ^6ZtbF^Qp@5IbO^s^j1FBZJDy5Ua#)% zUW3l#yifW*7-b886BYjY`^^fu^!+<`?X^C(uCd-_UPR5bn$=g!{$1aA>xsqO39_qW zyUnsC(WX0cbTK=_KeWfu2rj@;iB=(E^UQE;28>gK1jo)~!P zeb=y(buP?!l5sO>ze=vt%+1+LpU=K=^~=Fp%l-R~z5f$E z?b?qEy_pyBrCt#^BT?I9xO!%$lBd(#GC*Tf8?g!2E$2lyQ7Kon8Hc zUBSWiUdY_%g(^mHu^v3g+n~V1dLeXI!?cV?jjJaw2zkNE@z>+dz3=C4?OUhW?9^Fu zy=mR`hHFXld|Hey*c4AGpZhzi`q9~)&FK{tSw2k39f=zk3jAXX@MdI^W5!h$NdVo% zzyOR%hPRC%7IMkN3MrY;@-(t}n8gCZyd{lCf#$&r37}zE3J7GwFw+*ou(yq8nHZ2$ v8qhdUO2gwe%#cSIx1{kOGXo+XfQEtM0mCp>Hc*hT0HGx?gt~y`9s>gaYcoM( diff --git a/tests/w3c_tests/test-cases/i18n-lro/038/i18nlro38.wgt b/tests/w3c_tests/test-cases/i18n-lro/038/i18nlro38.wgt deleted file mode 100644 index 5756d52e34ae4372f8421d40cac9d2a116b9581c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1250 zcmWIWW@Zs#U|`^2I3AO1yYlVLTZKU0d?4lm;^h3iw9It9irgI6vw>VK20Sbm>iq?a z8rqJ^PrSDKgxTuGZC=qG$L|NFmj7dWW*BxfKgMy7bEU85ljJ#RE!u4%GViv|GoH9g zO7`qTbFbFCpaRJSN7*WiwRozZosa+0`!KsV{ehm~o|N{tj4u~v_U`$Ur~B3JhWqx5 z;sGcQI~^KkwSkd=p`C?+fgR|ujQsp;y{zKi;6U%g1_E{4_CGq&Eh{bh(RG5YhL4B{ z%Xc-ql(TEO%TD@S>Q(yt{@JW`%dF;BW)|Hqzh65&X8WB6kpiYV-^P=ly+fsH3s0__ zw6>k6Xtk)L)AOrRQ%`f1Y!=F_4!++#g_TRXwWU?8^ujA)4Uq%7Qi{djr$@Of?o5eX zdB-!pZt2%(t)oY7Zw!5@w!tmCvT-qa!i?vldf+bw8PPE!TGlc8x-9H~6&i2qSZ?J9;_Y|&- zFN*y4ZtjK0_wv`jm+z}I*Z5Z?=lSRQ&tosnzS;X|sc)urqptqyeeCJ4zDfISc_MUa zZiv(SO>;&5{dKqf;%enlqxd&`hTrnvQiioN?v%Z7&&%b0mECuZQQF%u?d^;O4Xn@h zY`XEw{c#rmt|0}xv zX0dkd$A#X^i}+Hnh@6qA?J-e>GI0JiTh3--O2+oPR%Fz-6ou@4ti4mz^x zo@|}1em$Tk$j9RDCYJAI5eM2`PaD75Ipf_qyR#d_!=lTpPHy5kdZ~iNbk4>8l4c>s ziB}o>Lsy6g#0xCpf3U;yL5Yo9QXHfD&h2c1Z<;qh`}aS6vbE(Nw|C}m*frNYc8n~3 zwbe*iX-%G0$MqmK%b3sWZa*xUEU@Duf5z%nEN%-|tbQar%RHfU>$e39a&K;E+xB5* zdBMtvIVQp$8^rz2GVT#hH;J;A-B%kkEzi(%l09mm*!yma_XY-rKM;dbx{s%`t6#7y z>%oJ(4GKK07eaS6Ov`xGxO(z}kQb~Re?9Kp`+n}$zIB?-PMsy!o7P=#xRx}}r^V=k zP4SfSxxb^TAD!LVoL*6p<-?TRk+^Z8z(2+SZ$>5&X55(`Xek(MYXnh=E diff --git a/tests/w3c_tests/test-cases/i18n-lro/039/i18nlro39.wgt b/tests/w3c_tests/test-cases/i18n-lro/039/i18nlro39.wgt deleted file mode 100644 index ec98f370c35a4b68795a6fbc0bef8d2ffab273bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1501 zcmWIWW@Zs#U|`^2xEPpht5N+RBmu~)0Ael%8HVKiytK@8y^7qN&=5`r=3nX;ef+hq z`jl31GcdAzWn^Fg>$N@O$km`Az-)Hyb zedb+cEYYsHyl6$Gs}3swA#F z|G%^Ed9h!c!|nvY-B=!&Y1?#mvez4+)h}2W7}$Ys%*fBr*2^jeJ1|J#rq5L%Msr|q zaANjt1A)Ie|G5_OA3b*L!q?N+baZ7))?7Ha;4gDmX`zd#=Hw?Vlb`K>?^hONzSy%@ zaMHcK;5IZiJ9eC>*3;;+`N`ZFh~-uk$fPc^#f`=Z90 z-O}xATfX0v^V+WY(;~of;T{<+r%ES&vnDR77YzUI*xG)SQ@KBte{Nfr+Ngd6k+(2qYwWs~;1r41o>y#cYbd{6c1xpk`@F|-pTwG9Ek62M z`?15U7pk5sN(DGq^_8Y2Un|+wf99s{W1R?@b(xz4+FYv&Wc#M@`EGc_Y_)qw$I>H8 zpE`~>6`43+d15cOt&!tF-%Ru86;l2mXMCwu5LD*7n75|prSz_u=^q+DI-P7f?#6yH zEui}vvodGFLgyLFBsK`jiRX8A|NSUx=zHZ|e0TmQ&loF?wZ?_}7Au-P*}Y~ii-UR)7u|2wf)+RCI1-^ ziRFD~r0uV~f3x2K6SFxm!Egc-OJ-h5YK2}#NiI0K2+cq06QhZdo=y7#vzrY>TJQfA z-F~xJyY}NkZ{|gOsaHhKNYwTiuAZ5x6x-plRL&ODfRo$J_#3n~X4 zS#?jg&Q`x3&=cfiad#8T_p*os?XIVdU+tXn?wsA(4dP+ZserFl?2&bDwS zo1HpKt~af_-f%5xo==O>1)Jh2<#T^WRX;krvpKz@BFl#H3D7)vNdhzsRFdE^3^Q#Z8+MV2 v0Xd}sjRU1LJjP*$JhE|2z>*Fg4?x2}@ql3%D;p?CSb)$H7(#tOEes3*L*GBK diff --git a/tests/w3c_tests/test-cases/i18n-lro/040/i18nlro40.wgt b/tests/w3c_tests/test-cases/i18n-lro/040/i18nlro40.wgt deleted file mode 100644 index 699f9994adf70c0c579d3a41053137f02b218557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1240 zcmWIWW@Zs#U|`^2I3AO1TTwf6RT7X_3B+7LoSdJRmYJ?sk(*L7?qn?Q)4{ z48HZ<9AEVs7cr+UJXG>$$)f!4dh`4_qu+CFxO(ER%=QwWyG;deqt8e=Yd&{UQCi#c zcB0KuAN`XY2RHJ&CfoOLOq+b{)J2E6U9aDr`M=`DOSjq^CguSsF0mI5+O(CCfuV(k zfq@<9l8pTPY`v`F-bn}j9vcX>ou9p2;-}N9Fu@Jg4orjsKi6c%N&@Y)22g$nO3aLnADe6@;us`s_6r{;b+K0Rvx z(x5XoeQUMNn|Y&7bI;kcePizFwZ8m8pXLc1pK!_}b@M*u_<2_t4||3y#vZu*=;ut< zi93v6&*IuFdj3Aw;%wCu!4fW4XII_x(Q1A6{nN*X!4nJac)a6WKiMoPzBuyl?73Gi zzbWtj-5&gg?Wp0W6-WM0%J02*@88PG)Zkxp5B7zBz0hpz`<>T1s)+YxoYuncH{-be z|C{Xi%b+&9X5p{(2J_GJryu!NSaf}%{LWt873)=_*mJawPAN@pVhWq_`Bu{L{$r+b z%i{BI6mxsXHeR;7HTUb%3JJ65FY5*Mo7b6T$>h85ez(;6YJ2Y{3bVI;StX%6u;!!Qzq`GYdR=>2Zip4V`y>=J$7Oo8&|F_bYn~#Fo0s;uBp>pc;`;KB zLwwA?FZ1@J#_X@Wf3x2KW7HfNyPQBeGcP5zLNB8v*R(G%yV*db_5NSc?Kg|HYdY15Jo>tHH#|N-|e_62az1$w{%!7H?xsH9fpmNZWRrh4;Z1w8_ zJwZMecQ>(oFN-+P?t0qz)y^63&e@&aARZQ7UUhO4&(TX2ET(fV_LnpZF;2Y7*dMw= zJRn|R3IBr~mJdp7+>+uL)pu@Z6MWOW`Psk!>65K3_qe??f5Wc1=CNaB@vE&y!b)rM ztU9g-v027^UU&Op$z*{Y7x^<*uVQgqxMKAq*;(cZrCYx(Sde>jL)*3wGs_EBM$9o0 z_Shiqcb0LFaJos9wd}sym}z;2o|EiR1I6BVTf8?gF#LfSl-zwhon8HcU0DwvOf1uU|S=ILS%e&edrkzqKkoHTVofH u3C*VHn$Y7Mp(%w4DFvWwLk|^%wn}Dr7zKEj^=7m5ODn;+j@pc zW|5uJnY}E0sz01sGk`Ld9w4ou9pYLycnS>JX1=hv=^iLL4e#QJwb$*v;oH6I&_!#&fse zsojq|FF#=LzCQiP=ktI59hWqG}ipw^1Y>dN$(AFr>Xzb)W4eiKKu0U zU(GV^Pu8DKJgPsboxSSy^r$I%OYckG?%pI<<#4;?{)WX%&2(%vbk8bUYrMQ)Z{+db zGhWSZ(tqJ-z3In|AAKn-yuMI==UnX->qRY6YF0g&Ql88-X|1C8*5*EW9kaM)@$(A= z`WQ=(T=Fx79sB#FBF+mJv14TM ztF1=DN^A10I<5z?S;l-`cl%+6pVsTrzV)Y~0S>_3)TfZ$>kb84O+qMrg z%L`UU%rO!6*dXqAmT`}8x=EC^?7rHVX?cd8lk8Cg#ol*Yyf-i~{DByh^nE;?UHyVx zSq~oMZBXE0y%4&qVOqwc#?_M-guGzo`0H`!-uH92_N~)wcIqs--n8y|!?mP&J}pKU zY>KCp&;1=${pjq@=Jbk+EFY%ij>L@%1^zJxcr!AIFyqeiKuf`3TO)`7p~pEwQ!W!y3P9I}9x4cJP0a8x3h-uS14*y|;Y}d@2`I(D0054r B_51(; diff --git a/tests/w3c_tests/test-cases/i18n-lro/042/i18nlro42.wgt b/tests/w3c_tests/test-cases/i18n-lro/042/i18nlro42.wgt deleted file mode 100644 index 347c43bb16f0fee511837a8e7f8e0b60bddbed70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1497 zcmWIWW@Zs#U|`^2IME?k z`jl31GcdAzWn^Fg>)ot*-pA8lH}Hhd#?VtHTTYzTJY{aUDJW>giL)oQw}qb4(A3;; z>AJqY{&j8hYp3)3UDh+WB{{XswDD8y znyDf|M%_768>VUA)MRM%jZ4Z~C3~k%y4GO+X|}AXvf>N@aJN63oMXG~=T^rHKqqZw zVPIefx;-O5KU*)W80_%-m3Ms}05O`wdqYm=-8K-g36FRDAS7wla>e5!QzL)on?;O4 z3mj^^s}>yH>f@poYnQ{(_-}7aP}quR4?j3ew%&X=vgoPpWtW0aoj(kfLu&r1Wv|s+ z_QmLSwFk4Ym(r2Ym)jI_0~=$nG@O2amiK(-k_&-85t{d0*4i;T3*KpdwrI=ym8Bw6 zPG9qz7WU(@xtHy;CjULMkF%^5qYc_Z4XUz&Z}mw|mS6Zr(^@$#YFiXe`%Wr$s}(5km|I%5r=nwj* z<^7xe4w#V5fr)|>m>@FqQc^4QGD>p6NrG|yQJ<-pNy4-*FuU16r1kz^(d{>jwQD~v z^k!bfmwH9yj6`jZ;p&;0N}g8F_QwaXeScZ7@4eg}?aYID*SU^;xS(>-kyZC(>umMw z0X;!J7I!zXd@qYQ(C&KL_|?uC@6Oqs-5?$oU0!u^6VK606)dK6F7}r+3o%Z-%Ge*e zLOdW|UQXPRz}P* z5%$<1?st}Pk8rw4l(p=>+L&p1hMtq`5drqC@THBt@3wevV1W4pF(?Q5csjfK1-pWS z>%EXUw%}qtc#yY2frs@%=&puo8IKxQPhJr6f|cX1$DMoM&)wR$PP5smv*dcyy6X+s zlIHoe7+tU_o>D&dcU1MGvpbv9D=M;ln36jZH!c(aMIIxQ95b%6NCN041_oeEGQ4dB zv5-q9R!GT&mbsD5!z>>V<}GR512hj_S^y0Ll@@pm!%SNU!`?QYWnw^1X+YyZDGiTt nm?4iaZb{=mW(Gt&01X4h1BPL&Y@i@v0YXb)2z3DqKn4Z?6;?Uj diff --git a/tests/w3c_tests/test-cases/i18n-lro/043/i18nlro43.wgt b/tests/w3c_tests/test-cases/i18n-lro/043/i18nlro43.wgt deleted file mode 100644 index 386bbc60ce46d92c85eeb1a850bee39068dc336e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1665 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 USlK{9!UBYrz!0hd7IzE`013h_@&Et; diff --git a/tests/w3c_tests/test-cases/i18n-ltr/001/i18nltr01.wgt b/tests/w3c_tests/test-cases/i18n-ltr/001/i18nltr01.wgt deleted file mode 100644 index e2f6acb737f1d53b3d6b8e436d9095b513599ebb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1814 zcmWIWW@Zs#U|`^2n8TK9o5j$Py9vl+kziopWRPLda|w0YhGb>q*WX46NY`zF$C_uHT za?;nZuKG+Fe})?$cEmUEC>-oHwwrWAtYw|qImH$Mr;gg>btQMoq@6lsjpp;Wt}7{) zp3iPomTVOJ!pnU7#`p!wb6@y~@49sMtn+CJyB=+6;V#40h=s4i*Xta)Ur_M$=WqK& z)BoIxbrRi=OJzRrv7F{xU-tS{+gERg5A$1>=jANazI$gE2ggQH{{XnBF9s&t25;JP zpa|%Xb|B^gdOA5jFD)}&uOc@G?CW3Z7k#E-`daslBi|tf0f&pW%V(T96x-b^9o!gP z(WoXcqs7U%N3uV^_ut>&ewxoz94;#Beh+J1f4b|#y=-Z@?h_lMRg8 z=1mI^b8T^Ge0J^af`}g7D-(@sj~HWl__& zUwvw3w|CiGnWmHp(Q7?~tiD@^=xJZL8{)A)es=W4O&N)sXKc8*sB>!@3zzH12DcM; zYD3m;57?RVI`mzN#l9=QET<+37OYu+hp8+>SHIxfrM}$iyxgiOlcu*=w1v27MSqcP z{j`Kn!fzMXOD4In{(haVBXc9Khs?;W_!lGbcB+DZqCjZ=t4iaQBD3UQ|K7d7>&RoZ zBL9lHTa>@)PQSYUrl;-Mf3>C6Y% zU!l8qp5of2Lc7joX&(B0p6zA-%h<=lSO2q~e)_56*bO`1cUC;g+c&d*-Rkzb;q1~G zoAZ1E4zLx!(=Gdx5hI-Pi??l7w8JZoIeZu2tua6Pc*D&_^}QdBUhE0HTw#5)biHlk zq7$APOYce>%wRs95ZhODE`sAy-LTwSy}zq*^Tvva9Jig$#l|^xZNB()o=bZ1 znZ9Nj?`-E1JzdjGHJ_M64p zwI3IHGcV#xy&`f(qPE9y^~_8qPpfD9;{({fzbx4IUT%+e=E1z{T*p3KP&w$xs(Z3^ zw)*veo**BKyPH_Pmqi?CcRg+VYUhl1=j_gI5D$wkuR6Jj=jf#h7SlNw`%9XI7$;t3 z>N~fy3BGCG{OsTV^vTwid)(fczhT#0^Vl)6_|;Y; zVWl;BRvp)a*eqi{ue<%QWU|1Hi~Jd@SFyM)T(SC*>@4$y(yiYXEXcjNp>5lTndJp5 zBj%V0du$N*JIlC7INc=5T6SM;%(Og1&q?-(0Q*+>(#GC*Tf8?g!2E$2l!1Iaon8Hc zUBSWiUdS9kZ%N~7pt10>2WS|m z?7?FgW>Q5M_O@|1GXrwM1sVrRxOj}ij7WrWOB&w*%SL##0u2L2D~4gLY@iTk1;P%X JS1MRRJOI<1u!8^q diff --git a/tests/w3c_tests/test-cases/i18n-ltr/002/i18nltr02.wgt b/tests/w3c_tests/test-cases/i18n-ltr/002/i18nltr02.wgt deleted file mode 100644 index 8efe61907064f330b25e0499285565a97d52c614..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1503 zcmWIWW@Zs#U|`^2@bOQ!l|6moNez%U1&FyAWEhh3^U^ZY^(u06LPIzinDtdI`kb6@wjLW&OtI4-lg{zIT#u{%r%Ew)3CYE0nBkUg9?Wa)T1{ zriF*ON)9(X+xB)rM33&3iAJ?Y47mP(@0|Ad=HF8#8;^ch{TlFSqVxo&dyWy>37`J5 zhgueIO}T#3(1UH~)h?BV#rxf#ZeqIY+xq4A%AKN`-C}0loYA_oBCx!w4Avc zeYJ{vs&`r3Q@^&y-fQK9G{qQ?|2n0c(0}a{Q+of~8)Xl!EmPO5^yx_UNL{kY^?sm+ z|Eq?FOIA|`cNo8(#kE=Yygb+9y+Thkc^19$war(X>h!tv^V@fx6D#hx zyyILyx$MZk$D69=&b{*aP5ia(<Mc5Of5uKI8KpM)ie>s(LL_xLiY4o z@1)DOJmI?(rM2+&nrTXV{^v~iH#5%U-;!VZ6SqdqJtuK{`N`P!#3$djE!bz4A-iFx zNb$8^POckC=k^}$lkd%L^4WhdpqSf3w(+v!t+`*u`({Al}U(=ts?56(yJyGjcGUoNHQ|#C$RB$24(qNN@Y)o9;o0$2W zpY#z);&@1u?XSFlv)=)evpFzXZ~~J=W?o8agW$9 zvg)2}ovnU7peM-3;_fDv?`07O+Fef@zuGzD-8s9n8^pt+%d1Xq;yHS$g2i;s#r~3J zA;yVU8T&(5hzGj;7AU4aG&+BeKESW5@<05~?>QyXm3s*rF1q*U-ZfM)~ zVP<*3%7{58!X6vM{mwG(5l%OWvX&~uVKBEY^CzO=FT-4^c+3^0En2IV0i zPiI%ZU{`Q(eGoGDvBS(mtOpPBHYo70UI^XQFfHRzpBAGFHpNrQ=l+hWesp$cb9zNZmJd^MN8-kX0{<8TycwC~m~oXz z5Hc*hT0HGx?geCyBFfafBYGOp1 diff --git a/tests/w3c_tests/test-cases/i18n-ltr/003/i18nltr03.wgt b/tests/w3c_tests/test-cases/i18n-ltr/003/i18nltr03.wgt deleted file mode 100644 index dbaeaa0cf8a4bac1e061d3c508660e5e60b3de02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1515 zcmWIWW@Zs#U|`^2@bOQ!jowo`u@%VM2*g|rG7QQ2d1;yHdKI}jp&^_M%=#)9eWp3S z@hPp~W?*Fb%E-U~*6Z8n$ahFV!1eo_BqQ!}-C21)OXnQoHgQT2;!2TdKE8e9u^;92 zAMgENHkmuF;Z9S@&Sxq$^U_+bPb-Qx=(-a5`rhvw%QqHW*!hw`2> zHY>*!Okc3qonO27<%Oh5HTJCmVhLP<2@-yed2as~ew*;L^z*mxM_%}cKeNudDjfj# zNcNs`+sTc`Y_9^{w}pj)fgR|PjQsp;y{uxeFIED5uo}}By_0y)Z6_Q+;2S zv%1Iq+{m7O>z{P_mM3zT+_Vu(LC!7W7+1K zXUV-!+x>5AdVq)}_tGuZY;4{Mk~yb6&#`hl-kMlu_@L!c?VqL6s?xJfgc7Y!>^$x5 zQE0gH&gK_6oi{TlB%kbiraJQsr*KBGa`vqG2G`!S@87rUUI70ciMtKDTi3H(iPB_@0dF&Wj{A#O_u+o}5tB&hIY?d*f*WG?tGFf29MgEM{t61C?u2}s@c9wZU z>DF%x7UbUC(6;Tv%<_Vj5pzt0JvNB@on_o3oNf|jExWHaW?G)1=OlYXfPE``X=CrZ zE#4a#VE#Z1%0@n(&aQsJuHfMMAY_g$xL6M!s4m0Et#w}?S02XQRcmNs(iU$nCSlK{9!UBYrzz~`P I)WX030LPI>r2qf` diff --git a/tests/w3c_tests/test-cases/i18n-ltr/004/i18nltr04.wgt b/tests/w3c_tests/test-cases/i18n-ltr/004/i18nltr04.wgt deleted file mode 100644 index 360e61ead7bfa978e3ebdd2443db630f8a99e750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 zcmWIWW@Zs#U|`^2@bOQ!-85xONdu6#9EiCXWEhh3^U^ZY^(u06LPIzinDtdI`p9d( z^eL_2W?*Fb%E-U~)@$4A$ahFV!1eo_BqQ!}U8&d^TyqX_PjF~xaWeLC?$1{~w*Pnc z_j#{QvYwwX=U7Sgv@<2OIvmGmd0&>8x!v{Dz2A4<7cW)tp3Iz?(b7Ya>sqxX`J zPcH6R%@ zMU4?o7lBS&&%(gK4)jAtetx!IRx#KEjh=6P+JP9&1HF^(XWupuI6nXR{zn(QWhc#A z_a-sG=!Dm4E?JRT+jIH5N;kU7YF_S_2>!D_Jl%5M-m7QG^7(^su>BboTDzf-(6a#&mo&ttUSGELl~I`8;4+wEqyUMGv4WSq5> zr|SOdbE*tt=TVPsEn(zeecWBl_0hRC*;;4JZ0faozIjbpZqTvH{Og{XAzWv-fBpV@ zf7g-6YDNAPQ@1F8)17{G|4mQZvvs?7?Y2Lf7qG|OPV3|TC)JC;oA0+>pX0Tk+v3A1 zep`#nCHHqMR^2|~S`cS!`c{#Lf76@49RITHBm33=tf!xTsyKGT&i9=akMj1-tY5df zy>2+WbjId9pMV2w#qV^>{$#`mr~Kk=n-%TwienDn#dmAMk3QaTb5VWoN23>e0xwrs z-z;5k+qme2r^eE|+6FV2Pbb9o6`hOVxYW00vz)rf`$zeAHE!NmF_Gi8)4A9@Nx zpU!hhFFw=PEaSb+M1Qei;+@?=vkfl1S-yYIju=5(bGPdW-fy)Tt97R`D|cTy`19xV zbEUp5`iK;9JS58YSKhzb?|>=V9GEINfhi(0FD11?FQX(EoF>X9AH$ZYP5T0~n+-%- z@BbCuezRD+_Txft=0$v|S47T8)b<#zo|&oSY4vP>d;r_`mj(OY%k9z5JeYT#>)3}2 zDhC}|bx*d=R=*z56XauYcN5F^vWNriuBVM(?VR!MoZZ-BzuIafth6T2s^fYPn`O-Bb+;duOcvO2kw0VgDi*heD^@>}on@X-y7k+F1-Umj zv~Bw^v%Fws#2gc0j}78}XBqbhr<+7s%kHa%452$^FGF4ltwc^edXSTBU`YM7SssB!h=1tBk3IsSUwx%d6tt$ph> zo1HpKt~af_-f%5xo==O>1)Jh2<#T^WRX;krvpKz@BFl#0G`5{S8gI5|HrEi+xOA~(mj&ynkpfq?6G%cBO| z<+&n)OVlh|#WmDam|reYQU3TtEc(yx{T1))FP}WF;BZeV_T8MN^YVocrJuZ`qc*Yh z(ys4z-(E*#UAgn6&!oibpxES>qB~eWgy`lmm7EtzShuw#W96RB?OO%7L%KW@B>V#9 z+~jB6R<+ST_*Y)y@9R@C$$qtr0dS|D06O(RgxjZ$j0_CzEDQ|nK&NKp=V$9>754`F z`X4snvArCh_|$2+FDsvi$7Mc+Mh7O&&btEbYd-Gk(3AAswbJSD`y;;LLHpeFeE-aw zKVP`~G_MDv`-AH|Gi-JTEHz&KJZDypZOVk`wH!iL>#wbd30tsRZ{oJ_uX8;j7i^^4wZ&xiNxuQ<zeSFTTfQ^P{uA;4&43!Kzw-Xgeg}+Ab70JJ z0_n`Wl++5njFMc_zQF8e1CiGIe?_<7EY`05xX_z<5nt*RkuwstJ%+1iW-57FJ=-52 z!1n!R!M^u$d$cnT=3VDH_ThrcK}S~IldZGWuLtx5`B>cD#PYo?;y}CWY2#NrXS_RS zcXoq#Saf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R z#ckn=)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsRv>08mDV|b3_jgqFqq94k(<>^ne3+6u5;ras_y^2d zj7%cTxXS^crC_kF5kw(M1!R5LG9^S81H-n))j%dRi=t~nk8^~kMkb^bfUXTaR1n&x ZF~h?sz?+o~B*6lNH-R)8u(V)c000%6_K^Sp diff --git a/tests/w3c_tests/test-cases/i18n-ltr/006/i18nltr06.wgt b/tests/w3c_tests/test-cases/i18n-ltr/006/i18nltr06.wgt deleted file mode 100644 index 69f802a4dd0b5530b51251556d9efba475eada42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcmWIWW@Zs#U|`^2P??cq>s5Hdpa#gB0>oSlG7QQ2d1;yHdKI}jp&^_M%ugEb`nUzW z^(n33W?*Fb%E-U~)~kEQm+P>CK-omW^3dkp(u$3(fj`?0$uS5(IM&9;R3nhn`& zd0wo1bJJP(2vcv8kilLnHvinK?d#u~%w1%|Q@6?V2kVrdyTkS}2Eg5KHm$;ThwTgY z%RpzXXJKGq2f9BaKR;V9s~GHfbD+a5Fdg4J<$m^U1A*i7pYMNk!CQ9Htabd!0Y)dh zPIJkM%-WvI-&MNNRaWzIzeMn#{o(1B^Y)gV{gU)@U;JDRt=AZ-Y9LbzMb$`}q zrR&*kT>V5qrTI>l>!b@i?=LKhY<#!OX;xkCJC{?7TF*Xe>lO1oW16!dK!iV|<;>mc zn^oLPy|=|Z^=o_Vy>@<(rWoV#U#D~v+OK_LNHQk zc~=+@dxk5<9yt8!<3!hqJB(k?;@Zr6em>XYy+Thkc^19$war(X>hwAH@85sxRX*_t(99=f6=}`Nt#>~TLAvZc>@ zCmn9`MC?+O*233orYY_DpEKd#jC&^k7W~uW3i?!N^jR3=RCRlN3^+@nVFW#p=}e2r%#{oD5qqn`o)_v zo0FA~PtpB)dWG+dN7g)V&veX^UYxyQ>9?s3d#9ahoap-U!SelkcErq`U;k3=`dxX& zN~AP#A|%T8SKhzb?||vq9GEURfoUQ$FD11?FQX(EoGQvEAM?5EkCCKJ`vS9@4MbY+ z{}tVSvskeo zZTm2@ykKR-91~%W4dQ-h8TSaMn?za5?yHTNmS^ZW$sUo3z7@W-vG?5;?+pwve;@{B zA|Fp@SHECaaBzJPGWVH_8CXMMahmQ*uY*#)Sg^fRV?@B*%=a zNRj}$iGcwalMHVgK`i6~iWO2op%qTZ=3y2Q2=kUS9srsLFED_HfeH*fhGC{Hgkf(R zuP`wnr!=5(pp=HkILweo7`LR66}5jV`T#c2@4Qf0z+sbPzwVC0C_P& AdjJ3c diff --git a/tests/w3c_tests/test-cases/i18n-ltr/007/i18nltr07.wgt b/tests/w3c_tests/test-cases/i18n-ltr/007/i18nltr07.wgt deleted file mode 100644 index d222bfad8db8f385bedb2b2441d042f48c286579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1522 zcmWIWW@Zs#U|`^2@bOQ!U6cAyv=_+R2gF-FtB$aTm-z~%kVE>-sYw_0*jcAX9X!F;qOWudRrCe^xqSGz2> zOU^KN?p<5Xl;eJOdG?&8GWyMJ&y9{-y;7LOe&kxz{d2Wia>+;c25k-GGMiZXHPC{4 zdB(eg2SdEF0-U4Lxh)GtG~P5bT(xoC5aYJ@ZN}wNc75|h7C@8f7^hk z?fmEU3MDI>m$+R&%_br_fmb$c0W+J)_FVR(NjVGqp1f3U3;eO)e~ZldxZP>HA|Cyo zRHgCx1g{5UzQP()gP-5_u9~y6>UiFyp8B=D_FgL=tQp35{MV_q4;rq0ViNbidnK$m z`|{)|HmXMqml*}!%zB|QMZNS$!KF|S{tvmIKO9)(ac5>}ZtKmy=l!i0<2XNwum$oi zYc!wiweaVrzg7RkCsy3`k>kjply_*~^G(0Ztyez3X`lb@-T95uBI_smd;QU`%q^+? zefsmMWm{qoP7JSmb8zOi|Hp)NceZbt==DM^dkM$?dPA>zAAPC)!GGs(h+FSp?(_EZ zlYNH`irAwA;-k0l-3aPZeSMsT^^L*vdr9Z}k8O2amTO>ghbhSYK}pBAa$9Y=_OoJ# z@6XU{J|}J3U%ol`|Mv6%5lil+TdLXEyb~mIPJ5nX<#x21SZ4U3$W8kKvzrY>TJQfA-F~xJyY}NkZ{|gOsaHhKNYwTiuAZ5x6x z-plRL&ODfRo$J_#3n~X4S#?jg&Q`x3&=cfiad#8T_p*os?XIVdU+tXn?wsA(4dP+Z zN~fy3BGCG{OsTV z^vTwid)(fczhT#0^Vl)6_|;Y;VWl;BRvp)a*eqi{ue<%QWU|1Hi~Jd@SFyM)T(SC* z>@4$y(yiYXEXcjNp>5lTndJp5Bj%V0du$N*JIlC7INc=5T6SM;%(Og1&q?-(0Q*+> z(#GC*Tf8?g!2E$2l#6^kon8HcUBSWiLC73iaIqdd$lIX6!+IffSHrZ7M~$l|F9>}5jV`T#c2@4Qf M0z+sqPzwVC0O&nG`2YX_ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/008/i18nltr08.wgt b/tests/w3c_tests/test-cases/i18n-ltr/008/i18nltr08.wgt deleted file mode 100644 index cb25905c303fd9ecf63f4b3e67d8b13627cd7871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1514 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 G1_l6rk4z5$ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/011/i18nltr11.wgt b/tests/w3c_tests/test-cases/i18n-ltr/011/i18nltr11.wgt deleted file mode 100644 index 71452a03fec39fc93c1ae494ec0bbe976cb81755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1529 zcmWIWW@Zs#U|`^2@bOQ!ohq7M&=2ID0Ael%8HVKiytK@8y^7qN&=5`rW&@RrJ_lpo z`jl31GcdAzWn^Fg>-F{X<~pn(aJRZEQS7d&&@RoDA4T>$tPo=FIc0HBZhxk**Zp_4 z_s*LXb&D&QEAnm^X>Ct*saR`xm9yDHa%mc9bnpz{#g>w!F z`tO*&pq7Q-xHvDs`QD=DNt&Dnx{e2~7|lAh07`jqT1@r!NEF72uMZJqID zx^{8h##g)na4)6Kt+4&P%uM|z(4_}i7#P@rUdqVN&(_N-2K#3p&@Wj0(>uvG|F!{7 z+xgGy6-rh%FFAJUa)Vxb$%_q4vIYxwuC>+>OXeCo|^e|QmlHrg5;Ah?MW@?{>n`~%~i5p^wO7S73x7^x;bLz zIa@7`#T;hia{bugcH++7>1($K>`Hka`Yy#{-<4mQQ)~vt7^esbIzu?=QzFgDo zX11Oui=AW+hq-A*e-Ul{vV>2 z&(AIi%Gj5?@BaU(Dstu%s}H?iBD?YZjy3ScA zpXsr~3qHH~K7N~Wb?-NpE~WH^Q_9vKNZ`|H_O-lKe9&n^*pk>U7K)YP^{?Gd9&>AT zxgl2c?vqf^oL;@}I##oj%d(!#*tE1xax15BMzL~s*8B@s-&~BZ-4hkec}L=IgYMS# zELWnm*xkgIHlHi{{Nv}RO|xq|2{dz!8kdMXPO)THbA`Y~>o;H59 zbH=-Kc4s$;heelHo!rE8^il70xGCCx&N6R$G%hprG0h!=;@6YO9g3(waQ0j_W~emNB2#-F{dySzyOS z{*2YDSlkw_Sp7(LmU%+y)^7_Iu71I;;NbcwWR5MkSPvfLZBXE0y%4&q zVOqwc#?_M-guGzo`0H`!-uH92_N~)wcIqs--n8y|!?mP&J}pKUY>KCp&;1=${pjq@ z=Jbk+EFY%ij>L@%1^zJxcr!A|G2<$$B!F&WU;xG>!`ns>3%TTCg_K-qr53Vzm<0vG zyd{m7f#$)B4WMD5Vgrw1m}v`P*xSapObo~=4QL!FrQtCSGvpD*Eoqbk7HjZ$02&60 X2Mohl*+4p5LyM)!oUCkwGv4b diff --git a/tests/w3c_tests/test-cases/i18n-ltr/012/i18nltr12.wgt b/tests/w3c_tests/test-cases/i18n-ltr/012/i18nltr12.wgt deleted file mode 100644 index 5377f68a8da31f52ba021bec319b6024a0f54326..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1524 zcmWIWW@Zs#U|`^2@bOQ!J*KwsLoblG4~V%KWEhh3^U^ZY^(u06LPIzimr-06&A`a=m63q~tk<^hAlG390hjl6M>n5^mXU+{ByiS)FUHvj#zY->rL z@fjPp?JvUg1@1N#?s~3b6Pw<0eOghhLB|{8!0gurw zX+OK$Ud8~phf3#G*rpgewO#|da}Nsx13S<|8Tt9ydRfI_-`oZI)?mTTwbmM9$=sz&eB=##4*joP^mNC!Tc(!}PW!QM zk(`%J5p&Q1c8+9LpSaqfsm9^nWpibkQzk^O^$@c9ULB&Rec^7H$K~12{FdlM-O$Oq zk#+G%%waYz*N+`;C+_T>zIJ=Su9WAY?@}!GUHPRsHA%2w&H6h`-!gRd3%=dy%Vp2Y zt(r9Hd5cBc+MbYYFSNN{ddeEiDG|NI`X|EPW`l-Md0K36;b@R>tFBwUHpdaX!VoDBLBVX41N{- zzWw>sGLzT?6T|CP9GtoA_i<6)oy}XOdA+b&y_Dm_X!vWY}i9^*=-0xOr@o8wgb&!%<% zGd*^A!Dlz$$8S@v?)}EnrIfyKO4<4Y34A)uzLvL&4?0ZC+BCbiGyc$DW<;_$5fWwlEAQXzcfd4m4on)Hz+{n`my%kcmr;@n zP8j8rkNL=JzC=&vrhS3g%?2W^_y3A+zgetZ`*EQ+^CG^~DM*VD$YcFuTr z&hG36@v!Lfs*{^|j$W!@F`aXX9 z;G5>n&;I>SpKNWp$L*c@8+Oe#j~ye6Uu`uKR$7y1)p0$D%`)cmy4w#+CJXGi$e*!# z6^q-#6{{b~&N5FZ-TH08g4~-M+O~a|SzfR*VvdQh#|Ck~vy6L$(@mnRW%t#_Ov^L$ zoMev(uWc zk>$gb+>y9(p};?2o@Qi{W5!iXNdVo%zyOR%hPRC%7ILA*3MsVE3M^#vFiQ!9c}p5E z0?mV$89>88Wd7^#8qhdUO2cCuX2>IqThb^AEYsle05l8~4;Y5A TvVnqx1qdyHA+!{zg@FM8=vz$H diff --git a/tests/w3c_tests/test-cases/i18n-ltr/013/i18nltr13.wgt b/tests/w3c_tests/test-cases/i18n-ltr/013/i18nltr13.wgt deleted file mode 100644 index 21208ef0913e5a6b8bfa6e56255f7a6024d552dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1279 zcmWIWW@Zs#U|`^2I1!U<8@#xRr4PtE0K{BCoSdJRmYJ?sk(*=NcaZC_0gvEM2;)}{!^MgGf(J}^NmUIO-`RC`~L0S>}B60b}##x)y);V zde3dWwk~&vSfosNxz8%q#tCgtt@|m5_UhvD=1nRc!e{`Z-R$BC<>jYa39}y9j?`n1_XV-FDO?#}6#4Jn+zXHI<*$D)-&bj_@vlhE z^Uw94$6lO$v-i=8F9L>u&qS)yktr@o)GH zzvaKB3~OiHDSP3bm&^SsyYCvKw6|f}+ZhWQSfB0LbmN!%<1GHm*M!UNFa^0k*wVjk zYh6cs;%3+HQXh?8Xf1C0m{yP#U!BmU`ypuT3Bgm-Obi|@g9H4k6@d(!l;q@EAQXz zcfiOr2SzL>kj~6YNv+V!D9JVL3(Rgd5NW;tS9JT$V(r?G3%!{a@ugl7IU`ZqW4L-| zrjn=Cv;FY_Y~NoN?0YY_M?3Ri-gT~HA1%|eV5uQK+Bt`HB17g)moV29;{5*xRq zI7aoI+t~!)G;ep^UmF`w7nepoVD zV8=!NjMb}H+!n4_{YZ9}c|z&dZwnUW-rUf(?ZeFSf|U_-OoTl)i2I#o+#{TB5@jvB zuQp~{o}uR?d(=R&_uUrn4Gau_AO@v$A5UjjzhGC^g9mvV6nI!KgzjpXmhq@@_2dO1 zFIYMLdfd79{oJj6>ol94I!mrMt-IcEEoq)li_ry};wj~Ge@9h6I=izuy`mz^hbg%u zapOXPe~ba%j7%cTxJv|}rC_kF5kw)%2XuYtc@m0nBid*;LXYgl3)SCn?PCsSXeMH005rM2L}KE diff --git a/tests/w3c_tests/test-cases/i18n-ltr/014/i18nltr14.wgt b/tests/w3c_tests/test-cases/i18n-ltr/014/i18nltr14.wgt deleted file mode 100644 index 8ad15e4a57866505cd5ea89032a8d802af5752f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1493 zcmWIWW@Zs#U|`^2Xzt6lWmr~OT?FK{12Gqa3`25$URq|lUPW$BXb2|*vzh!IpUT*` zKBX1h42&#a85tPBdUbmoxehA`FudQFbkjM%v*lYr&{xsF4h|Pt7bo7`R9okK+wy!* zaF-=#z!#6xdqW>S-KMnX`>nR)N=0j~t$MZQ`p)8Qxi{jC1e7)&-+Un9!I7=G{tqLC za?ZpiPWiV=u+Pu8K~uajb5}~G#c$Kz-|L%xG6cX~eROVxZH;;4%}YSXtY=|hU7 zS6R)={Sv`{_J^li&f8md_Dj<1efOZk*Puu0@WbVqpb8%9%NA}8=b(^EQ zKK$G4_$#^U@{i_M|C^o`RoW!y%vURyZJT)eX49{z#ia+H1)YgBSJOynw)`$;U1ze6 z)95do^I2VmQWn4VjPh%%9~Iunxw!vWg=ERS6`6bHzS(tsoX8 zZkevblIeacvR}BX{Nwh#DLFY;JX&%UpX=!>9=-XZ$bZph%e3Q;eX7y3rmINuas}74 zCoZ_@U;p!Ck?WT`60yy?Ti3I^*&4#vqvOT?{CT|9byLB8NJ-*ENR;ibynnOb0TZz~ zFj;T{lSF1-N@|5(MoBI>QB+Jm=2M25j!pXlvzrY>TJQfA-F~xJyY}NkZ{|gOsaHhK zNYwTiuAZ5x6x-plRL&ODfRo$J_#3n~X4S#?jg&Q`x3&=cfiad#8T z_p*os?XIVdU+tXn?wsA(4dP+ZserFl? z2&bDwSXMMahmQ*uY*#)Sg^7z4Z+ndF#pl|vFhH!&~(W0K)*BZ!4uDzQRJ zCA1O=**we=0%6{g#%)0J;N=C-Fi?4c$1u#ag)r=G<4Gn46112;-JC h{$gf8!~@VUP&{B5#>xf?5*8q|1cp!>un1&e008*cIh_Ci diff --git a/tests/w3c_tests/test-cases/i18n-ltr/015/i18nltr15.wgt b/tests/w3c_tests/test-cases/i18n-ltr/015/i18nltr15.wgt deleted file mode 100644 index f7b1f733ad9aaf69b490e5096be902799c0f2112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1505 zcmWIWW@Zs#U|`^2@bOQ!-5oP?UM-L}1&FyAWEhh3^U^ZY^(u06LPIzimr-06&A`a=m63q~tXKDpBiCUCf!2q$euifj?RIg}oDy>PE6Z0VMpxFwiF1r>>x6G@ z|MRdqYEyrsVs&%nzUzlf?u)gY56d#2G2^?drr^vcR;FF6%DyVg9!xi?;Ml?}bGh^` z)0Zn9yt_maRI`fO%0F({9wVu7{D?u{^b`DB-u*0!ntO)t*Z=Hx{Q$TJuFb8m^+-RM zdKu`hO)Lxy>_87>Z?FDLk7l zZgetdI~%>7{phY6i~6R#bnnspcYpb2ne*?~`{-|b_j~W<=S!>$n1c>jb7XV+#MOjM zH5Qk@5n9AC$uV!MlIM#%?*n$OaVU>f{9Bio=W=RM>)E73Zry6vq=Ym?jxtLr7Jm=h zde7xI?or5x|=rI*w%6Yu>V^50x%`sv4#$-hl@zBcH&b588ab*Z(?X48|- z?J{&^ls>a_`;Cu_3w&x9QbFbI%%D z^A+jbytJq1Sj){I>F>?&4bGVSeyV>ze%%VjyqRa8tq<|D895t z|0}xvX0dkd$A#X^i}+Hnh@6qA?J-e>GI0JiTh3--O2+oPR%Fz-6ou@4ti z4mz^xo@|}1em$Tk$j9RDCYJAI5eM2`PaD75Ipf_qyR#d_!=lTpPHy5kdZ~iNbk4>8 zl4c>siB}o>Lsy6g#0xCpf3U;yL5Yo9QXHfD&h2c1Z<;qh`}aS6vbE(Nw|C}m*frNY zc8n~3wbe*iX-%G0$MqmK%b3sWZa*xUEU@Duf5z%nEN%-|tbQar%RHfU>$e39a&K;E z+xB5*dBMtvIVQp$8^rz2GVT#hH;J;A-B%kkEzi(%l0705eJ^}zWAD2y-WwQT{y+@M zL_VI*u71I;;NbcwWR5MkSPvfLZBXE0y%4&qVOqwc#?_M-guGzo`0H`!-uH92_N~)w zcIqs--n8y|!?mP&J}pKUY>KCp&;1=${pjq@=Jbk+EFY%ij>L@%1^zJxcr!A|G2<$e zB!F&WU;xG>!`ns>3%P`1g_KZer4zDwm_-D_yd{kXf#$&r44`440t1g>m}v`P*xSad zObo~=4QL!FrQtCSGvpD*Eoo!}7HIHz02&602Mohl*+4p5Sj$k!oUCk^IAec diff --git a/tests/w3c_tests/test-cases/i18n-ltr/016/i18nltr16.wgt b/tests/w3c_tests/test-cases/i18n-ltr/016/i18nltr16.wgt deleted file mode 100644 index 8058801c3a6c8ef95f87db7af74d2b009d3d6666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1513 zcmWIWW@Zs#U|`^2*wdG7n-Nofw*|=C0K{AjG7QQ2d1;yHdKI}jp&^_M%!}pk_?(D+ z>r-06&A`a=m63q~tk<{Ck?W9wfa`b5qZ3+pn~69sS!UTPuA!#FoGGNH{P?48*pdCe zyTAY2-ekwd_NDvS%P6DEB{NO;Y>WA|NVs@*ui(VMbID6Hyv*4znN}=uecw{X^({jF zSMvtLYmeS(9`Fibty*>d&B9O}o)$wxp2M1-&d#cT5HO{b`(62wS^nYQcE7wL9RT;o z$GH`@-!=r9T>(083kw4SJJ25)`T5y;S;b&a90hvd7^WwBC;4XIF%W1w|8>1YN$2#t zGt}CHIHGS%o5B{Pk&>UwAC-Mg?4#E@yK6HZ{EzE>TKZP)Y?yfT=Y7UiZnKol6f$<^vm%i^zncU6unNInVEp44*gFXPnHTqWB@FTFqh&2NcL)D0!IH(N52*BUlD z1==hUG%8;oDybwx2!B+^tlYer>C0n)N(;F}G^f6TuQLrZd>?`DnF1JN@nT z-+0$Yg~pW%dpvh>{+@UG)%`b1=B5ANvvaro@w|XNZg!d<_dnTs@#|at^V+j7z31xN z^C_AC+?K!Q?=nu>F6j+%GLKYtt@wXbkn1!wVP|W_59@De1}iS<~Y{o zUbIT^)||FRURY$q;W^daw)Rrj*=E)?FMKFA!HQ|Q^A`KpksmE`wn@Y#@8Yq_zhZOm zY}w!J^9wYJ#Jn=U^YBbNV02^J18O7mJ$pLEXNJRU>B!4JT2`jn|M`0RHSg8~y%%|J1pW4MSi7_+Atlgi z$DThIcH0R)%SR-N6CqKyzw-Xgeg{n0=D>u(2}~53c`2zCdKo3T;ABxT`IwKq=1cUn zZQ2)@-E1JzdjGHJ_M64pwI3IHGcV#xy&`f(qPE9y^~_8qPpfD9;{({fzbx4IUT%+e z=E1z{T*p3KP&w$xs(Z3^w)*veo**BKyPH_Pmqi?CcRg+VYUhl1=j_gI5D$wkuR6Jj z=jf#h7SlNw`%9XI7$;t3>N~fy3BGCG{OsTV^vTwi zd)(fczhT#0^Vl)6_|;Y;VWl;BRvp)a*eqi{ue<%QWU|1Hi~Jd@SFyM)T(SC*>@4$y z(yiYXEXcjNp>5lTndJp5Bj%V0du$N*JIlC7INc=5T6SM;%(Og1&q?-(0Q+9}(#GC* zTf8?g!2E$2l#6^kon8HcUBSWiQOF!yaIqdd$lIX6!+IffSHrZ7M~$l|F9>ml#09KqUqq z!!Xkp!mziEcbOQFQyS1XP)fsN9A?NPj9b#k2Q1Ox@c=Xo6b~4Nv9f`JgarsKfgv;t IsD*(609bZJiU0rr diff --git a/tests/w3c_tests/test-cases/i18n-ltr/017/i18nltr17.wgt b/tests/w3c_tests/test-cases/i18n-ltr/017/i18nltr17.wgt deleted file mode 100644 index 15572122f647955a9c0b78e49d91948dd04c1b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1505 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 diff --git a/tests/w3c_tests/test-cases/i18n-ltr/020/i18nltr20.wgt b/tests/w3c_tests/test-cases/i18n-ltr/020/i18nltr20.wgt deleted file mode 100644 index aec23258a705c8883df492c0467ce5a77c41bdc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 zcmWIWW@Zs#U|`^2@bOQ!-FhaCV=j>Q5Qw=LWEhh3^U^ZY^(u06LPIzimjed7Ab9a_zihqgBd zD*3Ht&uu;;*{D?>a`@|&oKFsUXC<4T6^YfXymH@e#?%$QH7wQ>W%us-$~KKF$=+^m z+iu1`2h+I>rj>^*esDWbZJ&DRH?{z{2ba#Pu&vDP6anp=LZiR=Vy0xlGr8Pv3GD|5If1emV+o|m2vDJ4@7W@f&{XC@0^T5V^ zCBiorZryX>qW4|@+r`XJ>K(SaM(w;nFIG}S}=gGszzq)4ar=5<{iJ)o ze;ohqPcWN3_uPx+{O0DOZPRYwYmfyvs>rB>h8TmRNni%b{ zienDn#b;~GpKZLEb8(+ry+p~q6^VP~*37yt=MeZrXUe5_yb?W)sT*#6`xdi7V2Nm^ zxUQc;{-gJIHI{CSQxx3RHfMJYw`O0}^lGuWy@uANMO)UajIYW)ByvA7BmLWD|Mkm0 zM|0fwHr~5?@1B;YkFq!a5UTHdEs97ACqklZf93s~{SKJU&4I~*6POe-^HNeP^fF3v z!HJ<_@-ZJ)%%pDG7nt2_AkupOujuxh#oDzW7kV=<;!C|Eaz>)I$8hz`OeIgNXZzy= z*uK9k*!Ny;k9Ow4yz5-YK3q^a=*X&jvURrl^?;rrAB(%2SiYA<9B6kvZTxEIjCbek z&TbG7i!QG^xryiKr3x0)IT!m&nuQoAUS;eLT_GM2FR+CF!4As@B{ptJag6Fax3dYp zY2N(o-~aT<)|PwR-kHB)*Ie`1F|zp8RwH4hHF;JY*MrzBV?M9D{jg-Rz>bUj8LL;Z zxGh|<`jPA`^Mul^-xe&$y}6-n+lQIu1uG-wm2z4DY(!IEoAdBO9q5_OBx>n z&4ZT{K*O+<5y*yNrY(eFZyVn*F(9WjpmCs-hR1D~A&)R_Nuw;V9D~OL&@fOuU>L^A S1_}}uAhZOA&`O{d1_l89YeUHZ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/021/i18nltr21.wgt b/tests/w3c_tests/test-cases/i18n-ltr/021/i18nltr21.wgt deleted file mode 100644 index 912d49717419179360a15b5404d44f61de08fef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1529 zcmWIWW@Zs#U|`^2@byo&RXj8)bT*Lp5Qw=LWEhh3^U^ZY^(u06LPIzimr-06&A`a=m63q~tk?IPFITgH0PBOj%O%nt`Zd2@mcb)(tM*{r0W(KtL(Y>^zWlg) zOFrG$p#Qs}O{S#=lWz2ts|TgHcCT`)@H=))%v~wocv_Iw<$WcI31*wN3I(PZ@NfUS zgr$Gqc7@W6LbZS=ZBjdAcE7c?5V`x4#dRY8m4a<9kG9`Cqva*~-m&`9xvtkM5;_(7 z-X*Hs5qTi~Kl#MXZBss;pR82P7y$R)mw6SoZ-36uI}3F63Kj+icA)n%^7FIxvWmfe zTLbhL2&4I}H{@X6Z37Ot)6vL6#NneLcO#8rUhx5+z-1i|4*p%Ht&OL4@)n7*^|FR=l|Qe7e3$Hf9}2f zxk_`5d&T!A|A>EHz4&|geNp{fugjb=6_KT;7QyZ1F&8IDd-Ml!)}HAL`te)7^n(1Q z*+=A;{O3;Fd^5A(u6Blu))(FFn^~`Jb$Z>sC^vJuW&E9d+9tK2eI1v(M`z!C??03L~ZVpTloWRtOnU|7U zp_fsT3r-IelaKi%W2OhwzQF8e1CiGIe?_<7EY`05xX_z<5nt*RkuwstJ%+1iW-57F zJ=-52!1n!R!M^u$d$cnT=3VDH_ThrcK}S~IldZGWuLtx5`B>cD#PYo?;y}CWY2#Nr zXS_RScXoq#Saf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI z&se>R#ckn=)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsR zKE(^4z5o^=05V8FVV9P>%oJ(4GKK0 z7eaS6Ov`xGxO(z}kQb~Re?9Kp`+n}$zIB?-PMsy!o7P=#xRx}}r^V=kP4SfSxxb^T zAD!LVoL*6p<-?TRk+^Z8z&~JCW@M6M##L5H0NupE0E|h7w~Zhca>>OCDY?*cHnMq` zg#*I8C5`ui=D~{!pkY{w31q`C(-y+8w~cR^7?4vM&^S;^!{av0kVhD|q)`r7l)>Wx aXc#CSFbrd50|f~S5LyC5XcbTk0|NlQjz&`e diff --git a/tests/w3c_tests/test-cases/i18n-ltr/022/i18nltr22.wgt b/tests/w3c_tests/test-cases/i18n-ltr/022/i18nltr22.wgt deleted file mode 100644 index 57e83ae62abcdd8261a18a24a0b675a51125ba8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 zcmWIWW@Zs#U|`^2@byo&^)U)4m-Ft({;j8AHO!Y z(2UvmOtOnn)&&-~s~LRi>6%kgTR+TN({0-4Qhc=1Yo*8WL+y>bPi*&enR!s@;V(~b z!RPlHjTRnbZ8X|m()N1k?WYHS>8A6{+9q7H_Q`#_8NDk?YFLaXfAqWO#+%Jr_{D$q zgLRDcAJ*kIY^+&e%(YKG^-*^9q%wG$43R`-Mn0aza>&{woRXsqX(cQ#p+B?&&eNII;udTjxa>HN0*T-YJA~z)0 zzD?WUo?Y2Gd3l+KbwT!L<0-bOPZs;9wrq+F51gRBW&6V=t0(e3xc%v2qw0hj@oT20 zV$yMTVQ$r`9l??=S0`HSZw=u(JN@hR-}_xIl_~Eiu9&=)`F*tB>-uW-FPpxfKfU|6 z_dVXO>vQ;3{$2lh@WtU*)1PlWn`zaoyuLQR+1R&cxhU_>);}s!FD!qg;=1F%C;wl? zy&ix3e%U8(jF|IX;?nVx8xLJ5s*Vnf&ECRyBcw~SJGY6+ETSmi@R$4JSqzs=1pMwW z1-U*b={UA`Ugz?(&7tMehZ8SUEdwno-+nc%iCTK}_?MpgrZ?t@q;N7M%Jx^@zuE7A>D(Nc95{hVAu}%}wL&kW zBo~|*DkmTFS%jGwO#1?}fl0mf{$J7UH;c7vKQ8oUUc{GrMdXY`ZI9vVnVCwSR?qgw z2e5sAS+MWD+#c=BgL&7vj(xbGa?p`g_hjpA_3HsWK|U6DH?e##i#X8kdfNEa&Kd8{ z*`3`W9u{3*b#fEW(MuI9rgJX#moy78PQ1$4AG$(3AYNbz|AQTt4@zv@lHwTEcW!4B zeAB%7*}wnkldUcHxV+mJv14TMtF1=DN^A10I<5z?S;l-`cl%+6p zVsTrzV)Y~0S>_3)TfZ$>kb84O+qMrg%L`UU%rO!6*dXqAmT`}8x=EC^?7rHVX?cd8 zlk5=z_Py|>jlJ)-cyC~U`2#U1@A!B+yZQyYf`jXmkhzb%=1cUFf%V`)-UbC8)(fG# z8m47DYFs^eLC6bMj=vsv?tMRZYu`G}W~a`Q>rLyfH(X1a=hI?z!KQdh`P|=8)sN2Z zY)-GJ$ns%I?nvCYP~ab9fHxzP95b$>N&@I61_oeEGQ4dBv5*TcR!G5xR%juchgmWp z%v;j<5NIB}oB$dIDktz5hMBeyhP`ck!^D7`(tyT+QW_rPFhd?;+>%CFU^xbl2cTh~ Xc)&1>l?@amEI?=p455`kEes3*gzrmd diff --git a/tests/w3c_tests/test-cases/i18n-ltr/023/i18nltr23.wgt b/tests/w3c_tests/test-cases/i18n-ltr/023/i18nltr23.wgt deleted file mode 100644 index fa18ca2fab37574c58ded789c9d7bafd815596be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9258 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 Sv@ifz@Hr38-bac*z5fDb0 diff --git a/tests/w3c_tests/test-cases/i18n-ltr/026/i18nltr26.wgt b/tests/w3c_tests/test-cases/i18n-ltr/026/i18nltr26.wgt deleted file mode 100644 index 5394b3087802375ba7d99a2d7edc26ec8aaeff2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 zcmWIWW@Zs#U|`^2h@O;TyD#L5e=d;M4a8gwG7QQ2d1;yHdKI}jp&^_M%zq7T_#862 z;Zs_{&A`a=m63q~tkvnqMteGBVEhum3VN;zc`$8hiMmq77nU6ZW~-qzmrP zbUv}weNTzU_rB+0m;NhX*uJ~q^`zen0dNOy?U1Wz9;Vc zzt7+PJ)BkE{%X?aiASpEK6W!JuaCa@Bj@d#T?|&+BOFr0vtOD>FRK#Tdt%!yjorH2 zqb`P@f2mj5tN8We!>6n)o75^jh4N&bn${)Fy*a~lwyaX|4?d=*rBAu@r(JSb!hZeY zsh1~MQt~f6e5N){sQZMn5ckQGJi(LyS6pE;T40@CxBFQ33(@nQ@$5pzkA&VHI~Bg~ znf~V%yM`GVrh*$U1|F2rzFEaG%|YC%snVM<`sK?Hvnq-z_IdgUZ~dM5vDB{Dy?tS+ z+Pm+2jBcW2FZ^eX5^Jf)YseV)K5 zp}QKUWjtzJJ$XUM3s#Q59(V42KX+^2I?ZOM&XVg*>#jFkOPc4?Vsyc#cuM))-%-_% z&hBhZuc*lKVM^{u+_+HSAF^8}X4qP#uVG3Cx}y+?Ie>1-Ey>U;E>0`}JH`o^$5gp7 zQtjrzl8@zloje7hCp1o;-S~Ku=1HBCo?DBHzkJzvv3_;-)=~KnKo-I{GYq!w4w9KR{n^h`4 za^yN|x8`nJ%~_u>ny+s>nSJ-^w>9-!!e3VQMKQ4V`E6gmt~u*A6Wf;6XZE;VU$M~q zvd538H}?`;tookZS>*LJTQX1qAt*=d*TxzH<$>qMJV(#(@4rhElq*LP|HZk`38B%;E-N-jc?RK=a^* z5701B;e*F8%p{3y*exaoL;?jG21=m#48urM$cCjcGa#ifplP5KM!+=G$VZs=wviiH a&?1roF4I`qK;g>@gl)j!J_pppzyJVzs$IbV diff --git a/tests/w3c_tests/test-cases/i18n-ltr/027/i18nltr27.wgt b/tests/w3c_tests/test-cases/i18n-ltr/027/i18nltr27.wgt deleted file mode 100644 index b08b9d48f38cdd0f0a54eed72ad21ef34c654888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 zcmWIWW@Zs#U|`^2@byo&%`utyvl7Ug4a8gwG7QQ2d1;yHdKI}jp&^_M%!Vo#ea^MN z^(n33W?*Fb%E-U~)@$4A$aPpj!1el9k;5_v7QS7ix}sdO(1T?zi>$%U+NHXGcW?jk ze&@VLhqyGWe6BA~S-bssOTiSKvyWHp@^{%=e*1mdYHrWP@0TVTJbU!acZ%!6tCbQe zpAy4$IjY{h3H%u#HAgUMm0Y`=ri4WCCoP$OzV7m7@0RmF;|+j2esMsI?eE@GuQveQ z)Xu`dzz%eLMt**_URE*K<(u?Q`qVCYhwk#;U|;{k20XTx;}f4cE%$XTV9dP5s3PE@ zptw=`(FD^t@r$a;p5~z|{?Fa<((Baq6H7bqfBszjC~qgD<^zsDvlu5Y7hhHK?9CkC z$!ptridKs{Iz7KCHT5)C$#vCB-&XAt*5np3C%{BfN$$9>{{`1(2vtOf+de6R8#uObFR?C0x%3Jd}87Ebj zSg&lkmuju~=XZbAi^*S;%J1B&yJEd%6nl=&(HUElo0!CA zd_I-*TE2I+txvT7jY4h@*~ZIux32wClWRLGb~pRT=>@BMq>jx#xU%+bqh^@Fq*M`(VXOG%_T~2c5Hrp^!5*bb1xGyQ=v0v6N;y=S2!A2vXg!7X2Z1Kj(n4N z&z?T%X`<2dt!}~L`HwQ?5fN@Wqte#JulZ*xFr^j)F()v>GxJhXEA%o-a=}sF3XJZ6 zr5I7ZIk4noIbSDFLFfsMlV>+R-lTa_=cMOW?gAdZZ5P`&?97?;DOgLi%Ui2BD0k{4 zp~;&scYpH!9JJDGi?_+X8qU*rxjy76qm`b~+UXZdx1UR#&$zE^OnZxxIES zH~PA{84&LLUii|+-gjHPH_(m#KnzNlKAz65e!;F_SAG&Q_mS6piJmZ74<6)gP~c&` z5W1^jTE?Ts)sq*5ykO<{>v8Aa_j9-QtMXh5wC;MtwWN7IEk+k?il>y%{T)^P z=Y>L z+ab(b(zq9B9y}8Q4FhFDJceOLDZ;R~jq8{gkRupq94LbE7>6112;-JChA}fB;sIzF YC>}5jV`T#c2@4Qf0z>E#PzwVC0E;{6@Bjb+ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/028/i18nltr28.wgt b/tests/w3c_tests/test-cases/i18n-ltr/028/i18nltr28.wgt deleted file mode 100644 index b4aed7510c87cc34e3792c6dca287aa68ea29649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1257 zcmWIWW@Zs#U|`^2I1!U<`&07-Uj>ji4~V&dI5|HrEi+xOA~(mj*OBj#f`IGyIY~y< zGgnAoVkkFkn6ku&w`bw;=@F0b|22;$zghp_DtiEm`$QSM7&kC7FtoEUFt7vNmyw^Jt(R5Y8+_33umO+l<@Fni7G7Sa zWTCiF)tBx2Kz!?yhmUb??e|rPRhlZiQ@=F7^S0JE1? zpFXvGGn-SQdWqF0*4}49TG zJ(1RG8VQY->vgvMySU@l;VoZVWVbh55wv)_ICri5qr@9I7x%jD;n{U+MdBXGIk&FM z%~*6IFxYFi{ILWco#vlfrz}(LJk$^QSzE{L>6PCVxM<^wi3!^p=j^Uw)$Chz+BR!$ zuiW$9vg)2}ovnU7peM-3;_fDv?`07O+Fef@zuGzD-8s9n8^pt+%d1Xq;yHS$ zg2i;s#r~3JA;yVU8T&(5hzGj;7AU4aG&+BeKESW5@<05~?>QyXm3s*rF z1q*U-ZfM)~VP<*3%7{58!X6vM{mwG(5l%OWvX&~uVKYM|KrZj1K@28KTn zgHpPWr?abHuq*4qgS-t2JggT&cQs7Qc+|Lh@`8{TtQ>zm?%ex+?$*9_n$1p~CD)tQ zU2nLSG|#8S=z>l0l=8X1qpBaB-PxR8QIX}tl-!ZHaiPFJ#sF_dCJ|=bc^_yg7;I|< zQHYWNT_1X$gy>>m*w(lJ$b{xlbWP}Sj?h%fgp>l%wV{U!LR%LzJd6UoS=m4mEI@b@ LNdE##F)#oCo!h))uC#xP;HGJ~Ip#S=&BHPU75BIKJlDRi?ew&92 zn#nk>=A2Aa7ye=r`^84-NQ~^e-5#+PUH|ISUYwnmQ$M$l3;!~&PzODsKzSa#aOq?nz zWzI62j=fgem7?-;8Q0hS!sfA_Kc#k>e5|gk^Sh&KuD~kO7;l{L=}XMib8})hWN!L8 z!7*>ElE;fZQHzTr8{h46xfOS{Tq(8jkeg!SLRZ->zgW0f3%cD--1)ooTA+tsWSCa@ zrRnjRe`k3aek{ug-Nm`)VpQCN7kfK1rSo!kwNLuqQuAeHPk`A=t52U=zM0J_QN6@! z6K7|;kzvyNGrM*j$vOD>`k@zIoR37<0!x>i%U7G~RBT$|5o=U_U^1(U6C1l%P-;d=~eF!&fN94O;~qlONsi_ z3%hgFTkHP^^4CtPQ?Z-;kNZs8=GxvFc0PI5UzE3RWBqFC{<@)esl?_opMV2Q#c`22 ze-{^SZO?qoX`RQoQn}!k`|YUvM-Feexv09gLb7CP;Nc2mi>>Qz4O}NSFPl{yQd3CB$fD=jTM z*;+5&<1hIUZ1a{GHBx`&{hR#`7@6k4h~)&*nRzLx6?z#Zxu$)A+06zbt@r{H1XVq~%h|MzQ^Sav)OC}5KxX7QedKHV?!WF9@$<8uQDBb#P!GheI8``#gm|0%1 zGGdO2u*U{*zq5>cgwsu;tY!Dr#!SmI^qgdm8YuR@+v2@}f#DCtpp@?8>Fnwk?8L59@`{T@BMR9yP9>yddNSE5~1tJNLeyyR~nfX0uag$@Qjn*Bh=S>t7x?od0 zrF`!1sOm>&cQ&V2RAl)uC3hrlTqy95F~FOVNrV}9o(EbA2HP4z6ruz`*N2`bA-WhC ywl&TGGNCyXT@!koBQ)hQA*BFxZRnwb(ALBZ52FBYRyL3X3lQD}(w~4*3=9CS(ej-D diff --git a/tests/w3c_tests/test-cases/i18n-ltr/030/i18nltr30.wgt b/tests/w3c_tests/test-cases/i18n-ltr/030/i18nltr30.wgt deleted file mode 100644 index 1fccf4721b86dd31dfe05d22052621a8cbc2b258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 zcmWIWW@Zs#U|`^2XjxEcE0X>=y#~lz1H@bmG7QQ2d1;yHdKI}jp&^_M%<7xp`4j_j zX$3a}Bg_ZX<6(T~bXdew;}yfgvU4+Ee@f`re7t_rL7zqQZ=IZWN@bF*$6B&-d#(Nn9;O<`>5MwK9GW*g7 zptIUp7#P@r?$5~2&(_N-20MO}-bo)LOvm>I`}!X?;IX|NpZL^ixi9Mx*34UsDgqt~ ziW{XLO)!lUzo@G0X&$=b|J)rfy-r;}v9$C4=g-BD@^&(6KH&H>i*a(g_^Og;f2R0O zUfa%7v|7~B>G@Tusi(P0uB%@9wrZcSCbx(g7bmyws|8op12h_B<9@5phJ$dyd--O<4pP1a=`}*82$i8elWsmxk#r~-+n>?>ioUXoQ`@<#L z6ZIZ^{PePubwW-0wX3RW-1GK}xrKWPEH~&_rCeHPyi#P=?VpGLicbv4V<_ia?kQXu zUljT8-P{X@@8#>gf5%^GuJNx(&hyXppT}OD{ThALd-kO=rs%k^TK;oa-kQ(JIH|hC zdS%PKRBO#Yzx%6RO#Y($apsr!1hd(1vyXg9EV{i=e&<%*73(dd*mHD_&e)pV#3VN3 z^QolQ^1Z8VeWLwu6momWHeR;7b?uj$T-#Z(yV*xhFIe3pb!_&*m9=jhHM?X?mTvi- z#&hg|(Tw$r<|IFBE>U{3WAo#qw}1GXdzpxt3Y{^VP&|FT!qLEzo$PBj8>ansDCoc$j!OHR1oF2x1{;dR9oLN6YZY=3!<#gn3IE z4*<=BXF{N1piGFzFw7`L81}YtBNGF11Otr&MKB)YFhd?;+>*vfW(Gt&01X4h1BPL& TY@i@v0YXb)2t5UAVPF6N%wgy9 diff --git a/tests/w3c_tests/test-cases/i18n-ltr/031/i18nltr31.wgt b/tests/w3c_tests/test-cases/i18n-ltr/031/i18nltr31.wgt deleted file mode 100644 index cff8b6393fd73343a99b649d96752ee7663e49ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1299 zcmWIWW@Zs#U|`^2I1!U<`(tJPj731+Yar$V;^h3iw9It9irgIAen-A$1p(LZ^OB6Z z-{~0YMd|K%&H0LTLx6&#LBrDH>!U8+-23G0AA1w&g(*zR60@GY%HhhrtXz}!TFH6t zrAxw-itV0%d(*6>H|f6Dk%djUFT6i(VdLyOKPhqHyzFX#DgbvLRu;LY z^8#Dr*ESrLo~|IVRQSqQ&!y6bX5TI?f8Q_YIO9OU>-HrqlP851?6>|?zu?J(u4%iR zzp@6P_(Vwe-`Wj~3=Hio3=Hf*pJe3cXX|AZ_XY=gA2txE+qVDFiEdeG(T}bZY&CpD zL|DG7*`=Ia%UyQT=TfiI-}ldEty^X_w=%Qne);{{=`q{yG>8;1)%iA_{OlcSRa|&( z-K4ecJVmQT9i5(Em702*t7NlKW_9rW?kTKX(ycA6Vx<>e32TTP(3Mgw{ysg*U2$hh zGg3hRI`}@#|MYn_17_=US|-+7T?_a&@BB{+S_MXYc;`_;9v|hIxZ^d$^}? zWqeWOzjt#lJieE|{=Ix(rMbqxB00}L*MA;+arVvLM@xM(ts8aqSMOs_fAvk;Z_5** zOLIe<-fx;K^6#&^?H5-oj~d0l;WPY}|CTbWopGn^g?nBu_p9u_YmCy~hG}nSENEbT zwrA6gU+#~y_%B}*F1y1NY15Jo>tHH#|N-|e_62az1$w{%!7H?xsH9fpmNZW zRrh4;Z1w8_JwZMecQ>(oFN-+P?t0qz)y^63&e@&aARZQ7UUhO4&(TX2ET(fV_LnpZ zF;2Y7*dMw=JRn|R3IBr~mJdp7+>+uL)pu@Z6MWOW`Psk!>65K3_qe??f5Wc1=CNaB z@vE&y!b)rMtU9g-v027^UU&Op$z*{Y7x^<*uVQgqxMKAq*;(cZrCYx(Sde>jL)*3w zGs_EBM$9o0_Shiqcb0LFaJos9wd}sym}z;2o|EiR1I6BVTf8?gF#LfSl+t}Xon8Hc zU0Dwv}$w<;r(ex73Z|`lMt}p; zc6lkgZe#U(A(pq-JP$nT>3z_9N$}LCC69O=CC(STZdYNSJZEa*{@efS7d&~;^lVq{ zN7euopGdO>>TFPRo5=53pw5VpI|E zP*B_`{b+(|ocKjmWl!_a760e%cq zCDtoj?xk95{`uWs^aJLC8O5HXb9Bbm5f1{AwL$>j<-K}fC)a2UEirvjVa(cn)9;suq53a0z+o;(kW3qJ1 z?=+rc2aIN{UolKa$mh5C-yV)@9wbeIdDKY#mG^Jg794;NGp zI!w*?DwZ*FMY z_F-mu!ODm^Cc+*Y#Qn}P?h#HmiL#d6R~s`e&(L#{J!+uX`)-T(1_p*d5Q9>>kEgS% zU$86d!GpXF3OuYALU%Px%Xrkddh&vh7pxqAJ?`B5e(u)3b(+mioh8?s)?IJ7mNd_& z#pr@f@s#qpzoV)jo!!}-UQvW2D(1< zJPFaoz_6|H6p#tcq3D{>;~b%BJ`++3K-Y#IDhO>`nBid*;LXYgl3)SCn?PCxSXeMH F006Cr6>|Up diff --git a/tests/w3c_tests/test-cases/i18n-ltr/033/i18nltr33.wgt b/tests/w3c_tests/test-cases/i18n-ltr/033/i18nltr33.wgt deleted file mode 100644 index 2c24152e118adc90b36d23f0fb44d82c16890169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1527 zcmWIWW@Zs#U|`^2xD=Rd`%mM8K|heU9f-LYWEhh3^U^ZY^(u06LPIzin18EZ^!dVb z*Qd0Cn}Lz#D&!FV~>&84Oi5tI5^Z$yVL$o1bABN%73rutjie1V?y*4rjs%{!Zq{g>C= zw{PO{FE?r!0^nX+7@A|dqTV6kI?$zOSQr@CfnLhU&(GG&DhB&!F3>Mn{L>qBFzb$i zfbI2o!xuvOuO+dMu(;)JJ^UqC&$@BNGI5l&&beZ&Ao0JLBYdM6h^7~fAL@l@-=5hV^JI5nBOE!dR z+{nJjx^88I6Qj*SL8J2b8+$cf#AT(XTEDzKJ<9%gkV;%%uGaJef@`0$u8aFs8FhAT z@A-f)LKFK|P7ypc>EguY>LrsNE?GT+?L*1-+Z!1sy}Pn&-Jz26pPwIk;l_DNlV_3C zWVgL5L%7apwHK3nR&=-|fqgNt=fq_N zgDw4hd;cl&pHA=o`2I}4<8_IxJ>R>pfA}uGNMn;gY1!X4yQOzyk|j9SG%lSmb@L+a zXU$)f-egUACe8cNd-5_NGh+##FB6KVPZxNcW%i|e+6}48pAWI0n)mJ1RV%}w^Su{! zZv>f7ZHV%Idf>#Ol7ia5Q&n|tzcZTjl^u~TUUWv<{>u9|`yDWun*-AZCoo-P=B1=o z=w+1Tf>Q>|{G&e0F;lu}Uto5#fk^B9zoOf37HijjTdi$GnG88 zp6!nhVEg{EVBdSWJ=&QE^R9Cp`*1#WAYy z+|DNWrg`(TfB(}bTU+jNduRTJU31N2$H?MWTaAR3*5p}rTn}QijQPCo_QR6N0y{49 zXRKbu;PND(%o9qtep|30_vVJSZ69Wq7p#n!VL^A1_}}uAhZOA&6y9b zi#eIRYrS0n+((lqW!u`_`0?d3(4iYx7#P@rKFY|?&(_N-27BkJ>K$y}X$?8pb=yF| z_IkYGi%ondrM#*&bTo4mmvTpI9NB)UImtI?W8W07qMpb<@2^Jmg}>XD9jkP<`t!51 z6(?GyCotV>w2w~s^jAI9`tw8O-QId~Mkm&Wv2ezksE6ojUwoUj*oEQQTFWG zvT%(`zZ1u&oZ?8Gy-``;|3%7S&v0el2gm=`ooDjcXZ(7X)MjS=d0va9RXc*ETudjq z?VlOKb$0uo-;d*!7T)2Jlf9=}`{eJ5)W7xbTlA{`SN;F6$$b= zVA<}y*SdqBJ2~&KWAxv)M6Y-Y-;Jm)Q|W1JtTG!O^d4O(ZnEyPL9FeQN7oF|BsC&c9 zd~3tzX{Q<|rapb}?c3)M^FOd7(!`6-NZVg||7O1frf_p$y5Iz+iOjr|)C#?fl3Z}A zV3~i^=PfX0pe1tCzQF8e1CiGIe?_<7EY`05xX_z<5nt*RkuwstJ%+1iW-57FJ=-52 z!1n!R!M^u$d$cnT=3VDH_ThrcK}S~IldZGWuLtx5`B>cD#PYo?;y}CWY2#NrXS_RS zcXoq#Saf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R z#ckn=)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsRKE(^4zABa=GcOZ_25C?1_d703!%Fjre!>8 zTs?U~$O~4EzaDq)eLr_=-#X1^r_Pe=P3x{VTuYkg(_(bNrg%#E+}}~vkIwFFPOqrQ z@?lEuNZhzk;2&dvHzSiAGp<5P0_Y|N24GAwyln)rkc%u_77+;ZmNZ@h zng=g1fQEqz3_ONmrY(eFZyTR6F(9WjpmCs-hQ~O}kVhD|q){ALpuyt-Xc#CSFbrd5 S0|f~S5LyC5XfaR=0|NjdSWYki diff --git a/tests/w3c_tests/test-cases/i18n-ltr/035/i18nltr35.wgt b/tests/w3c_tests/test-cases/i18n-ltr/035/i18nltr35.wgt deleted file mode 100644 index ad0a2171d9d0b5eef48b58594f8046bf9f6114cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1636 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 diff --git a/tests/w3c_tests/test-cases/i18n-ltr/038/i18nltr38.wgt b/tests/w3c_tests/test-cases/i18n-ltr/038/i18nltr38.wgt deleted file mode 100644 index a68c80cc1c227da227d85a35d9198f8359909502..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1251 zcmWIWW@Zs#U|`^2I1!U<8|{@HQUv5J0Aem6PR`Fu%S_j+$jxy*8_0E7L4f5#y}x2L z!}Lk>1+MIF+2zY}mrc~{`1%=>&fGs>bIglJ+Eli=`Nu5Ftwv|LUl^;e=sP-M0OYPISvki+*&SV5{LH zBEs@r%`WBaTJExwK9_ox{=R=UYuz%dxs{nk_sj3sPLJ7sr$MBEsm{0Yn5#j=P6n(>ge?Rs?^leTqT=@GOL5{cTZvEl5TBj6)U~)N?1eWfUcBc@%QOb?ut88 zB3It=jIUezHCpTFk=q+XU#e|z%dTu(+^@DQcgNP3a$a^qpDr#pa=N+X^@-EMw{90) zn(86`q2%wMGfW=)j9^nTM^k$->PZNIo$dDJNW4WHq+{I`^0?TkBRFWmETxnE`XU1OB?HcWdvV?hJ! zvpt(`{BnPs#eeylaM>NEAomAb`nPSZ>u68h?D}2mqtOek#cdzc3bNv>6S|b#eKp_K zNi-X7;CZ%Mat@GF-x2BtHMeja|F0ts+`@W*o>{yQd3CB$f zD=n?N*;+5&<1hIUZ1YwaHBx`&{hR#`7@6k4h~)&*nRzLx6?z#Zxu$)A+06zbt@r{H1XVq~%h|MzQ^Sav)OC}5KxX7QedKHV?!WF9@$<8uQDBb#P!GheI8``#g zm|0%1GGdO2u*U{*zq5>cgwsu;tY!Dr#!SmI^qgdm8YuR@+v2@}f#DCtpp@?8>Fnwk z?8L59@`{T@BMR9yP9>yddNSE5~1tJNLeyyR~nfX0uag$@Qjn*Bh=S>t7 zx?od0rF`!1sOm>&cQ&V2RAl)uC3hrlTqy95F~FOVNrV}9t_NBQ2HP4z6rv13*N2`b zA-WhCwl&TIGNCyXT@!koBQ)hRA*BFxZRnwb(AL5X52FBYRyL3X3lQD}(qDj53=9A` CPWOHQ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/039/i18nltr39.wgt b/tests/w3c_tests/test-cases/i18n-ltr/039/i18nltr39.wgt deleted file mode 100644 index 94353781128779e1732bf4009f49b2995b26983b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1501 zcmWIWW@Zs#U|`^2xD=RdYn^pXG6Be|0Ael%8HVKiytK@8y^7qN&=5`r=HKcUeFC(u z`jl31GcdAzWn^Fg>$N@O$km`AzrU{LCOZ^w*6rybvP!`rn#TMBk|h%N3H(hRTibj@fDZ;#CvaMI$N?Z&TbcK-LH z|IXg$!@g~fyBh#^V{2fhtty{A%NwB8FIX5D*nw`$$j{H#%PIytFiYU3Pc{&vIj}c4 zG5fZGz~7wzTnqV+9y@m7>*;Gcy0Rr}E*xC&m$|F7&_z^p@)MTH&-TCfD+@AT?Aa?g z>E7P*_e(BESu9iWmZ%FpcJ*oa;^y7Ij;X(tQe;0A?L1*i>24O`Rcwd$vd#MULN4Xl zZ-IH=TV_s;U0FVVwrl>h2(VnZM@Gx3(uv=!iA(AQ!@oPWwjbqG?oZ{P+m@yFYWlI8*F3s1 zWf~-#*!E8~V!N~c`Tc%(rP^KPA08A;dgpfUxzo%3y~0)ZexKjne!Tde?1|uW?n3iR z`LY+j|G&-Ych1u{t5SC4Elk-OyRIcTMdG#R6`R`{%5Rt5(&*ei?{VBGvF2BckG|G^ z>@e$vs^^MQ0nSx@rD@66N_O?1xvBeDCqiaj<|ctQ*Qx^9zA1dZ8{RNm?cUL`^oY`@ zjw4P*CeBx$*voBef&WUuqQumH95_t*Ln_y=!LrhsKXiC!3DDv7bx} z=)T6R%vrF|dB!q{4T5sw`JLT=KZ+XqUU?Vao&U)*#)@ODapAtjie^uCuh~*;wtC~k zkY_V;j%NwJVmApa(lEh59VFxI`-j$%0Wj~ z-IJ}e)vpKi1o>Fp-Nf>}EaE`B>uKXxJ7>H*XLojkcvy6K)yYjfM=w>dn9jM_U(zhZ zIPofDf9MMFfOvr={10|mJ}9wqONwJu-?^Pl@J;jPXaD}EPqwz)bM@nW*PH&-R*}ZlLdBMyMV}rQgS;jrW=_XOuvioXdrsWxWPO?V?*pI@OHuk>T;=O?Z<`2Z6+~wox z?CKZn3J$I>Lgqd%RWX8#_25C?1_d703!%Fjre!>8Ts?U~$O~4EzaDq)eLr_=-#X1^ zr_Pe=P3x{VTuYkg(_(bNrg%#E+}}~vkIwFFPOqrQ@?lEuNZhzk;2&dvHzSiAGp_PT z0_Y|N24GAwyln)rkV_|4Na=)@@sZ8LEISb9Eooc=G!I^q01X3`BzO$NOk2o?U1VZF uPH8~nKq(E6ahM^GY#bA?q=Ux;&@fOuU>L^A1_}}uAhZOAP#;hW0|Nkm4mj8V diff --git a/tests/w3c_tests/test-cases/i18n-ltr/040/i18nltr40.wgt b/tests/w3c_tests/test-cases/i18n-ltr/040/i18nltr40.wgt deleted file mode 100644 index 500d0bb48c1257a70d4a78594fcdf206576f186d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1450 zcmWIWW@Zs#U|`^2xD=RdyQ_G=ObU=!3B+6sG7QQ2d1;yHdKI}jp&^_M%)iwy`pmSx z=u=w3&A`a=m63q~tk?F8BUiJ5KVr{_wKVRX_2U9IAzSk1qBJJ3V>!@rlHP zIji5>wm!djaewdbLId^yxH|=MlWjL>T)nUrXnhL{0|PtIof-N0*?L*UU`IMcT=WSC zVl+qgPCDrK*g&A|{OsitKb=;E32vx%aIzKQ+~T32cv1S%gJYMEC~e)n?Xs3r<@c{g zG7B1VuTMYn`M>eMWAkLq6={!ZNMLnIKe`T9`nyX~H z=%x3*#ri>FIypi@VNoUvuT5}RsPOIr$IRWySF5&qYXX`aCG38y?#H}6x9pLd1vuxGep?19UVe$Hf_xWoAMEUwL> z=kIeZ&Q?7UEa7r>cGW!}t=4DXKYe@{Jh9-8$2-pTlg*OiizENeo_po;oAU18?ZI!@ zjv9ViapeD`{N8)_{;jM`4gNLvU|;yx3(dy9-+8U0ig;hfX)XMIGmh*3zsZij3~IA$ z7XDgqF#kM%`jKyiMb{U~@9foGv0gQbJxA;4l+xrTrmz{GZzUb?KV}-YEI$86F}H_o z<7K;BbH6UFkT8q>vR+WXd7W97OuqZ>cU#>9L@YU%Zu!l`7Mvidb6Vqh&rgN79@ei5 zYd-4zyW2ad*R_}BhFHH~SqhWtszHo)Z}BnRzLx6?z#Zx!`zbnST^p;xz3G%x*RiX}$kfbo z?b?qEy_pyBrCt#^BT?I9xO!%$lBd~r6112;-JCo@Zu2!~@VUP&{B5#>xf?5*8q|1cp#Fu#{t9007lnD#!o; diff --git a/tests/w3c_tests/test-cases/i18n-ltr/041/i18nltr41.wgt b/tests/w3c_tests/test-cases/i18n-ltr/041/i18nltr41.wgt deleted file mode 100644 index 3c50b756fb6b093894ad52824e2c497e3222a13c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmWIWW@Zs#U|`^2I1!UNLBOU}4nHSU(@p`%9QUf74&~ zc-`z7&9hYvUUxTL;L0#lo80MFy>a)j>uEhM6o34D3Kx zWaQ^(>tz-9PCDrK*g&A|{Osi$Y7|3Phj>&wM1N%v;!p{T>bxhwZa#0B*h<+qp1TE4 z?S9;O`2mCX_31}Gpa1jk*u1?Pd_2E3|J<4qGdKQ)(A)FH`#iqIZBm$XQN?reb?XZ= zL>sQFUU(l`tR5^E^g~5tO>a)q^#F&33hxejO?_ORSIc!%b#~PA6@NZPC(jF3O_w`< zRrTBrzB$6IK5@4#)(V|l>aJPo+mWpCbjhd4`xCdTmmY9vRlUIaXJ<{t14os2XA*;* zwu${LPV`-?`cy>B;k&18{<1A>)w_Sy{y(T9V?L?+kn1J4H_{7F)o-3$HS6!QPw)PT z>}LHbTbc54|C6bvSHF7edQHFdzUQrLB){!~++F!ME(S?YlbbT_*#y}sU*6kGF8RJh zUs(R+|4!ZMryole{@StQ^@aXB=R~hu=aMn93oSae+mP|(wF%v~9FOyhN$X!;?{C3z zyum6dqh^cs>&cZ8X5nAf3+i)6MBDalUmW}Wma<0IoR&*$_Kh1gA4^8(E}mulu6c{{ z+cn2OK8yXcT6(F8oT*Sk^fc}>+jUw!OLnSX{3){Ou>$+)Y0p%pgx4*RPuu6Zrta+X zMwRCMN#Q>WO}EVuJ}r$J%fIse&3*@rU2|Yea{}qiyp+@my^NAv)4ss$W&@Gd`+r5Z z-z?Uy{kYJZc@bag6_GO%wLONbXJ#sST0PqzAHeqgWx>Apa(lEh59VFxI`-j$%0Wj~ z-IJ}e)vpKi1o>Fp-Nf>}EaE`B>uKXxJ7>H*XLojkcvy6K)yYjfM=w>dn9jM_U(zhZ zIPofDf9MMFfOvr={10|mJ}9wqONwJu-?^Pl@J;jPXaD}EPqwz)bM@nW*PH&-R*}ZlLdBMyMV}rQgS;jrW=_XOuvioXdrsWxWPO?W06no!o@!r6|@CRa0()aOncJ&K( zWj%P1w?To2^+M>bhG`j(8dpzV5b}bRQvV545I}$f86!^y&;LXS+!i+o111$xEZH*ubQ2?OpL(ilT zT?`D{8ry(OXqH9SgdXPzO*u?RDF9s?dZ-|@H8R7)D8QSQ4J5$=gg1foN1zk~0|4S+ B_@V#+ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/042/i18nltr42.wgt b/tests/w3c_tests/test-cases/i18n-ltr/042/i18nltr42.wgt deleted file mode 100644 index fd37cc3967750f82ae35eecd9b94ea6606d2267a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcmWIWW@Zs#U|`^2@byo&<>*hBs|E6A0WlYY3`25$URq|lUPW$BXb2|*vysY0pDSh$ zeM&3185mi~QnntA9VR1;9O^Tas^EQ+Vd| zC7`=DurM&N13i$DpP#LlRSb6hQlQJRxW0F?Z})8jfwuEs*GrT{wx{??S83>IE=lzk z-xhG=&Nf?(Ye&Rhd#toeI`im%T<_Bz-|Cj`ikS8N>I=!tnkQ^a8p;KZan1Pi!87z+ zP0Xg%Pb5^D?_{}7y0G*9;-bjLce|Ws)n(?noLba+_EFnfG2b($IST?r`ZHS2+>O3j z#l6(KEbgga+hgyw@I9qtI;Eoy{+D`fjeA zn0#v5uhc7QUnbwaV6|}ZP5u2f`(uRd%-yahc)!(VWY?X_tlWL+;M1qi&wZUL@Sh2h zBu<4y+5XD=H~SqhJ(~lQ1t%~`Wag!$R_JAvCNbCK-qT6p4 zYuA2U=*_%{FZGJZ8Hw5+!__l0l{~GU?T-&&`~I?E-+Q?|+L;IQu5%sxa6#puBdhMo z*4gUU1A2mdEbeY%`Cb-rpxyPf@vEIP-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN$l_O9 zjf9of7`MmD-!;;AYJ1+8PtX{?9ws6JjN3yfb6H2#!Td*Ma=7zRyA7+*p ztc;jrBJ8n2-0v*o9^rJ8C~Mh$wK3E33_T~=BLeJ4;Y%BP-)-^UzyR|HVo)CP@pN|e z3w8wu*B2pkY{A8P@E~u40uSqj&|MAFG9ERqp1dIB1uMs2k309ipS!hhoo2IBXUX-Z zb=MoNCC&3`F}h$=Jf(c@@2KiWXLmNIS5##AFeP^+Zd@qvk1@cTkx7mjSCJ$EbQ1#u zFeVw^HiB5l1r#f!fI=&rkj=v^ArR&*X*>ut4_;mX4Fi=Icnrf#TL{D6HeO+3Ku&2u t<3K45k8zkGk1%dYBP*~xgU18VFi<>T7{CGM4%Q11^}lULi+#! diff --git a/tests/w3c_tests/test-cases/i18n-ltr/043/i18nltr43.wgt b/tests/w3c_tests/test-cases/i18n-ltr/043/i18nltr43.wgt deleted file mode 100644 index 5c9ea9cde7c10201474cd07cc17f2b5c2b66bba3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1665 zcmWIWW@Zs#U|`^2@byo&t^2(GTON?t1;ktoG7QQ2d1;yHdKI}jp&^_M%tk5~eNxuE z_bIL5W?*Fb%E-U~)@$1v$i=M4ut(=ysyc9Fg#XVe(p@z?Q6FtU4FOE!@YttdgYPgj71^6obPtZ zIh!a>*wS#hT`+BrTtz*#ox54@q)!^Ab9+Mqvu_&+)b-W3UT{tpK5nqBeWQ-_-4_uHo1MJwhrWK)p|wf< zq@mi``ulU=EXi}5)TU7K>)r0(e)}%FMJ!X1HvDr|GF;wH`t950{WW5_0-F?KGC3xt z#;rg2V+}+7;>KQc)=WO|ukJ^2xyTal?`-cx&n>#^@Hq{&MzyREBu?wlzU*WxSfFPnW8$Q92lL-b44Xn`ER} zRY%3tcB{vV*>?A<)!tY?J~Mqs&BC)@5@Ijz zZQBuKC35hQa7kIIs28WJ3L|H$ibmUt#s4dAupMf)O{?2|(fUbn@RXHAUZ!yT0AplOhdt zf83h2;r>M-sZYLPRy${0o$@c{*@T?qMGrrVc7L3-?ft2v>J#3!E4y@j==ZgFVOuwY zozuH<{gK5@ZS$tjU$OL?g18Cq$Cd5rZw!B1c>1m_b$U=6e^2>j-|;9*dtPSKueq#` zS&mP9y@}CUbXOFo(QmssuKyVjiR^Q3mF=CAVmv;;)P5d_If02RGcP5zLNB8v7o5y8 zfk_O6(Q-xT#K8O}1A*i7p9atQVKiCs<5BjbX>5@y-3d&mA0;mhwes@zx;XLZ`+Y&% z+f99|_TKyd?z?~UM>F2fj}@DOuFF_9rp*f8a(vNYnM0GrLLb-{`CWKbXK`@N^jSh} z4_}^oadx%pLT`)WPE+COFF)`9(#xroKgH)D*Z#Q|GZtm8ZcjK8x!U&jwac~6)9-|6 z@qb=+MEi5y_DQ>if9zj8_koHh|F>;r{ySFad6hL)v_1*aRqsA}$aKL|8Hvc<;j1{b zw{)-JU$Iv69<%jf2L`V0$OqGl7iX+-2)yIA_aXC+c*Xm!+xQNd+&oq} zNA1JLlL_)q*;YCxtSP(W#Ji$dbHDVz<+>u-CR|Q$M>YL4`d;Tf+)*(g5kHVKW z_P*QVy@4f^KM;fRypN}|t6#7yI5NHnnPV%WSPvfLZBXE0y%4&qVOqwc#?_M-guGzo z`0H`!-uH92_N~)wcIqs--n8y|!?mP&J}pKUY>KCp&;1=${pjq@=Jbk+EFY%ij>L@% z1^zJxcr!A|G2<#TC4g>XU;w5QhPRC%7IF#73MoO+(h0J8m?av*yd{mBfabx=H=tpl z@(qt+m?;-w*xN>NW(MSR3^Wc)8b)>-X2>IqThh3Ug#i%{K*K=sfZ;Y)Hc*hT0HGx? Lgp7biHUk3yP-=`@ diff --git a/tests/w3c_tests/test-cases/i18n-ltr/044/i18nltr44.wgt b/tests/w3c_tests/test-cases/i18n-ltr/044/i18nltr44.wgt deleted file mode 100644 index 487ef8642bbee129c607ddc3139a7e908c900a27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 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 Qkp&1jfe}>(OyLX+0M|e;PXGV_ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/003/i18nrlo03.wgt b/tests/w3c_tests/test-cases/i18n-rlo/003/i18nrlo03.wgt deleted file mode 100644 index 4f85d6866cbd473ab03f9c66d459867b5979164b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1481 zcmWIWW@Zs#U|`^2@bgc$yfqcf?888ptb6ofI`EW=dqhq?z-V zPnZ;$vYI7iQOfg2QZjEO5*GKXWFJpuHoexz%@BZa^`3Iut*?IEIR> z^7FIxvWme@E&)0hgwdSb8++(YAJfRE19SJ~;Q#BwP5swA!osYWFXD zzRQ39-Clgp^uzf%>O%it*Q~!<_wn||TTgb(oxr?0_I~qK-yg?>^)@R04D?vncQmlz z|G&j@znp(f_#ynYe&WrXvQ-l=wVzz*Y+qy@oEWcdFzv#|2gy>$SS%u)PtIw4AipKo zrYG9p!pNDyS}E*j#)_|gHhi;J?z-+Vo$d7&nPayPYVP@VK*a6btVyT#8M_^85lh+X zTco#={}JcL)93oc`9JpOiDa5&s?5suJejjo)v{;OY1{0%eG4ski>Blh#%)UR(_jzI z+Ialu$7J96ch6ou`{;Ml&N=q2f46`5zn>A23{Hha+5XD=H~Sqh;hF=J0w*vTWag!$ zR_JAvCNbCK-qT6p4YuA2U=*_%{FZGJZ8Hw5+!__l0 zl{~GU?T-&&`~I?E-+Q?|+L;IQu5%sxa6#puBdhMo*4gUU1A2mdEbeY%`Cb-rpxyPf z@vEIP-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN$l_O9jf9of7`MmD-!;;AY zJ1+8PtX{?9ws6JjN3yfb6H2#!Td*Ma=7zRyA7+*ptc;jrBJ8n2-0v*o9^rJ8C~Mh$ zwK3E33_T~=BLZx9$x9o1-)-^UzyR|HVo<*E@pN|e3w8wum!gC@w%}qtc#yY2frs@% z=&puo8IKxQPhJr6f|cX1$DMoM&)wR$PP5smv*dcyy6X+slIHoe7+tU_o>D&dcU1MG zvpbv9D=M;ln36jZH!c+T2aG&MCOKwYWsd~VO$-dcm}Gd{2x1|ZM68gK2rWyan1@j+ zAk16RxD99?yo>-EhNXN!HViXuAq;!lxR;3mIi&%O1En-PZo>?DgmFt6-!U^F;sIzF ZC>}5jV`T#c2@4Qf0z;?@SnM${005>HDcJx3 diff --git a/tests/w3c_tests/test-cases/i18n-rlo/004/i18nrlo04.wgt b/tests/w3c_tests/test-cases/i18n-rlo/004/i18nrlo04.wgt deleted file mode 100644 index a2b8a6f1591c85b2e866267b05b617891c1626cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1472 zcmWIWW@Zs#U|`^2@bgc$J?Ha!UM`T=3B+6sG7QQ2d1;yHdKI}jp&^_M%*HAgedIM? z`jl31GcdAzWn^Fg>)ot*-pA8lH}Hhd#?VtHTTW=7I%#gOF(_!oiL)oQw}qb4(A3;; z>AJqY{&j8hYp3%C zvYMCOnHGPjpPyklZ%^6Tl8r~ct9}i5Hc@&4(>=$C;)G9s-BYt_|2E!DJFX!4Busl! zi{4+ksoGj4r=>D~uiPnY*)3+)$tkTnDKL+j<#XL7K^gnj?!W&(R3*-QQuU$RYkY5PkGb|gP5rCU z@9RhJ{#7k&ex&MP@J&)H^d@#z-7t;OY%`xT2+w@;YAMCez@oFyFp z>y13>eb!6W2mGCHF#r7d@+IF2i>@b1?A*I{#d^~y_8hIFQ%aMYn9L%I@;5$qe>_X! zvYCY69i|}n2PGY4<$E>c+Rujlz3(yI@p-S*@!JcD#PYo?;y}CWY2#NrXS_RScXoq# zSaf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R#ckn= z)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsRKE(^4lYFrb8NxIdhj4`g8~ohh0t9M(=r}4uAaOg z;10o)PhJoS%!!TAhP>`?y Op(QYc3V}r)0|Nj6PA&WZ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/005/i18nrlo05.wgt b/tests/w3c_tests/test-cases/i18n-rlo/005/i18nrlo05.wgt deleted file mode 100644 index 763cc38a9544d9e682f920d98435932b077fe674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmWIWW@Zs#U|`^2I1!UGG#T(l(0?3g}i)aJR2^ypSn?a)1i0sV&@%*45L5%*=n#WsL7($F+_Id=h>c1FWfmN|89RrOA+&qVhi6{Cw@;l z{i*zYi`=)m;>z;+6T2NhPXFxjX#Y8LxBPYYwc>6~*(QAB)23I|1q2y%lIeX=KFhMZLVYO*^5>Q$(qO3$O?;WI4~z% zEc$;&%-h6URfqbb9bR$F`F3&JHS>=KIon>uDaWzJrd~0)$K&@lo8Kq!$pX!#cg>Rx z*rpw<5q&CSEWboJ@%UU>{d>picLgrmxME_$w#GTTYgje=7M-@unA>Z3o4;s6PDY%c z-y+AvE#H}C|B3kjMvK*7dH-g=1IDH~FlIS{bY@;kYK2}#Nv>&MV0N>CNbCK-qT6p4 zYuA2U=*_%{FZGJZ8Hw5+!__l0l{~GU?T-&&`~I?E-+Q?|+L;IQu5%sxa6#puBdhMo z*4gUU1A2mdEbeY%`Cb-rpxyPf@vEIP-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN$l_O9 zjf9of7`MmD-!;;AYJ1+8PtX{?9ws6JjN3yfb6H2#!Td*Ma=7zRyA7+*p ztc;jrBJ8n2-0v*o9^rJ8C~Mh$wK3E33_T~=qb7BG-)-^Uz`*baVo*}|@pN|e3wC8a zc#yY2frs@%=&puo8IKxQPhJr6f|cX1$DMoM&)wR$PP5smv*dcyy6X+slIHoe7+tU_ zo>D&dcU1MGvpbv9D=M;ln36jZH!c+T#~9$v$RxsyJIezt1%qvkAPP|cpzA}=ln`AE z4BHx~0h!P&imnMg&Jmh&n2=Hcx;FGsL1=4ahKEsrH!B-Rf&~a~0_l%HDFy}rD`fCt diff --git a/tests/w3c_tests/test-cases/i18n-rlo/006/i18nrlo06.wgt b/tests/w3c_tests/test-cases/i18n-rlo/006/i18nrlo06.wgt deleted file mode 100644 index 3f46bb2f8d62433750758c474f394e60623df377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1473 zcmWIWW@Zs#U|`^2@bgc$oy7P>IS0t=17a=)8HVKiytK@8y^7qN&=5`rW@D9$J`sLz zeM&3185mie}Gt7R}bi}50${D3-)diAXWe5Ar zekmyKPAHKS4`0#KYZswCo%f21wH`wN+`R@8;-|+we`nWY)d}2#9gD(|AKqGm*CRJ>y-8TGx85}MKjtRc$~9w0i(*Vf%8!n1$xL(BEJ!%#@LGP$TH79Xe+vU= z25Y6TpE=dn)jt~KEPGR@94EEra?y-@w!q)FnS*CoW_oG;J}Dt7IBW7#wN;jj?K%aM z(&x(R-+Q*dDsaig6%!M-DY9-p+O}kZYk&16D_O@nnI{T2AM9~Sc2d3FB%l84#~Z!# z`p>%~cgO2HRT%Rto)y~v4=E9x4vDh;mG^JcD#PYo?;y}CWY2#NrXS_RScXoq# zSaf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R#ckn= z)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsRdmy)i2l;99)VL=GcOZ_25C?1_d703!%Fjre!>8Ts?U~ z$O~4EzaDq)eLr_=-#X1^r_Pe=P3x{VTuYkg(_(bNrg%#E+}}~vkIwFFPOqrQ@?lEu zNZhzk;2&dvHzSiAGp;g60_Y|N24GAwyln)rkV_y|NC|{i`XHN!StcONThh1zXdb+T z02&4=A@CT6nYIvyy=~me#DJXAfX0DR8Xn^?Lmpw=lE!Du42XCD8U~6748vI2KtaL+ OgqFY%DgqXI3=9Bz9VEH{ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/007/i18nrlo07.wgt b/tests/w3c_tests/test-cases/i18n-rlo/007/i18nrlo07.wgt deleted file mode 100644 index 5b5653b95861b5ac32426482073fa8aa3a80b037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmWIWW@Zs#U|`^2@bgc$eX4oNq8`ZG4#ZpxG7QQ2d1;yHdKI}jp&^_M%*HAgear*j z`jl31GcdAzWn^Fg>y7Qb$aTno$MybiQC0a38g?4Wyd1yu-f*|+8gE#-Sog~L@?DBa z_a+tl>xF)F)(G3fd~?1@Z((`PLA&LFo15J=i@PJTb6+j&%yc-rLre0;jZ}}{njfyK z{&}PQN%8*VGp>t1^?tgu`s*Ya9nS~ve16y!e)reA-Yf90&R|RE=1Rr@xEJMFTi z0W3n=id)SeJUDjwiqh6@`zTk9|FyP-Qgd3DzV5dDe9vb8#`NjmK|Dm#Fm`(-td|0!;jVbo@?@o%xZ0#`l$56D{ceP1GX7@T)*c= zxjXJmd7F~hy1#Dmm29maH*OoQ+myVCH93OwX0`C;vNJQjaHziL{Pn_Hb5Y5i(kD*^ z-{wXnY9C;)n4>FZ((uCCeA_yO_>GUYUODC2Hz$bsMBkO4XIrN%ct35w{68Vi>%0%n zJygk5dY`Sfs=nI&%a-rAZ~i^3`CjTr`8nmz|E2pbXPMU*uQAe;JDzf0>-zVE(!1{z z52;>LvE?{1 zJ`IyaMb1cO{B7R0wf*A@PWCj81otCa^K;+-Qju#rJLPWv5%1>GD8A2U6|(B96S$1k zeLYj{C6$$(iZ|VHF-^asZs_!8&F05PZ~qC`?=q1x6*^N~fy3BGCG{OsTV^vTwid)(fczhT#0^Vl)6_|;Y;VWl;B zRvp)a*eqi{ue<%QWU|1Hi~Jd@SFyM)T(SC*>@4$y(yiYXEXcjNp>5lTndJp5Bj%V0 zdu$N*JIlC7INc=5T6SM;%(Og1&q?-(0NY*i(#GC*Tf8?g!2E$2lyiJMon8HcUBSVn zC}EB*xL6M!NCN041_oeEGQ4dB zv5*TUR!G5wRwyBxhgmKl%v;iU7-$~6lmHqADkbn3hMBeyhP`b(!^D7`(tyT+QW_rP nFhd?;+>*w>%nXQl02&602Mohl*+4p5b6XLd<+Z#3&b?R diff --git a/tests/w3c_tests/test-cases/i18n-rlo/008/i18nrlo08.wgt b/tests/w3c_tests/test-cases/i18n-rlo/008/i18nrlo08.wgt deleted file mode 100644 index 7ce7b9b167027244a48470a5109ad8482b6a9634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmWIWW@Zs#U|`^2@bgc$4eUJNUk&7~1!67+8HVKiytK@8y^7qN&=5`rW@D9$K2m{i zeM&3185miAJqY{&j8hYp3lxs|w$BJ$ySA{~= zC1uA`A0E4WMQLld{92_c^~Z&mAAA_PXJh)gnU9UXy_uobG}->hdd`K9-tW9J)yj6c z_{nq5QZoXD6xVTWXUzO8^kxl{P29C|o289Tn*%n4?BR>5Wn9LzgZZp$VtvqS4UOq* z=IE^XaDDyMDnC~FYU^X6Wj@@nU> z{$Sw0{BsVQK<)Em*F>LqhuKVzvOGC4IE&%tM63NfCkTCc`{@2(_K5{|8Q#gnsrWvr zJ?ipxZ@Ei<_5PXn?#h2&*ZBX5&7>b|Kd%kDeX~1xs^>=wHS4gQ``A~%F5?%}+o<$1 z&STxTpK%5M|3~ugoxD%QZqYyCnLcXm)=9rM?09>j|IV=~H?A}FsFtYw=-8IbG)HG) z!a0Z6@>|y0_PG1sFm`6JRto!>Q+-|iqe0HHH+9N!Qfn?3&B$j9{C%4_c!p(`m)7r- z5|V*k}gmP~N%ufAd>>sTl8MB(Ox zJt`OH1U!2am1%$R%ftQF*0!_HE`M8R%Kz}IPK$~6By&U>I2{sY`z!C??03NAYYt2Y zoWL}YnU|7Up_fsT3r+>KlaKkxYraHJ!KQtI+06zbt@r{H1XVq~%h|MzQ z^Sav)OC}5KxX7QedKHV?!WF9@$<8uQDBb#P!GheI8``#gm|0%1GGdO2u*U{*zq5>c zgwsu;tY!Dr#!SmI^qgdm2(aBHFKz67x5aw{1I!ZcWd7|&1R?0lIuXy5=a8*CI$vzOftM}1hJ6IBUVUx zgjNAk16RxF2X9ynp~21}Y%%7>1d)5Qe>NJj}#^oYH{Cfl?YC<1j-WVce3& gFU$;xcmNs(iU$nCSlK{9!UBYrzz}KxmU#>e0PK}1_y7O^ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/009/i18nrlo09.wgt b/tests/w3c_tests/test-cases/i18n-rlo/009/i18nrlo09.wgt deleted file mode 100644 index 70df3e0db1ffdce654347acb29263f561a8d62a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1261 zcmWIWW@Zs#U|`^2I2n^{`_}E(xf&pEJrHvNadLiMT4uUlMQ+Y!&GSB<{+4_FHotaS-|PB$?Q88BnqiwB2Qe_s z-gD$mi1m&*=~@GMrKyu=&Y2ZHCrdmbIA+3(4k-@ zr*6DBTvB|~VeOX3Obh`iZcH_p|8)Z+14BCt0|PtIjT!m**?L*Uy}`czhYfgaFUKc7 zbz1Jrnzta6eS(8RW6P1e4(DqXu`bhlRPKf>{8#>HnYL!U@^rPj^XJcZ?taR)q(S*Z zHk;49x!S?6E_0jtZj&=Qu{Ml_b8dKch@SR^*y$d(SO4-`q7!gKLq%uHisrES4htFb zE^^G=z5j|8*GbjWUQhjgebQbVAFQc%uWzlFd8296X>OUl=7zb4*ZO`B_%v@qzui>9 zQ);p9aq}+RYn!~zWmm)T)63Px96rsB44*zjx8h%vM69OcoI?t$`mX#uyCf(h?>YbX zco(OgjCU;OsQEsrJ(>D*cexXP_5PiEcH2L>yWq#^N|lfC&!rceU(XlS&-J>^nNu10 z)z%_-`~8ANs?#UDTOw37{q2$u@9keL^uN@9B>hr-jf{jpUiEqdva~tf_=|2 zWH)RSNxs&{$rX`sPP=<;y~(<72D!G0$8{A-S^R!yM8BS0Az>C>vR+WXd7V*~L_XW{ zZ(G@yX%tfG@7T%UOUWBa=r7bC8C7~FO^7rU=X#Qow^ zxh?08&3Mah>0xG~udaS^fx)fcjePZ8%WKgh^;h1%+3$dnX%387P9U9`my%kcmr;^y z+83DJY#`El|F7uwo5k9-9~XKvFXBtRB63Eew#RVw%uFRut7rS;1K7U5EZFy6ZjW~6 z!My8S$39$8Iq1l$d$M)5`t^XGARmjnn^?Y=MI2~%J#GAI=Ztsf?9Ofw4~s6ZI=PAG z=%or4(>WLWOPYlkCthXj4_zT15HGNV|G^H+2PHOcNpXzoJGZk5zG>e4?BDeyZx|avcQgu{28lPvA8WKCp&;1=${pjq@=Jbk+EFY%ij>L@%1^zJxcr!AIFyqeuKuf`3 zTO)`4*VLXUHVrb;HH6o9S`Jya0d`k3Ki6yVLu29jU_ N!ka+)A5e;c0RUSb`Q!iq diff --git a/tests/w3c_tests/test-cases/i18n-rlo/010/i18nrlo10.wgt b/tests/w3c_tests/test-cases/i18n-rlo/010/i18nrlo10.wgt deleted file mode 100644 index 5077224894f94aee72572738b1a067ee849241a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1477 zcmWIWW@Zs#U|`^2@bgc$)%?RYzX-^i0mNJkG7QQ2d1;yHdKI}jp&^_M%*HAgeIAs* z^(n33W?*Fb%E-U~*1K8rypN~9Zr}-@jiIMZww%yDb<*5qLr~C)6K79qZwo!8p{cpy z(sg}({p;H1*G}tuT|cjVtvy3CY}4Z)2Bz72j@$`popMGgT6IC1s`czgO-F20_I0oB zwevWkC*i5KoI~TW1kY5?4HwxZla8k{o8Io@W(a`0`qr8X+gsgJBn|-`vzmp0fgR}T zjQsp;y{uxelWzl^dk53Wy+Nn_4jTyAOkTgCMlp0XhlS!oIWCb#7NMYOX1=^VzPdrX ze_YgZ`dPlGP)a85X#1MI#@6#n%TAjJ&XEz^f2^hJa`8&<(kdtYNo(6p3>K?6#XQa9 zy_Cj!Ba?H--Zk$kyqH`0oDMpD)XFGjox$}$%tUu4y<}EqmGQ%#0F#)%TpgUU+FPD!EejoQOp41MC%Z&ZL<%ys$Rj zrllCY;m_6!r#$=SI5D4?cIDUEmMIJJpYwl@cR5sQyQ8#X;+2WtRfV6vzb9z>=5Jb2 zdHspqZ2zWz_IR}aoOx94vi!cOYDeF8^-#(YVzw+npJk2vQCaP2aruFb}o;^_`dQ~QP z{t@A%<7;L0?>(un3S4q=#l(bdYL=USb}cdJko&%%)T$-N{)FSEW0jr9TD-Qg*`NDz zbMD+ZzK6eC9a$YIyiQ#)&bF=LogGpVI2{sY`z!C??03LKYYt2XoWLZInU|7Up_fsT z3r+;JlaKjq!%PIGeSz7{1|qHZ|B7zES*%_AaiKT!BEHlsB4;FOdkk04%vAEUdbU44 zfbILsf_?Ah_Go7w%)8EY?860>gO04aCtGK$Uk~UB^0BzPiRF7)#DR9#)5foM&Ukmu z?(7Efu;}utlbd*sUaDX*opZ6jq*;h@;#J1}&=ukV@d8WuAMCJvP-5ej6vwE(b32>h zo94~W{{2s%Y;C#6?Vb4>cFi@99V3fhZ8Z{BT9aqhaXpC5GUoHT+Yd`73+%YapRsxs zi`&8#s~^eEGEXSo`fb62+?yNPwtbjcUa&G^j)}0x264Z$jC+LBO`@!2_tnNs%QN(x zWRJ)*yGvf$*!yma_XY--KM;fRjE|?Yt6#7yIJlG~%zflFU!rGo)`JIm8x(k0FNE%D zn3nOVarNW{Aum`t{(9WG_x;?hed{!vojOadH?6zga4l(`Pm9q7o8l?ubALxwKRUa! zIlZDH%ZDksBXQ$Gfq#qv-i%Cg%(%)O380%87=SU!@U{`eLN0|^A*B#n350AOW{H3> zZ%N}epn34}0caSge86KEX4*m+_O@{+69aNe0~!ZPX?Tpo40(icOB!D>Ga%vtXc#CS XFbrd50|f~S5LyC5s0>)-F)#oC2zn~) diff --git a/tests/w3c_tests/test-cases/i18n-rlo/011/i18nrlo11.wgt b/tests/w3c_tests/test-cases/i18n-rlo/011/i18nrlo11.wgt deleted file mode 100644 index 05ef4e8c84eb0190b21db1ee91c6656c269e9a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1498 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 diff --git a/tests/w3c_tests/test-cases/i18n-rlo/013/i18nrlo13.wgt b/tests/w3c_tests/test-cases/i18n-rlo/013/i18nrlo13.wgt deleted file mode 100644 index a275971d7891e33211b745b331b09a4331752398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1263 zcmWIWW@Zs#U|`^2I2n^{`{{M@?>ZoFClGT1adLiMT4uUlMQ)Do*@Ik%6?oVl?Dkiz zY-qc5TEo!b#=B-a$C;Nn&2+VP9G@SZYO>v4zTWBR?W3u0*D~IZS7}=-?{?w6sfW>r zQ754@QdLK3rsN1&x z(TQ$ZY0;0a6KpknL_}D=tJ$TTUCUi|(&tjI(%<*bX02OhHMcUe=zjVA+UYUd?=*-M zFxB}sp8V{c>Q!5JaNVS}?L0-RMID`Ka~9abB4)dpYiKgLYrC7-{)Gat=bVR;c|7N)&7|wTxak8 z`S@_QhlY8Bb$hs{aAkZ^Pk;4I+HcDfp-Xc^oZfGmEAsEJyX_ZOD~}q*zu`0dmj9MAtetVE?1g(?F88bK zzH5xq-iB#!XDn!7eYR)QjbHAMv-mGx6E3^M6y*M3OaHd5bsg=An_a(4eKdNZwYcqL zT0vHPbwZbtyRYWkI*De(4Lr|QYdoLwQ(-QL_1iZUAI<7sxOE;|jwQD~v^k!bfmwH9yj6`jZ;p&;0N}g8F_QwaXeScZ7@4eg} z?aYID*SU^;xS(>-kyZC(>umMw0X;!J7I!zXd@qYQ(C&KL_|?uC@6Oqs-5?$oU0!u^ z6VK606)dK6F7}r+3o%Z-%Ge*eLOdW|UQXPRz}P*5%$<1?st}Pk8rw4l(p=>+L&p1hMtq`Q3J)^cU!zS zFfjaq7?jd|Je^(rf?Zh;9^`FM;9~r%5QQiY(Dk9`Nr)~6hHZ_@fJ|r(Mc0HL=Lk*JOh_pJT^o9+Ahbn+a diff --git a/tests/w3c_tests/test-cases/i18n-rlo/014/i18nrlo14.wgt b/tests/w3c_tests/test-cases/i18n-rlo/014/i18nrlo14.wgt deleted file mode 100644 index 06df15ac569fb0ecf2669786369802aea77a111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1455 zcmWIWW@Zs#U|`^2@bgc$675^>H%ZQ zBP47VWwP2a5!meQlQGaL%Wt8OFDdd`KgTcER|Z# zE2@IeM|&*2P!s=u$N$wHd-7Diw``A`y&-?+n*V40UZsA^@812}`wiRC=qH|?|5fcJ zY9s!A+Oy3vH@)D=R{5%eWiR)Abn(tpwD(l~veLp+@ZbNG3IArqnc4;Yoo_Jz{Q2@F z-wKPaCra$xyLQET(FNtBn1jE5rlh1(xtX*kSpg#KtWtj!}K*b~eE`&6}V7`=379+H#NEJM%Z}nrj|A zMi#%?Y9y?*CeNzldJvms%;$BtAC^oO*m03RWA!Q)w}mTKKa!ngo>02=+kyqTH#f9x z`!KV-U}eM{6Jd`H;(lit_Xww(L|M!3tBskKXXrV}9uZ)>OJ3U8`)-T(1_qcv5QDOe zkEgS%U$84UxRfN!edIM?qGxEol94I!mrMt-IcEEoq)li_ry};wj~Ge@9h6I=izuy`mz^hbg%uapOXPe~ba%j7)OO zxJnoapqm&NfHBGNwh_caE^k;Ngc#Ojgd4zFG8m}-jAmRaN7$_bv3}a;j1qllfS^`5T0a)TOFaQ8v CWGM*% diff --git a/tests/w3c_tests/test-cases/i18n-rlo/015/i18nrlo15.wgt b/tests/w3c_tests/test-cases/i18n-rlo/015/i18nrlo15.wgt deleted file mode 100644 index d4116787c082e1efd61b29a6a13f63811728d568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1470 zcmWIWW@Zs#U|`^2@bgc$-K)A!A_K@P2VyP;8HVKiytK@8y^7qN&=5`rW)qc*J_jq_ z`jl31GcdAzWn^Fg>(xE&$km`A;Bay8a*1aQyn>D`T#j#>0=>(>RqLn2bI4yIuo`D zY(7+HuuMA8zj>z0UU%-F!Mb??aJL4nt*|xx5^j4G=!6+83=Hf*w`Sz$XX|AZgB`jD z=tvMob7=1*-|pK60&VBNu9ql@Y-hO~t06K?=91Y`?%SIt+_@zulKrTobV-OjXWGa5 z^~Z{0cJ96#BJTZppK+DjJY{nQ);*0Io*j7dwK_Gc_HWifEN z_CdL|PeuLa-MUit;M%iv&FWJf$sVaoHbveK)bM}R@NmiMiE<|1Nb;>Q(J^xgqBD?v(5k3s1T4N>;Oz3gw>)C#?fl3Z{)sGEGu zM_%(KdO9%e3(Rgd5NW;tS9JT$V(r?G3%!{a@ugl7IU`ZqW4L-|rjn=Cv;FY_Y~NoN z?0YY_M?3Ri-gT~HA1%|eV5uQK+Bt`HB17g)moV29;{5*xRqI7aoI+t~!)G;e

p^UmF`w7nepoVDV8=!NjMb}H+!n4_ z{YZ9}c|z&dZwnUW-rUf(?ZeFSf|U_-OoTl)i2I#o+#{TB5@jvBuQp~{o}uR?dqjZk zE_rEV@4GGD8yH~zKn%(@KAz65e!;Hb;8Kz>#}-_y2M_W#DDbde2;J2%E#pz+>d6a2 zUa)ff^|*8I`?*{D)@e37b(UOjT6ewSTGBk97NZL`#Z$`X{*J1CbarQRdPPN+4^whS z;>Lvn{}=P*?iXXHbjcgufp@1-NN#h!zdGI0v zXc(5_0ogFjw1qJ2ZQ~{;2IQ0mG!B%~@VE^#)ot*-pA8lH}Hhd#?VtHTTW=7I%#gQIVfnwiL)oQw}qb4(A3;; z>AJqY{&j8hYp3($UTXG}9Q5|GITHq5s+^F7@-dS=I&FpEpmjO+R9|#3<oT2Qdo8G%4e}4O_TfA?!W)9CA41pr0v7pYie(z^r!i(&88-u+GXg-D6O+|`;Cu_ z3wCNbCK-qT6p4YuA2U=*_%{FZGJZ8Hw5+!__l0 zl{~GU?T-&&`~I?E-+Q?|+L;IQu5%sxa6#puBdhMo*4gUU1A2mdEbeY%`Cb-rpxyPf z@vEIP-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN$l_O9jf9of7`MmD-!;;AY zJ1+8PtX{?9ws6JjN3yfb6H2#!Td*Ma=7zRyA7+*ptc;jrBJ8n2-0v*o9^rJ8C~Mh$ zwK3E33_T~=BLZws$x9o1-)-^UzyR|HVoD&dcU1MG zvpbv9D=M;ln36jZH!c+T2aG&MCOKwYC65HqO$-dcm}Gd{2x1|ZL#&W;2rWk=n}=B_ zAk16RxD{v~yodlAhNXBwHViXuAq;!lxSNRqIi&%O1En-PZo>?DgmFt6-!L;E;sIzF ZC>}5jV`T#c2@4Qf0z;?*Sn4q_0056TG3EdO diff --git a/tests/w3c_tests/test-cases/i18n-rlo/017/i18nrlo17.wgt b/tests/w3c_tests/test-cases/i18n-rlo/017/i18nrlo17.wgt deleted file mode 100644 index 839674ee2b984d1dfcca2a9f25c97969603829d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1471 zcmWIWW@Zs#U|`^2@bgc$*@Yzk$16|m`X5ChZfBbO%i{86$Nzy2WMID>Sp zhPcx7=`&_$v2Q=h2qyt zO~s_+>_XkDRZj#VMA9KmXLYXUVIV%eGCteY@*d)Z)?u%Yu9&&DAs#npMAxS=X7Y<21@`et1Mz zp_Ik1J)``3_oKoaIamMpmPnS|TT!@2cJ8kIwoQvpxN0oD%WW`&NjqV$chR~Cj!T_e zR?Df2ynnQQug1-YOCBw`3!kjJk@%js+*cyw+l%~r z_jUH`gs(p8y#2qA%zj2h5;z?aW&11d-|Tn5<00$ z=<=$Qn|O|1s$emlbFsgqS%`7sRmT3%72*N$0!#QG?67=LV&j$+$Edz@JDcE}=FQLk z{ZF54ZMnzoo%tJf%{7l5Ba2^cH4;`@lV{a&J&4UR=JUGS4@)Ks?6}CEv3eDY+rkyA zAIZ)#Pbl5`ZNY-vn;Y7;eVAEZurgwfiLl28alf;SdxXFW40vT*?yW*n*4o;6dI71s>K5p}QKUWjtzJJ$XUM z3s#Q59(V42KX+^2I?ZOM&XVg*>#jFkOPc4?Vsyc#cuM))-%-_%&hBhZuc*lKVM^{u z+_+HSA29M5ndF#pl{gYWH!&~(W0K)*BZ!4u{;)#IAGERu**we=0b$;f#tlI8;N=6* zFi`n`$1u#ag)r=G<7OrX6112;-JCK4E4+!~@VUP&{B5#>xf?5*8q| N1cp!nu*hRz001#lC(r-@ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/018/i18nrlo18.wgt b/tests/w3c_tests/test-cases/i18n-rlo/018/i18nrlo18.wgt deleted file mode 100644 index bc9cda491da3a47629d664506a85c9bfecd09870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1246 zcmWIWW@Zs#U|`^2I2n^{yCRC0Jr~I924XHCPR`Fu%S_j+$j#ZTdEUp#ijyJudl*zN%Nx+coKvX;J2*?|=Tx*-@S6z-7U_f7yX2Pp29!-M1&{`pJ9F zY&)-ZDJ=Y))qN_Jb=Pg7%bz5b8Lp6Hz0``IN2T`3I{^rT5u- zr|<6-uDbR6Zq7c7r*{|pI9;joG5)#r;_~hJqWZaBw>jTbMt-%m2;P3bV3F$e335w> zeoc^F^5MPxtA+lT`j4bvs&9N*Qng0#a{I~L_PQtAwk_B%eeVkkoiRZMt z*Vdb?`(}`9`|yCSLMe;i?~LfzvnwRbqD$5b>Nl@5%96-uTmEe;`!bE9OH(ern{6n; zd^%xgXVJNt{Fgd6d_LDFp8weXuExcPD;@^79nQt>YZP(6_;lWubH`@LvRitXndpm) zUtC~t>vtnxeb@3@v`GDx_iy$)U}TyDBbF0LXXd4(R_JAvW$9vg)2} zovnU7peM-3;_fDv?`07O+Fef@zuGzD-8s9n8^pt+%d1Xq;yHS$g2i;s#r~3JA;yVU z8T&(5hzGj;7AU4aG&+BeKESW5@<05~?>QyXm3s*rF1q*U-ZfM)~VP<*3 z%7{58!X6vM{mwG(5l%OWvX&~uVKYD%~F-4^c+3=DrD2BmZ#PiI%ZU{}_I z2YDM5cvvrl?rNBp@u+e2>m z*w#1|$b{xlbWP}Sj?k3Fgp>l%wV{U!LR&pEJd6UoS=m4mEI@b@NWTY4F)#oCpl$j< diff --git a/tests/w3c_tests/test-cases/i18n-rlo/019/i18nrlo19.wgt b/tests/w3c_tests/test-cases/i18n-rlo/019/i18nrlo19.wgt deleted file mode 100644 index 191b68842ced0fbbca24f62e806b4397388b300a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmWIWW@Zs#U|`^2@bgc${h{vAyAa5G2*g|rG7QQ2d1;yHdKI}jp&^_M%qA)qea=+A z^(n33W?*Fb%E-U~*6Vw2BUiJ50NaDR%PsN>x*d0Ikz#Io*Hp`Rn}zp?%cLn^K4!0K z-hTJ*ANk{pgf{amaA{t(M|yeg&lLjuR-5fRsM@l2k;$=$BhiU>eR`L>A5}h|AfL7@ zwCLIPlMMmu4$gI$_c}nBDb_wtNLJ=kS>r9}GWbUKJ;PIWMzl!oRmy#HN`3+3DdS z_~U5ZmWJspJ{CN0ExySLOcF`?5_RgvPnGj^0dP+~SX*JcOsxI>1EAZ_u`n>O13j6M zpP#LlRSfpw5uoot7|n;hAqVqr8}Qhkk9T|#B<&H;@-?}c@bZ@#{6rk>bOx%qOchuHHRxGI?IbQ?~tEU>ZtVP$Pr|gD zTF$+;)tWB$Vv|tj?~OZ!4Y@_8wKVmL`CgFX(hxnsETvfdeO8pe;?9id)ptDW|MLLDNL(JL; zhLh!4vB62Z9{x;DELqD^$kn`}D(JoWRIi0Ucl|5-Ki$J3kLf#K{^GJHwWm{m=D%;5 z_x)dLWqJL%-Hsn;eV%yazt#Glb(`W%^>cl0Tgp^K^4nTmF1asoaZ+?ge-LM_Pk+#l z@BVBr_+Pp{D!=rfv-{|yl4CRMbl+KhQQp3t_3Ku**9~Wv%-ERc6L5g7I4=6lpT&i} z?U}DR-SZe%Di_>J-@SQWXM5si*Z)$FQ!iX~^Zoo*ujbo%lFgDEM6T@) zJj?povx{T*i?CNbCK- zqT6p4YuA2U=*_%{FZGJZ8Hw5+!__l0l{~GU?T-&&`~I?E-+Q?|+L;IQu5%sxa6#pu zBdhMo*4gUU1A2mdEbeY%`Cb-rpxyPf@vEIP-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN z$l_O9jf9of7`MmD-!;;AYJ1+8PtX{?9ws6JjN3yfb6H2#!Td*Ma=7zRy zA7+*ptc;jrBJ8n2-0v*o9^rJ8C~Mh$wK3E33_T~=BLZws$x9o1-)-^UzyR|HVo;9q z@pN|e3w8wum$HPpkG$qf^c=-{@E~u40uSqj&|MAFG9ERqp1dIB1uMs2k309ipS!hh zoo2IBXUX-Zb=MoNCC&3`F}h$=Jf(c@@2KiWXLmNIS5##AFeP^+Zd@qvk1@cTkx7mj zS0N?=bQ1#uFeVw^HiB5lMH(xlNJGo)$mU^|7YOr~G(H8I2QNKT7{CGVW1WU1^}w6 BTWtUU diff --git a/tests/w3c_tests/test-cases/i18n-rlo/020/i18nrlo20.wgt b/tests/w3c_tests/test-cases/i18n-rlo/020/i18nrlo20.wgt deleted file mode 100644 index ec555cbc7deb377524658b2af44f3a894e1aa6cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1533 zcmWIWW@Zs#U|`^2@bgc$&2zBrUkKzq1Y#}*8HVKiytK@8y^7qN&=5`rW)qc*J`1Ye z`jl31GcdAzWn^Fg>-9b7%hhZk!1`eCa*4EuewXL_UX&0h(O)9I!S{lLkBX;fe|&JP z#qOEMe@jSBosq(zDiw0Qz3|pOJ<&tu7mt}+v~LJ&IU;eoLVxY-j*ltpD^etLoX_s? zaQkZ|C2-1ghv11K*;k7i);)i&l98gjTxISJhMyv@k{3QX|7OvIe{ZiyO)-6A>Fpu- z<7VBKhUqLm7CgGoYuQ~ViY$2&bLz!MmD6Nci~*yv8>R4qzW}o#-|MK$iqYDe=ch1#av0gNaJxAy0j8;QO#_ThdsfIt?A7}Aj zz9!svhbhSY!ItxFo8vl=d%i2>un8OXKr3LrEGoAL5T>q)w%1R zHT_g^ZHe7dwx{C6{?f%R$$Q-v-DE3z_epn&#jDtNk*{-lZe~tcoZ|fXlCeoZTm2@ykKR-91~%W4dQ-h8TSaMn?za5 z?yHTNmS^ZW$sQ44drDr~*!yma_XY--KM;d5kB_Ibt6#7yIJlH0%&`R*>%oJ(4GKK0 z7eaS6Ov`xGxO(z}kQb~Re?9Kp`+n}$zIB?-PMsy!o7P=#xRx}}r^V=kP4SfSxxb^T zAD!LVoL*6p<-?TRk+^Z8z&~K*F*3<9<0`KtfNo-70LCQ4+eQ!zx%6U%lwN2h7qWSn zMFYaTC5=yk=D`aJpkY{wL1e=)(-y+8w~Zf}7?4vM&^S;^!{av0kVhD|q)`c2kip{t aXc#CSFbrd50|f~S5LyC5XdO@s0|NjHiA;_F diff --git a/tests/w3c_tests/test-cases/i18n-rlo/021/i18nrlo21.wgt b/tests/w3c_tests/test-cases/i18n-rlo/021/i18nrlo21.wgt deleted file mode 100644 index 8e4217bb1710706fc935863e51abb3c54af986eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 zcmWIWW@Zs#U|`^2@b^!)b;zo^un@?52*g|rG7QQ2d1;yHdKI}jp&^_M%%&2 z`jl31GcdAzWn^Fg>-Ft(+A{$;xg z%KqE`OO6Ohn#MRKBVa23<1KrqiXJMzddz%B%ZAV?$0WKd^w-Q@`SHt)iYJn9j-T1$ zb?%Ruq`)cD9oiF~TU}{!xZW?m=&s+bi5EjYGJdkWlAiEoy=9NnukFFn0oOh}S5j2` z(ET@qQJ-_h6N4>}Zvs+Jbw8b%s%Uv{^jN2M;8{#@0_cg-|!%&u105*4rAm&fL6gO4<6JgAx&Jt8>>s zYx=3;+7i2^Y){3B{iTatlJ~kTy2)1b?vw5ki&wGlB46k9+{~P?IK}z%C28ShKluJy zY@UDh%j1&5;!4i#-KiXT&p-bD%4m1o_lNKwHbhc59TH{xEAQXzcfho64onW5z@(6w zmy%kcmr;@nP7HOEk6}v;rhS3g%?2W^_y3A+zgetZ`*EQ+^CG^~DM*VD$Y zcFuTr&hG36@v!Lfs*{^|j$W!@F`aXX9;G5>n&;I>SpKNWp$L*c@8+Oe#j~ye6Uu`uKR$7y1)p0$D%`)cmy4w#+CJXGi z$e*!#6^q-#6{{b~&N5FZ-TH08g4~-M+O~a|SzfR*VvdQh#|Ck~vy6L$(@mnRW%t#_ zOv^L$oMev(ustO&ZR~xw#d`w-%pZtBdB?}o+0`%D6&zg366QXCt1wCj)`JIm8x(k0 zFNE%Dn3nOVarNW{Aum`t{(9WG_x;?hed{!vojOadH?6zga4l(`Pm9q7o8l?ubALxw zKRUa!IlZDH%ZDksBXQ$Gfq#qv-i%Cg%(#jx380%87=SU!@U{`eLN2^mA%z!O!G&xd zX32msZ%N}*pn33e0%#bPG6LB!%(R6t>}}%*CI;k`1~d+o((t$qGvpD*EooE)mSgaE b02&602Mohl*+4p5Lye=!oUCk#ivl% diff --git a/tests/w3c_tests/test-cases/i18n-rlo/022/i18nrlo22.wgt b/tests/w3c_tests/test-cases/i18n-rlo/022/i18nrlo22.wgt deleted file mode 100644 index 6f7898106fd096d8da82c1c08405796bcace8e1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 zcmWIWW@Zs#U|`^2@b^!)byoQ1JRit=2*g|rG7QQ2d1;yHdKI}jp&^_M%%&x)+vdN-;ORbNa=!jZ^A^%cLn^K4!0S zewkZt|Nr>L6;GEiW!zk_?@mv2PGlIz`%=Sw2Q6FHE;2b5aU?tOu1oK7_oK?^6Xes5 zg%&>BezD=ox`T5a=IJj~W7!q=M}1MM$=n|dKSf>@Cw@6Cvnb@>%P(SEO#j$vdkFrx zxlfFfpLIroM3mw$J`PVVqhHadZv0d^Zx;af;?;E(w#66n%TEAZzLbT5fgR|@jQsp; zy{uxe|0V+cHVM;zy^{j-Zz~8Kpa0yy@X^w~Nm0@B)JkVgSvxaq=Mz+>Y!>K_1MlY4CSAnPGX(7 z!}#?pq0Oe}<+&GYt7#yF&mj0@Y&swU8`DLKi!v33qT>t+s zj;r#lGX6O4PyOK>GwZv8%lY}Yi~gE+`)1RtsD-5mjs^8Z-d58{=(Sw0v+Ykt%-htc zUoFbp8$tvv-Y$L{yZ(&x=9`Ot_f|-hObt9-VSHoje%ppcCn7bL-qkjcU_PC&wf9_% zf&3ELOmW#h^Zdv8do`ABTrq*+w!^vDeXSzy7az}aO;0}K*DIqV{c8FO-x-grzq~yo zx9a8bmyb?ARgKY~mbiJ&_Rrs~e@KZP`O1z+2xmf~Y=7nboBa-$&dq^|ffJYzGV@YW zEA%o-a=}TVe)2J&7R;nz+83DJY#`El|F7uwo5k9-9~XKvFXBtRB63Eew#RVw%uFRu zt7rS;1K7U5EZFy6ZjW~6!My8S$39$8Iq1l$d$M)5`t^XGARmjnn^?Y=MI2~%J#GAI z=Ztsf?9Ofw4~s6ZI=PAG=%or4(>WLWOPYlkCthXj4_zT15HGNV|G^H+2PHOcNpXzo zJGZk5zG>e4?BDeyZx|avcQgu z{28lPvA8WKCp&;1=${pjq@ z=Jbk+EFY%ij>L@%1^zJxcr!A|G2<$#B!F&WU;xG>!`ns>3%TH8g%n(9g%+}TnB@Y( zyd{l~f#$(W37}!1QUZ@*m}v`P*xSZ8Obo~=4QL!FrQtCSGvpD*EoqbmmSXUD02&60 X2Mohl*+4p5LyY;!oUCkV)0D? diff --git a/tests/w3c_tests/test-cases/i18n-rlo/023/i18nrlo23.wgt b/tests/w3c_tests/test-cases/i18n-rlo/023/i18nrlo23.wgt deleted file mode 100644 index 6a6c3347d6319f52e2c46dd48175a567cb488112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9257 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 Wf1$zs(ZT@WU-#M9?1@nQx%xkEs~;f% diff --git a/tests/w3c_tests/test-cases/i18n-rlo/026/i18nrlo26.wgt b/tests/w3c_tests/test-cases/i18n-rlo/026/i18nrlo26.wgt deleted file mode 100644 index e39f1106b7f81475d5b27782637ce44da8c78da5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 zcmWIWW@Zs#U|`^2@ST)ld+pNVSGho5HxP3%$S@@5=cQ$)>s93Dgobc3Fh4T5;d7Py zrcY@FHv=QfS4IW~uwL69N3O#LJS^|)S}!o`+;Y-9_$}TkN61-+-Ft!E{)L)%Z*MY| zUh{0L#ub^3_u_26)z$lPyx+FjB3VIyDb1Z9c6+~L4uCs2X>x{btI>qtFM#fN%fi6G4s>uvetx!I zRx#MM&y8;QyufsAZ*XGvZ3BV7Isdzy<-2@)5`P;U+mussVWSg!^EZBtYexl3m-tK) z_L=p6pY=`8xjkyUjviIt@9mxZ-t1Ci*aU{ZX$oK3&mS}W_E_D}*PO+2$~~#JDQj1UrQ|6O<^s%pOMf|BW*`jtZsw7M25O-lcgq5R^4g8hN{w~xDDY<{!* z%fjppb56h7S+>ozD>RImlp1AM- zK7af7a8`Nyt4W_H9;u%D*v+iGKKka5oVRawF<5Pna7Yc$erY1TtV(F_iEXzucI$4B zx)^@`rCw#P;@680pR%%SQmgb7%9C|!T9-8U<_y!>vP#82_?ViOKIP7zcFAE0`}K>b zUY=k{$-nUMnc6g=?i0#F+$T@+1W*27afQujfpvP_?qk_6M9+K1vkMtN5_)^=RQSGU z`k!0u8fIje3U0g@cu+?BW);gc2XU*WN^i#KmoGoeswk@1=jkK7^>^mSQoCOF_JyTt z@4oLj(q?n=lzI4ODQUgbzLVbqP6p^IE_T1QS9|)5gi49N6%#JapH*Fnwk>zm?%ex+?$*9_n$1p~CD)tQU2nLSG|#8S=z>l0l=8X1qpBaB z-PxR8QIX}tl-!ZHaiPFJB)2dFbD3588m45RI|_lA1L&6Ak_^4#;=}^5V?wd#vCV-c zAIteVc?v>LXq-H|@$n|jlR76ow-y(F`Lgk1`-Yu4lRgD&iFSEw6$j-`og_4Q^X2YO z-k*ckbOi;knc8qkvMu1N1KV`p!lJ-5$4;lhz)fp|-0JGK#f5F0G`H8zOS% z|Lx+dTcSkNMp b0?;&2Qot~cl?@cWtU%ZX4DNG4Jq!#0SNvP# diff --git a/tests/w3c_tests/test-cases/i18n-rlo/027/i18nrlo27.wgt b/tests/w3c_tests/test-cases/i18n-rlo/027/i18nrlo27.wgt deleted file mode 100644 index 93fa43ff92d45178d8730d9132fab32c1dc013f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1328 zcmWIWW@Zs#U|`^2cr>HZ)~0XSrwSl%77%kW$S@@5=cQ$)>s93Dgobc3Fdtv~&gTRW zmsW5yFtU7QWMBa6we1b$I;HYjY?;gp^ zi|;o%d=Y#6^`z<4+sTd+mW7*lbjxrDzK{LBTd!0(?@OqZ6{~SuyycGl*)I;iO1gGP zD8k{Ka>Nvama>za3$K>W+sN;Hp6TH6tin?selzdy3eFFJyM1XujO|WmoAwPrC$+OM zFt7vNo{^uQt(R2{cK9~ElRoD$9o`%4>wnmQ$M$l3;!~&PzODs~nYS2K1UwWJH%dR6 zU>YZWQB~Q~JaonXxjSBZow|NvY3KdVpNk*m?PSz^!0~4m6XRGsk!G+IF6z z)uN70&#y{NJtpRr`cBxkb#lIJtFSEx4*4pwSR*;`HpD{?kpxmjGgeGsk-2KV> zbI_Vg-9f>hr!;($YzyFZV4Ln+SQMD%*y&UlxM^*WTV36@xUh|r=JwjT-00)xU_iKY zPsvLgd*5yG-at3{12HIJ`gl6K`USg!U8y2r?lT25VX_`P$lIX6!+IffSHrZ7M~$l| zF9>Vw9Jld9%i;fn75>H570b# zCIlJ=%7l0f!;DgdVQ(APGBF@WFwi(q1miIdGvpD*Eols8WL^A1_}}u OAhZOA&_kdW1_l5o8R^vk diff --git a/tests/w3c_tests/test-cases/i18n-rlo/028/i18nrlo28.wgt b/tests/w3c_tests/test-cases/i18n-rlo/028/i18nrlo28.wgt deleted file mode 100644 index d516f11c52ab0827647c493362987871ab7a80a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1265 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 WFbrd50|f~S5LyC5=qXSO0|Nkcf9c5p diff --git a/tests/w3c_tests/test-cases/i18n-rlo/031/i18nrlo31.wgt b/tests/w3c_tests/test-cases/i18n-rlo/031/i18nrlo31.wgt deleted file mode 100644 index 074c7ad1ac37816ce255d9cf33d65679871c5878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmWIWW@Zs#U|`^2I2n^{Yry$3s2|8X2gF=JoSdJRmYJ?sk(*=N=g8G;AmZ|Up3)!Y zADntos)Agl@fWy{sBLBJopfZ`@%$|Nxp$jqKI}~SnxeEhs_AL^^XFS1@oxBTv|Hh! zFtoEUFt7ui zosplPt(R5Y8yx6;*g&9e+x|xr?7HKx3;v3m0oxytRZqhS4y$?`}8Px#hodUEAM#5*Dd`Tt#$Os?Tw)?)i$_g zS2iy0S6i05W9v&fFFT=67nd73-CXke#A)GMw+k*!^$`D1^7qdfCXao_uU`pmW<7tO zYq7R!N3ev;)rnU7XNGW{z5D0m!`U7h<_*^E;hw^k@kNpU-p#%6_+I|{_ws#}<{JNs zzrXIbUtFy`Y83y5 z&+uFRTgtF@#+|Yk?s>V~ud@5DF-m(IroEl9pn>(-o=rD?xj)Y0zkE%&><&|q`-3h0 z+qTwqv?p$M{Vw&<=!MqewvTBAS@G2gT}tl0ns4hQnhiJbJX@{te9BLSxg6GS-&A}w zt9#+rd2Eqe(@nObcb`O;Saj)qUr}myEXV$YDtrzd{m;4B}c`J+>slW36 z&3*@rOmkqwasuhhyp+@my^NAv)4srLU{Y+o|5tST&0_7^j|;t-7xATD5ji7K+he$T zW~P#-)wBKa0c_u27VLX3w?{kkVBU4EV;?T49CT#WJ=r>2{dz!8kdMXPO)THbA`Y~> zo;H59bH=-Kc4s$;heelHo!rE8^il70xGCCx&N6R$G%hprG0h!=;@6YO9g3(waQ0j_W~emNB2#-F{dy zSzyOS{*2YDSlkw_Sp7(LmU%+y)^7_IbRSP=SHECa)`JIm8x(k0FNE%Dn3nOVarNW{ zAum`t{(9WG_x;?hed{!vojOadH?6zga4l(`Pm9q7o8l?ubALxwKRUa!IlZDH%ZDks zBXQ$Gfq#qv-i%Bl%(#mLprv52tr0{a3J7$4=y?*Ni-BQV<8~kunnTewp~pEwQx6kT i3P9I}9x4cJ3z^|z6yVLu29jU_!ka)^5Lj3+FaQ9}9|?*8 diff --git a/tests/w3c_tests/test-cases/i18n-rlo/032/i18nrlo32.wgt b/tests/w3c_tests/test-cases/i18n-rlo/032/i18nrlo32.wgt deleted file mode 100644 index 294cc2fd7b30d30eb1b162d5897ad0c010f95405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmWIWW@Zs#U|`^2I2n^{n^V1@asrTd4v4vcI5|HrEi+xOA~(mj&ylOyK*Z(yJf%O( zKQ`(`sS392(m%p|WY(>Q&Phj>9bdn7{<(Jt&wQvbdb~v0crin8%$)htKZP(?-@eJp zcwXYVl;P4T%Z=jywCFv^7g})ghTOjkT6uBC%h!lGgsjezICpjLf@>FJriM?es#UK} z&^OJuz7wUnTYJOB3dY?`3bo321?!fdji3DZprra@wciW@DDI9tvD{$;BLhP_3j+f? z(A^pN`Pq6|#l6A4{)Y{CY%j+rK6P5|>w17S^A@9ufQN$OM(IZrOyk5asw#V$hpzZP zcgIVwQ`b){?Y#f_bMd3Ros60fIR4CHoV;B8)RbR;dVD9ZZRaUkE$Zm>{HoN{(_AIj zRWE&8wNF@+Tf~fulUw)If~)EQ8V%7VPS4)yZ|!p`I=Lxm=j45Vyk1`q>FV5`y!w)F zLhrRtOz!V}eQpRn;`^ zdHcoO!o38R8+5EvF0C_ODKhK!&%=MkCkEs(l=Ch36t0Xfiv0I(?uEnm^7Y=o?5ZatnQIIHv8bp+P96GT{0$1xBO1yId;Hk#`;BblAkq~D81RS z`SH=)Km5(TOvFru&X`Rop1xk;Xkf`s_O+W0(|$YhP2xR!`lP3cM$fmp1&8N9%9KZq z)L(i3X1@bQra3TTIe~O$UP@|(UPei-Xe>GI0JiTh3--O2+oPR%Fz-6ou@4ti4mz^xo@|}1em$Tk$j9RDCYJAI z5eM2`PaD75Ipf_qyR#d_!=lTpPHy5kdZ~iNbk4>8l4c>siB}o>Lsy6g#0xCpf3U;y zL5Yo9QXHfD&h2c1Z<;qh`}aS6vbE(Nw|C}m*frNYc8n~3wbe*iX-%G0$MqmK%b3sW zZa*xUEU@Duf5z%nEN%-|tbQar%RHfU>$e39a&K;E+xB5*dBMtvIVQp$8^rz2GVT#h zH;J;A-B%kkEzi(%l09mm*!yma_XY-rKM;dbx{s%`t6#7y>%oJ(4GKK07eaS6Ov`xG zxO(z}kQb~Re?9Kp`+n}$zIB?-PMsy!o7P=#xRx}}r^V=kP4SfSxxb^TAD!LVoL*6p z<-?TRk+^Z8z(2+SZ$>5&X53{0&{8ni)(D~yB?P)Y^gIdC#lWzwaR-nI&7tU;(BmAT lsh0^U1)ys~4;6&AMa=Lp3h-uS14*y|;Y}bd1S~8V7yxW?3L^jj diff --git a/tests/w3c_tests/test-cases/i18n-rlo/033/i18nrlo33.wgt b/tests/w3c_tests/test-cases/i18n-rlo/033/i18nrlo33.wgt deleted file mode 100644 index 95d11b66f9dde59a607ef0bc38ade795e4b9d771..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 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 ZP&{B5#>xf?5*8q|1cp#Gu;620008&VG#dZ_ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/037/i18nrlo37.wgt b/tests/w3c_tests/test-cases/i18n-rlo/037/i18nrlo37.wgt deleted file mode 100644 index 61d51cf9ec5e81932c22750689586a94d1405879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmWIWW@Zs#U|`^2xD=RdE4yO9RuPcb4a8gwG7QQ2d1;yHdKI}jp&^_M%)iwy`jjue zZG~Z_Mo5@C(fSK-WGaFLsN6Z zrR)0o`q#D1ubtNSx_(~!T6>0O*rvxp3{1249Jv!>y(3P#)<9lqYDCneiSbJ&%$hx8 zX7Xy02NE)GUM*TOVNztuYL<{SOY)DWGMn!Ka*$|*1R6~7KXp%+~pY9-ls zKjZH#Z$oa2YuEGGqPI*7x2Vj%yhV1qnZ4J|Xg8U|VQyNpzlyR}2eI?0$M%*m_M7|r z>vSE7jkta#Vok-*D9N`|7tA@Ou*z=bbKNCD8Fjk#_J2}^`lV0WJ}kYa_9k2Jb^Yea zRkQxSd-m_4$Zp4vvXx06_dl^-T;6Rz@4DIYmptG0d~@bKXL8qkUB(I1C+sU*>_pf# z5B>IMd#U{L^pW&W^^HGk>THyK<@4WZ@#t>fDtdLR%j*W;r873I^9?w_<^4{#>`z9F zaLTN<7Ut~@A%YgNi|$6wKa;%q=BoPM5{Z&~D+>3>uHAKA&N1+b%9Km*ge80$MK|10 zsXiCUaj9#|XF2s5T`|z zCVJeP_624)8;G>t|0}xvX0dkd$A#X^i}+Hnh@6qA?J-e>GI0JiTh3--O2 z+oPR%Fz-6ou@4ti4mz^xo@|}1em$Tk$j9RDCYJAI5eM2`PaD75Ipf_qyR#d_!=lTp zPHy5kdZ~iNbk4>8l4c>siB}o>Lsy6g#0xCpf3U;yL5Yo9QXHfD&h2c1Z<;qh`}aS6 zvbE(Nw|C}m*frNYc8n~3wbe*iX-%G0$MqmK%b3sWZa*xUEU@Duf5z%nEN%-|tbQar z%RHfU>$e39a&K;E+xB5*dBMtvIVQp$8^rz2GVT#hH;J;A-B%kkEzi(%l0728_LjV~ zvG?5;?+pwve;@{B6(3J$SHECaaB!(gm}3hr)`JIm8x(k0FNE%Dn3nOVarNW{Aum`t z{(9WG_x;?hed{!vojOadH?6zga4l(`Pm9q7o8l?ubALxwKRUa!IlZDH%ZDksBXQ$G zfq#qv-i%Cg%(#jh380%87=SU!@U{`eLN0t*A%zcGE=D#Fvmij2x1@0!&^&mt05l9s zk$`L%X4*m+_O@{Y69aNe0~!ZPX?Wa*8S)6@mNY(OWL^A1_}}uAhZOA LP%f~fV_*OPKO-e^ diff --git a/tests/w3c_tests/test-cases/i18n-rlo/038/i18nrlo38.wgt b/tests/w3c_tests/test-cases/i18n-rlo/038/i18nrlo38.wgt deleted file mode 100644 index bb5822fdf5dd27229ac3d1278641b67ba0d2093d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1250 zcmWIWW@Zs#U|`^2I2n^{+c4MpP$7^vABeetI5|HrEi+xOA~(miCy=XELBREYbn6)= znMLzCO7%a^31_xy<=XZ~U2OgD@}1vhf^X)Bh*WdioSSsW@GSQVZMKtQ--6DuZoIbY z^^*QA3sd$?gR%RC6FTYAb8-={~pEAC8* zTzSVczHaH)Xsx41Zf^{IskXr_yRva{zuL0g9a~?@dD#hly13lP>E@ExCr%6Bx?ON- zs)zW8lD~h>FnR1Ve*H>lGwb>LT#L0;JAx%#u1>VtKQn~u?A<>fAI|pBFmJGK5BC(V zj4z7(_ipZm$M^ErznAZ;G}ri7BV53#uf9q9ZFwSe zX>N$q`%QC2{{3~g{o-onQKR@be1_lh-%^IPGwzhVaL>!-ewE#KjZxa$FzxM(1r4mv z_H4TG%l&Z{|K)4KWp|i@+#hV|-?p``qdjr6>vyS-MlZA$w|z`2$cnE{=u&d`)qGng z(QLSZ=h$LG95*ej zw6yMKYrS}nzvM@-&0AsANd1-fZ}vN2WSRpbmJ>*4=B1=o=w+1Tn)U@|Hyenw-v2AQ z{bsRt?Z<`Q%!~L^uZWzHsO>RaJu_3u)9Ts&_yD%=FAMg)m)oPAc`)xf*Rc;5R1P|_ z>Yi+!t$sbAC&IeMvr#dOZa{*q=P z#)(%M`$JcV2gD03;eW8h@TT&dO`p)faf^V8PKl}GTeX_OX9=CVqZ`d{0Ja&vM zezny|SZPh3Rmb%pHp`gL>ux_RnJlp5B7er}RV;1`SFC;{JIg$wbnCYT3vzF6XxsK- zW_iKNh&d+09vj5{&NA*1PB)3NmfcqyGcC{1bCNx3pxFCvi}wZwhCdL4Qo4_)v#VdQ zE9=37ybTIGtQSIeHB8HR)VO-`f{+)i9DhCT-1~m+*1mO`%}$*q*PGT|Z@88;&!@%c zf=%(1^0~jGsvn)**_>Wck>$gb+>y9(p};@J0B=Sn5oX+(9%v~TY-FCOqthsP-!C&UC(n1$e&B;$#CO_N%-mfgke6eS* z;G}zd%ik}#9A&Xg#ap5-_}JB_;g7fM{dG+JrIaH3p=jp`TS|Ac2(My0w3ltxzZY^T z$9@aU``$8hYV7(_g$rT)>kfK`wg+c9bDUiI`Pvo7#9ysj^=D2}z4dV|pK5f|_eG60 zyQSOLwtT-S=e1q)r$vC}!aXutPL)plW=&jDFBtyav9MKo4zE-lU|IAI@$2t)*>oPY9w7FIl$o5U)^WE@<*=qNWj-^MG zK6M;%Dl&1t^2Ag)HOX*!R(?2wRbUN8|+>QNY zT0r+TW@XNTh0ZgUNo)|56VLDL{`*nX(D%x_`0o5qo-tM&YmE!{EmkypvU|;zVzbp7 zABH@ek#jst@D=On4->Y{KXsIQ#kYQCttCH_h5M@dzvsH%6&3ptrnf(4YWuYrOa3z; z63hF}NZVg||7O1fCT4SBg5d-vmdw1A)C#?fl3Z|d5t@G#TY5I_3(Rgd5NW;tS9JT$ zV(r?G3%!{a@ugl7IU`ZqW4L-|rjn=Cv;FY_Y~NoN?0YY_M?3Ri-gT~HA1%|eV5 zuQK+Bt`HB17g)moV29;{5*xRqI7aoI+t~!)G;ep^UmF`w7nepoVDV8=!NjMb}H+!n4_{YZ9}c|z&dZwnUW-rUf(?ZeFS zf|U_-OoTl)i2I#o+#{TB5@jvBuQp~{o}uR?dqjZkEqQ5U@4GGD8yH~zKn%)VKAz65 ze!;Hb;8K+^#}-_y2M_W#DDbde2;J2%E#pz+>d6a2Ua)ff^|*8I`?*{D)@e37b(UOj zT6ewSTGBk97NZL`#Z$`X{*J1CbarQRdPPN+4^whS;>Lvn{}=`?yp(QYc`hZ#(7yu7AKDGb= diff --git a/tests/w3c_tests/test-cases/i18n-rlo/040/i18nrlo40.wgt b/tests/w3c_tests/test-cases/i18n-rlo/040/i18nrlo40.wgt deleted file mode 100644 index 9a7f78578a66371767c43705b41665e14caccca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1449 zcmWIWW@Zs#U|`^2xD=RdYb|y3ToRC13B+6sG7QQ2d1;yHdKI}jp&^_M%zxA``dp8= z=u=w3&A`a=m63q~tk?F8FIR(tK-reCxY8zUnnDVoqInsN~O*Mfu18iw<+U zUcWo@f5nTJZnZZ|%md)A49iWnWw<)sbsNy~W)=npcAzUW^7FIxvWme@JOXsyO-v{D zPCA(N*g&A|{MTTfU02i&=IplBX_47=A(cB;!({uV<|N;oK=)H#MNOJ@->*jWY3J`c z`zk5>-^}>?9-E)DEotEXkj?26R~x+SntA*UrJL0!6}CrBR4KWb6S#AaOL@5R-@5$w zuBV*1PCFfp>NczBWfkFiB-cBk_4k=v55?UnmscF}tgl)6HCyZGoyRwpl@;Guv~|ys zH*32um)*JbMME{8v#@7rPl%bk)u(Su`Xu~zNxfu}%b!0lLZH)n`?|G;@t+@UHQ5!| zROHpXqHRf|`E;*^KX?B6`eC}KMV=CWOZSrQ8|E?B{->#bwfWtD`*(Zs8@8kAPbMDy zKk0qXy}N(&DsqE=%{@Ht`q>-J#<~A_t)q&VUpi_ng2Fob8LEql4nLxA5KY>5_bXoP~AG#s|Ge=gIeG@AcVl_wazOLMe;i?~M9u zos|-1(R}L#^_$ljW=XwQ+x>5=dVq)}_tGuajLni8WWqv2ici)|C|eTCXK`;&e|^c~ zDaRJMG3Btcmbdi$GnG88p6!nhVEg{EVBdSWJ=&QE^R9Cp`*1#WAYy+|DNWrg`(TfB(}bTU+jNduRTJU31N2$H?MWTaAR3*5p}r zTn}QijQPCo_QR6N0y{49XRKbu;PND(%o9qtep|30_vVJSZ69Wq7p#n!V zv>08mDV|b3_jgqFqq94k(<>^ne3+6u5;ras_{SLF&B!FjjH_&s0J@2R0T`1EZyP}@ z`?yp(QYcqJYI50|NjnG9*?2 diff --git a/tests/w3c_tests/test-cases/i18n-rlo/041/i18nrlo41.wgt b/tests/w3c_tests/test-cases/i18n-rlo/041/i18nrlo41.wgt deleted file mode 100644 index 8e6ca9b558f0a6f30c2ff97411f4a84ef4568213..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1249 zcmWIWW@Zs#U|`^2I2n^{`&aj}dOVO<1H@cFoSdJRmYJ?sk(=Y%9nICCAmI8xw)G5? z%pyCbGkaP1RDU?NX8!DCy}Q5IB7E~^b<;|A`PY2m*_F;IX-7AEJv|cf(O1hO{eO~$ z>vzFT%LALXta}qs!=(JX#D+=IeC@{7sh2DwUcApf!W@9&jH$2fw;W_-V3^6mz`zc4 zMn-;qwq90o@1%o%j|~Lc&d*-Hp++%ub%;l`L-bb$Ar6(WsLp!=?B?^9iLI1<Dk^Utj*F>~WHqG!#2UNiB{-V{fR#h#PY)|W3Z z)Mi-kz2N@pXMW3UmVEHkh>*U?vVLKMljEJ{sanV1-}xo7$=ht}xxk-~w;!`v?sd+l zZ?*TFjj|T%Tr>7;D~wW|NLEYTy@VUllNQM*Wdq|JuUK7zPEHQ>Ahj@H1&U)`d5?RXP@5v zt69eV$@3zxD-J9g99B!A~->`V8nU1Z7?pZ}^jhFZ9jXd6a z#;e&)`Y#-&8jC;%9EKUtyL7?+T16vV-~k8etv;K zA7kl}3qLZ-uc?1F$XWLyUO7%|!?r4!eD~e&wz>z1SaL4qtz$|KK4!e_mYZq%9rjH3 zTao>b&+h&aZtj(7lcjQCn~wO5{7A0JFN*vZeb!7l?#MSy_pG;xT8yXtnVRm1zq8IW zd$QFZUH9p6R*s?iG;`Eg{+0J{_B&wgnge5+6G&&~rKDEqWt8Na_624)8;G>t|0}xv zX0dkd$A#X^i}+Hnh@6qA?J-e>GI0JiTh3--O2+oPR%Fz-6ou@4ti4mz^x zo@|}1em$Tk$j9RDCYJAI5eM2`PaD75Ipf_qyR#d_!=lTpPHy5kdZ~iNbk4>8l4c>s ziB}o>Lsy6g#0xCpf3U;yL5Yo9QXHfD&h2c1Z<;qh`}aS6vbE(Nw|C}m*frNYc8n~3 zwbe*iX-%G0$MqmK%b3sWZa*xUEU@Duf5z%nEN%-|tbQar%RHfU>$e39a&K;E+xB5* zdBMtvIVQp$8^rz2GVT#hH;J;A-B%kkEzi(%l09mm*!yma_XY-rKM;eGzK^G~t6#7y z>%oJ(4GKK07eaS6Ov`xGxO(z}kQb~Re?9Kp`+n}$zIB?-PMsy!o7P=#xRx}}r^V=k zP4SfSxxb^TAD!LVoL*6p<-?TRk+^Z8z(2+SZ$>5&X54umXek(MYXnh<5&&HvdM1VF zVqn4O;o$DHF)61!67+8HVKiytK@8y^7qN&=5`rW<$9fKK9vn zeM&3185mi?CH2ObM9Q#aQ0=L51w#;%ywI`mg zl;z2Z!I=yyeSlQo*qu!6IrvL#01D65l#}HE2}T} zDF3d;rHo4+CbuU|x>@91B%wOJ`kIxjbD`7|jhm15s3bSp@BFy2{dz!8kdMXPO)THbA`Y~>o;H59bH=-Kc4s$;heelHo!rE8 z^il70xGCCx&N6R$G%hprG0h!=;@6YO9g3(waQ0j_W~emNB2#-F{dySzyOS{*2YDSlkw_Sp7(LmU%+y z)^7_IpBAGFHpNrQ=l+hWesp$cb9zNZmJd^MN8-kX0{?)K z$H*kdjH|qn0J@2R0T`1EZyP}@Js-LN diff --git a/tests/w3c_tests/test-cases/i18n-rlo/043/i18nrlo43.wgt b/tests/w3c_tests/test-cases/i18n-rlo/043/i18nrlo43.wgt deleted file mode 100644 index 194e109b55bbad605139d6dbbdafb4357e9510d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1665 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 diff --git a/tests/w3c_tests/test-cases/i18n-rtl/002/i18nrtl02.wgt b/tests/w3c_tests/test-cases/i18n-rtl/002/i18nrtl02.wgt deleted file mode 100644 index 9f5bf31008cfb03ef62d68e6802c2bad2d114841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1514 zcmWIWW@Zs#U|`^22=Gs~{m!s!Wet!w1&FyAWEhh3^U^ZY^(u06LPIzin9Wr#`UKg& z@hPp~W?*Fb%E-U~)~nm&&2?Boz~Q^)QG@PxLcecL3Ay`~IKIYzd1!nd~9 ze3&=wO>)ACdkOpQXct<>r?;Gs$}*oZV|%2g;LImxrd_MbzIt2TVk|3(y~bcS`Jk=a ziqjepPz2AVk^7wf4%I!0J!^gc9q-mi2oJ5 z3v|{|76t}(p!+lO^RxA`iouRA209#s(H!49$v6MD0Z-fc&+8RRRyHqjn|`@Luf6QW z2By0P3wGvOYltOtm#X;78}=OfU%TjO#kXswmyZhFpMJ%8rhA?PR|RuoZo|p#@23=A zy*eva{kVeUlQ8W`E$99+PCd<4QZ9Pw+qS*pn%!dCIykL$Z$)JLEC>+k&uBSwH~T6Z z_f+q1aZml)UVE>dAEX(^c>LF?wGSGuePR+nfA>mQarWiOQ*6|a7%npkx|#JtV~Tp| zk%CL19{eA^KKnS)b>a@=*SEMf%buUlwRo@46HT5)Qa;T2YEzv)Xa4^AuwUupu9-Fh zaq4$lYR{*B%`Xc&zqx+T&U%aEc>#Oe>@+{_f3o%B*Sr4bwP#-{V|9=Fxsg5n)<0?g zEl=bwxoIt&y=J1)pZ`ZS{+jL0_~Z7q{y^Gh%e#hK&rkl%cld;Cj$>`^MXLmF&1q}o zg+(?To>SdzYcF-3ZRWOv7YevNWE(Fla>Xq?TiN^aL+5n;f4lV0&DU*{H;HANYn~%hM~j%--}ZV*|^ygWKjjiP<2qL^xBN*-zu%@%XBgO&dLx1-CWN*}bPl zM11mhyY6$-X3R~qp7tiAMQ!rooRz)55AjPJn^XJ!_3E#0f1f_Rk29|)PeGzab-}eD zOM^`svG0F5OxVwWNF8TGqHKTV{hR#`n6k}*DTEW4Ix_Q8QY-W_N^-&JqiOOnY>C^n zFEG2=K&18lU(xM1i?wS%F7#$z#Fu(SnM$5k&-TX$uzi17uj6DMJ{EU3v3xI!IMD8T+W6JZ8Sl>7o!uZF7F}L-aud(d zOBF1pb1wFmGz&3Kyvo=gx=6NWpyZ{Ez3;Yo zZ(xA=12HH&`FJ|J`USg!gG*h)99wX)9z4j~puod=A#_*6w2ViMt0ylAdBMu@*W=E; z@8@pqTc_FV)LC-9Y2EdPYf1BbT8u8(6i+Fi`#Y-o(b=8N=@k`OK1|6Si5nLR{9_F8 zW@M6M##J~;0NupE0E|h7w~Zhca#6(!DXP$NI&$3w87&6Xc#CSFbrd50|f~S5LyC5Xf{v_ G0|NkQJwL1f diff --git a/tests/w3c_tests/test-cases/i18n-rtl/003/i18nrtl03.wgt b/tests/w3c_tests/test-cases/i18n-rtl/003/i18nrtl03.wgt deleted file mode 100644 index 96d2f733f05e07e261f364254fd6b26310ff5094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1513 zcmWIWW@Zs#U|`^22=Gs~jV?Vgu?5K60K{AjG7QQ2d1;yHdKI}jp&^_M%;qW=ee4|H z_>@*~GcdAzWn^Fg>-Ft*&p;>RCi+K=wn z{;RIhevzEuus>r@40oZO|K_&q)4bzLlJYhiDjA(J3F}%`Qmhec&03ukx&1-iI@9@e zK6YQ&6O-4l+FV*x?y@`h*=>UZwyY7Is~r5l&a~aq)!JyFw(XgJ>8U#VxmC;oaDV9U zDYrFx^_%kw(0N-}7#P@r{>aGB&(_N-27AH^=m9LA=$+)7f7^hk?fmEU3MDI>m$+Sz zWh=4V;@mF!qJi=3+S`sBC8Ad-SN`fq6#4gFSoiqm>+5FfZTqoriJX^B0dvp+YmRJQ zpMC#V^sLsi+pzkHfJ*b7EZ0dFcHUoH6xsN0o71noneSarEo#+GIuzDzc1=oHL*yv4 zlw$Gsu&oE3o=%z@zH{=!A3?8|hjfJ=*toAq`^Ms}dk!2eHs5;n&aE#Rs^>Widsg;@ zY?HF$dg>`_IHyGP5^K%=x{8EAm3L=$Z99~6`t$Nb8S7apxtdq7T|O||bLoYeyEVK2 zulBIXQ{!(5_cTwuUl{p!_S`F%-^8zb|IUA-v`GF$f3H9KmANIgzfXTYwd~98Cg$~j zZZsR`{_nMpDq_!6o_fLenup-MdPA>zpY>AmEC2aNtiOKTc-gngqWg&wJNN3YSkD{9 zo}+nm(%0lBrfoBd^EW)8fjRJ)FWB#md=I^9`=PY2UwR$DW@hb@#R(?7hf)Bj~r6!`h`q2`PcQ z?tPtUP>+--&W1$U{>u9|`yDW0n*$RDCooZD=B1=o=w+1Tf|EtlnM$5k&-TX$uzi17uj6DMJ{EU3v3xI!IMD8T+W6JZ8Sl>7o!uZF7F}L-aud(dOBF1p zb1wFmGz&3Kyvo=gx=C)>K*>uRd*5yG-oOC! z2Vzhz^6_+b^$T_d2ba2pxsQV8OZ1|E_25C?1_d703!%Fjre!>8Ts?U~$O~4EzaDq) zeLr_=-#X1^r_Pe=P3x{VTuYkg(_(bNrg%#E+}}~vkIwFFPOqrQ@?lEuNZhzk;2&dv zHzSiAGp@2p0_Y|N24GAwyln)rkV`67NJ)iON+FwvSw$UB5gb;er$f_(*9~2 zx%lF5h5{-1Df?`-gLc}9aUPG#GB*;;?G8F)^SL%pBJ^#RN^BJ4^ODl+4gbSd>+?S? z^Wr_2Zt`i%r8us=%Q)|8HaO?-*lyihaU*IS%Zy~DwQi}c|7;^aG6ulCaA{J7?WW3$ zT9<$>ThGG4zz+06Mt**_URE*K{dYXy`rHR%H23#T^7X%CAkcRH?0SixPGP%UM7}n- zd}k01ow%aq$h`&Z`8Km7Qr@n$H|q-cXFbniwp#0^uc{ySyziO6G5tKR2jhH&HL3zEq&#g_Ie$vi^ZRgc4m4(IoU7v1Zy6fBerTXrjt|_kEvyZlH74uzVsuG~lRc+$* z?A_w5y{)HIrPmj!AO5)X+WD0t-3`gLPsKL4W>+?Do?e!7yDIcq zUSo=S>4Abvp&sG|^6f|n%Hucp$KSmtn{2LOrzAi1NBpO`7kAITKQG*D>3!BWl~3E{ z=49^5zjJYtv`6;JmUWw>x<35d?D#9W>iQ3luk{CucG}D_+~z-dH{anCxw($DYcE(O z6l*?PBP}el;nntuC-330%D-ZA&#&xm zw*LZ+A`!35?`%BJ4j4sDT|7rvtZ9q#+a7MmAnk9T}ul80>;j{Dp{Ji<|>-Ec**RkgHtUEaERyb2xloq?2*wWWA z_n97PBa+0~kSN<2{dz!8kdMXPO)THbA`Y~>o;H59bH=-Kc4s$;heelHo!rE8^il70xG zCCx&N6R$G%hprG0h!=;@6YO9g3(waQ0j_W~emNB2#-F{dySzyOS{*2YDSlkw_Sp7(LmU%+y)^7_IpBAGFHpNrQ=l+hWesp$cb9zNZmJd^MN8-kX0{?*dnUP738CRhs z0dx}s1285T-Zp|*$VC(@q=-Vx-pJ-*mJkT@mNXs)ng=g0fQEs}3p|ElrY(eFZyT>M yF(9WjpmCs-hQ~O}kVhD|q>&w1p26b*Xc#CSFbrd50|f~S5LyC5XfjX>0|Njf%{##W diff --git a/tests/w3c_tests/test-cases/i18n-rtl/005/i18nrtl05.wgt b/tests/w3c_tests/test-cases/i18n-rtl/005/i18nrtl05.wgt deleted file mode 100644 index 1ac45efcf4e51051c98d54a612e8348706c38a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1266 zcmWIWW@Zs#U|`^2I2Ds@8}N%+y8*~s0mNKDoSdJRmYJ?sk(*=N>&SJ;K*068<SxV|yaXzOg-m$$TUq`ltb@;`s=&yVZ4_9eX)WSVq&_O*W@KMZ+3oDoc0q;{dW zdOAb);ZqJXjG~KE;%+`Zy;?s2#hp_p|2ejik%6I|g@J(`=+2D%{A|6f;@)6i|HB46 zwwL1*pE@n~W##kmxXh=}=)lC;c~_u)&Bt9GdXk>IRyzHCf5bODXrG&&@1J?|=L?sg z=JjB7e{h{=hRyDPV^fzu&zY5Dn=&DKEr*cR`fDps*h>1seiAA~FKm z*V;8YG2U4uXjERmvQ%V}_q3^}=6-n^9<_g2kk203=&5;3*;}TGTU6yI-D-=T{chnC zTSfU=E#)b`yZZLnEZobh9@|;M*gxIhU#H=T_2zYYhS4AXY&F;w)MU}>7$Up!^K8$h z7w(*sf49G*rHFY)v4!uf6Tc^&{#5?HMebW&ab_w}DWX)r1WQ9dG9GDX>7X3dX=56AwszZIz4zD=oe7m^qn)yeAoNX`Sl;hZ9 zQ?D4@TVWP#?=yXMITY|{?bh(47umR};Aczmv`{=H-My8;(&Trn|WTjQMF zHLRL_i%#2S%nM$5k&-TX$uzi17 zuj6DMJ{EU3v3xI!IMD8T+W6JZ8Sl>7o!uZF z7F}L-aud(dOBF1pb1wFmGz&3Kyvo=gx`?>7 z-gjHPH!v{#ff$t3eLS6A{eoRt4<6)gP~c&`5W1^jTE?Ts)sq*5ykO<{>v8Aa_j9-Q ztMXh5wC;MtwWN7IEk+k?il>y%{T)^P=lz?$3J`NK$S@@5=cQ$)>s93Dgobc3FfZ|b>yzXA z)~B?Bn}Lz#DI6i;RmG3BUO``(Mpz z@qO)VyC1OLSUXGq`yG|J`Q2^TrxnGQimc>*B#|t4edm^josZvN+8S8Uv+3@hN;m#( zTa6YR-=xmIwLmOGW)Z{JEMtqj)pj+xex7odU4EQw`@pU7Yq#58#sIkcw@s_GQtw%5?inwnq+Pde!O>gUMZ+C2c>F5kvA?P!AyDPrnO(~c<(&Qe{7}YvmP)SX6;;9KXL~Na@F(K$p5LoI_T(vj zZ<+3Copiq-^6%`qS02B)zdrAM-$rQ>`HB5rfAoKzdvW({{(0@$m&zEc<9;q=PoMQp z+JDOvwo6f33tz99ru66kO@+UPd$Vhn{Mw(eGe+*6#O>uLW7`v-Y}>YAUs#6hhMgkC z*Lpd*B9hPTJ=!PVo89DdJ7L96)+K!hUJAT@R~2l-H(U4De#1Dnx#n3?`RdEx<@+zt zC=&6?{LaSn?0`|k)Wvgz#hOZ#-Yz-Ld35)WYJD#=vn-WE+a?rGpFZJH&X*nT7jMdJ zKCEzjlJ42l89p-}Me{s9(=khWarTC#-=;Rqop!2mqU*~CC+E+f8((j0`_}A!$9qvk zf;bxzW&11d-|Tn5#B2^s6r8{Wk(rm0TA`Owk_%1}O_PuL_+zGL)4ss$W&@Gd`+r5Z z-z?Uy{kYJZc@bag6_GO%wLONbXJ#sST0PqzAHeqgWx>Apa(lEh59VFxI`-j$%0Wj~ z-IJ}e)vpKi1o>Fp-Nf>}EaE`B>uKXxJ7>H*XLojkcvy6K)yYjfM=w>dn9jM_U(zhZ zIPofDf9MMFfOvr={10|mJ}9wqONwJu-?^Pl@J;jPXaD}EPqwz)bM@nW*PH&-R*}ZlLdBMyMV}rQgS;jrW=_XOuvioXdrsWxWPO?V?*nyIlHuk>T;=O?Z<`2Z69OUEa z?CKZn3Jxv}33F`0#d`1{Z-W94>xIx=4bw6nHLjk#Amjxr$6t>-_r9OIwQrqfvr}iu z^`>>#8?GhI^Jy`PKgHHm6rqWce^9cO-6HDDV%Mn;Dtpm~oXy5}}&kCI;k` v1~d+o((o9E8S)6@mNYT}OEY*p01X4h1BPL&Y@i@v0YXb)2=xKAFfafBMFvLT diff --git a/tests/w3c_tests/test-cases/i18n-rtl/007/i18nrtl07.wgt b/tests/w3c_tests/test-cases/i18n-rtl/007/i18nrtl07.wgt deleted file mode 100644 index a7db52b6c72cc796a3c88bbeb3a4cd896b7e8076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1521 zcmWIWW@Zs#U|`^22=Gs~ZS4`1?*a1m0x=hZ3`25$URq|lUPW$BXb2|*v$@JepJf4W zeM&3185mip;ovWTE^aE|L5}U zXOH>L6ae>6{^W@l5X|-~8JKJZvPujzp1v?}c@bZ@#{6rrxw4`B7$Yi;E%~-)(ccb#F_#QtHJ+Vup#U zU8S>oIYqi2G4@W_S-tvJ!os4H=T_f2Sx~$3Yp~W)tp^eDJ4N4IjEZ~kXy@!(S$Vlt zQzkucu{ajurWMUA+xlrqpM>8ou9uAa;_YoVXb6?3#YQJ?d-^jtaZ7lUO{-%_bLNAy zOM)`?mD4?w*U6P=XU+$&S`fXZ+WPeOg0T_`M+Ocsr|C>-u{sP>T9mQek>dO+h*r` zgPuG0#I9UtTg$v{O47++hK`KUXLfGC@p*A!?u1Nf9^UN@R|G9&7yXUZ?>e5i`RE7p zWv3T>c02p{?wc$B-%5(O`Z;O7jcYh46u~yTXj1VprwM*b=JHxBtdOsN>w5B-TCd9u zzM^-Zgo0vxF>r*KBGa<M*VD$YcFuTr&hG36 z@v!Lfs*{^|j$W!@F`aXX9;G5>n z&;I>SpKNWp$L*c@8+Oe#j~ye6Uu`uKR$7y1)p0$D%`)cmy4w#+CJXGi$e*!#6^q-# z6{{b~&N5FZ-TH08g4~-M+O~a|SzfR*VvdQh#|Ck~vy6L$(@mnRW%t#_Ov^L$oMev( zumdG8ZR~xw#d`w-%pZtBxyZ-U+0`%D6&zd|66V-~i}m0^-UbC8)(fG#8m47DYFs^e zLC6bMj=vsv?tMRZYu`G}W~a`Q>rLyfH(X1a=hI?z!KQdh`P|=8)sN2ZY)-GJ$ns%I z?nvCYP~ab9fHxzP95b#mN&@I61_oeEGQ4dBv5-qFR!E73R$3vOhgn7-%v;iU0cak) z!~hxwDlzaFhMBeyhP`ck%EW-2(tyT+QW_rPFhd?;+>%ByV2K8g2cTh~c)&1>l?@am PEI?=p4539pEes3*D2hnJ diff --git a/tests/w3c_tests/test-cases/i18n-rtl/008/i18nrtl08.wgt b/tests/w3c_tests/test-cases/i18n-rtl/008/i18nrtl08.wgt deleted file mode 100644 index a9591b2072bcfb3dfbee00b15b2591168744c422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 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 IKrIXm0QmVsFaQ7m diff --git a/tests/w3c_tests/test-cases/i18n-rtl/011/i18nrtl11.wgt b/tests/w3c_tests/test-cases/i18n-rtl/011/i18nrtl11.wgt deleted file mode 100644 index 9e0c2d44e668d0fcb4b4b76f95ea05692a34b4ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1527 zcmWIWW@Zs#U|`^22=Gs~^*PJ5vKPoZ4#ZpxG7QQ2d1;yHdKI}jp&^_M%oZvaeVS_C z`jl31GcdAzWn^Fg>-F{X<~pn(aQC@LbN4$T&bw2toYAam3~*)dIc0HBZhxk**Zp_3 zmCGi6^=o*uCS#B4G>g8;P1mJ@=Y|SsPQJEw>%!RfGjYpT^?QZhILJ47+SP~av%gH2 zpH}+yWJpU9lef)k+eIG)WpvK$bmXn<7V}!Ba^OjG!^%|4!+{Zr_v826>HT*iGn;aI}frjFt7tXl#!pGt(R2{_KiQ#Cm@XGo8A!L{M!aR zw&(XZU0BLDNy^)wxl6>OolpA$BlE1=+nSRMw*|O=Qn73ce6rtvip=>qdm~w)uJ<2b z1}fD&U|Z6_|KK{;jF`HhW1**2cl+_l8J$=g#=<$*ygEcr`@-E&kB7PC`axovIbz(~ zqDlg@H5P=h@MpA~xm%rO+xlcu?BXKzzaN)g^Is{#oqybHYV-lQwNF{k&FfE&I=j}_ zKj71x3H=MF2%ZwFb&s2O;b7b3bxyk)-oHNXF6Q`YZshgQ8M&4JLL}~LILy@y{vvG}y_@usTV)(fBSt&hBKKj(8^z@FzdDj)Zs%U=9? z_kG^=IbIK$`1WMA$<29rsQ%8yN!A|GD_in5hjIP?x0&&mch%G%&0p#dW^J{aYq-q6 z+qu2&$+v9__L*hKZrCYOEOv~AHOKII@6iYHy{~P27OHQ#!xZHHV9WWo&2b&a6F0m5 zmwKFf!PL$7^YN2&<#{o)LRMlgO04aCtGK$Uk~UB^0BzPiRF7)#DR9#)5foM z&Ukmu?(7Efu;}utlbd*sUaDX*opZ6jq*;h@;#J1}&=ukV@d8WuAMCJvP-5ej6vwE( zb32>ho94~W{{2s%Y;C#6?Vb4>cFi@99V3fhZ8Z{BT9aqhaXpC5GUoHT+Yd`73+%Ya zpRsxsi`&8#s~^eEGEXSo`fb62+?yNPwtbjcUa&G^j)}0x264Z$jC+LBO`@!2_tnNs z%QN(xgcM*0N?zL7`)-T(1_qcv5QDOkkEgS%U$84UxHKfpu>}|F!GpXF3OuYALU%Px z%Xrkddh&vh7pxqAJ?`B5e(u)3b(+mioh8?s)?IJ7mNd_&#pr@f@s#qpzoV)jo!!}- zUQv`?yp(QYcRsgjyFaQ8nAVzKC^1x z`jl31GcdAzWn^Fg>$Uas<~yVyaQC~&Q{SLP6@7H6ylf=kkOX;;YXO^zPrDl ztrS~Z&UA5|#PjMj&(Ecf6}g(%MVn9T6WDrfS=nr^>QhszmM)Te&~hrR_}Bf=FHi3p zwYMBfP+niLYsLJ7jfr}^SsLz}HcX$vYVk{9!K=I?e)YsFk1IZY3ivW{>ms{l>|d=H zw3`ROJ>#^#!uHA?j)?0(H|}9!U|v*pJS-ktC~m)x9V3&;8XKWv;)gTVkbhY0rAM^B&Fp zcN#=KFdm9voE$!XO5xS3lVa76D@Z;G)1K6F?yua`(_AIxqL;pG+bOQuEoRm&y)DYb z@cM>Er$C!Uf=1=QC~!$-k?sj=MQ! z8Mno!Q~ahDmrMQ^x;np8Si4kc*SRdsL%+|nyT%+Q z%Eik*mTh_!SIy))adUvzZt(;I_Gt%~$-Lc}py;7}Nv~?oggxE+%ND03FLqMO;kGQV z(TLI zpPO1+S$Wyl?)d$8zdx`e(#5%uDBE9o|7O1fCUA3L+TaAHi_E-~)C#?fl3Z}gXr6q` zM?v!?dKx$F3(Rgd5NW;tS9JT$V(r?G3%!{a@ugl7IU`ZqW4L-|rjn=Cv;FY_Y~NoN z?0YY_M?3Ri-gT~HA1%|eV5uQK+Bt`HB17g)moV29;{5*xRqI7aoI+t~!)G;e

p^UmF`w7nepoVDV8=!NjMb}H+!n4_ z{YZ9}c|z&dZwnUW-rUf(?ZeFSf|U_-OoTl)i2I#o+#{TB5@jvBuQp~{o}uR?dqjX8 zD0yjP@4GGD8yH~zKn%)AKAz65e!;Hb;L?yV#}-_y2M_W#DDbde2;J2%E#pz+>d6a2 zUa)ff^|*8I`?*{D)@e37b(UOjT6ewSTGBk97NZL`#Z$`X{*J1CbarQRdPPN+4^whS z;>Lvn{}=QQWHF!J#4FkmkhGDF1pdeuZ OLQ7x>Edpv`U;qHd5PadLiMT4uUlMQ)C*pEqBVfxzA3u9G@< z9=2>SjCdvz*KlLm+$CF<$OiZ8bA5b!&-}c}#(SC_a|7F=wWQh$ohsHFUX^TqWhS`w z+Pd65&mL)pT4{;yY?f8iUH!QJ`h|Y^uqn&EuQpCKdYq?h-_*Qx%AEymf4aoB>3A;e z;OAPF=WTT;kh|!9{GNNfwW($$>k8A)ao?$B2taXijq!_8`H|IvwVS!vOat`lrEd_+W8zN^`#oL$RZcGBlkuhQT5&t|P#W;M4m zv*>>L{o3g<+wU}p6fo8KHlFqSgMHAzWwg{`vTDwugp!gLQkjr*LI_QRKgOb1yu;m%skKd|#!x#=jyt&p+3H z9(!^2&E7{#eKV~ab@f;8V^4qeP15|hhxOYx6(7y&UbuB0 zTjbVsldb68C($JqU3%YFl$ssOu|MIsXnM$5k z&-TX$uzi17uj6DMJ{EU3v3xI!IMD8T+W6JZ z8Sl>7o!uZF7F}L-aud(dOBF1pb1wFmGz&3Kyvo=gx`?>7-gjHPH!v{#ff$t1eLS6A{eoRt4<6)gP~c&`5W1^jTE?Ts)sq*5ykO<{ z>v8Aa_j9-QtMXh5wC;MtwWN7IEk+k?il>y%{T)^P=mV&{yMi7N49MJWl=Shez28L~on}JMd4n^059_I*69ZX0m09_k; ds35e>Wrl}QfHx}}NP-0jZvtsvU}3?)008xT26zAf diff --git a/tests/w3c_tests/test-cases/i18n-rtl/014/i18nrtl14.wgt b/tests/w3c_tests/test-cases/i18n-rtl/014/i18nrtl14.wgt deleted file mode 100644 index 6b1c117fa3dc7a1e37bf85983f8cc31014e20349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1493 zcmWIWW@Zs#U|`^22=Gs~WmVfOT?FK{12Gqa3`25$URq|lUPW$BXb2|*vxUkN2`FtmzWG4HgCkpW{T~KB zHT3VRSx&%Y6qrtTl_Zd{k^{FCqn?-)g~J%Y^4g$Z@L6@%sLhZ26mvU zGxGDZ^|Fe=P6jy_i<5h&_~zd>;AuPmdA&l(%H}1kP(NS8a^Bvuvn3mkd>8#1ptR>X+meQIfn!25_WW4UldWgBVReqYO7op8 z*GU(a-d|MY+WKyrQ^y(^!^f;3Iy!|%WQ?=`7!_6ggEq1SqEn8%p? zPgDPD@_YL0-M@q1upNzlvRLH5_desQ^53UFAA4pJdtjb<-HL-Vo&PKo<=xr1XR6nW zZ5c~B-rGwrv0oP6+dt*My3X{|k0q0TmlUrt*mCDuSjcs*wajMIlg=g0UeI7V?M`&h zpNu<-Cro(TrbRof;+VsCvEo|yla)7fuI@ipAyIN~MdqH_YaV6$FVH9w^2+?q#PjR` zSH#uDw&^-7nXb1Y`-LYR|B-F(WoD+Oap6iK2P(F&`DobZpuenB8n3(t7`|==Ph%+O;1SdNVKL zOT8j;MxwUIaP`bgB~Pno`{M)HzP~Kk_g-#~cILsn>s-e^Tu?da$f|p?b+-ETfSw>9 zi@TdxzL!NDXm>qr{A%ZncjxTRZV(TPF0VSdiRb903Kr8j7yC<^g%~GZW$X`KAs!Gf zu!R4?4$B86Hf~9AjOshLvkAUw-u&#}|Mbb$mV4aZnZIGzT=Up5viQ|jBVnaAc~%|Q zgV-!%KCip|uw=5pj*I*mt5>nOEnKnsk?bt_hneLCDyRi%35|`ZOpVhL(fU}hyXiK^3ulMcU!zSFu?qQ7?g*6Je^(rf?dJEr6FOC zEx1?@9^`FM;9~rFP!yS^47OjKS)d?M?^?0>WbrP{{;aI z+cR3u+>OtYZGAE+b!m}$?a!&#@>hxo=N}JSI{Sds+NZ32cC%(|dw6YGwZ>166Yld* zaimUOr>yUvk$>1TTq*Xz<*%QOxfOn%TeI5xjF?TmcF(#g3Vw+Kq3*B#qy=f3lz%?n zp0Bj<4#PW{I91;#wI@@5?k;!guin3RU%kb%y9<7tu2lIL|6F>p`R4Ck)6JH?W!bi8 z%`dq*D{tppT%6?XQ69v(_jFm%kMHtdFNnWX_}Ka-KGACKyX+%h5{qsxl;62kcg1?k zDE1tkqcgT9H!+FL_~8jv(+gJjNFAGf zaAob=M$Il6)1_N}C-NLSU^HX>qB+6OnoE@4Y}x$y=<00$=<=$Q zn|O|1s$emlbFsgqS%`7sRmT3%72*N$0!#QG?67=LV&j$+$Edz@JDcE}=FQLk{ZF54 zZMnzoo%tJf%{7l5Ba2^cH4;`@lV{a&J&4UR=JUGS4@)Ks?6}CEv3eDY+rkyAAIZ)# zPbl5`ZNY-vn;Y7;eVAEZurgwfiLl28alf;SdxXfaD7q%}I7euzVnRv*=-SXj1);5<86HLf-mGjO P2^Ju{38eo6r5G3h4}tyx diff --git a/tests/w3c_tests/test-cases/i18n-rtl/016/i18nrtl16.wgt b/tests/w3c_tests/test-cases/i18n-rtl/016/i18nrtl16.wgt deleted file mode 100644 index 79b8d134dfef69f31f7b1d604d5f16294c82ad8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1514 zcmWIWW@Zs#U|`^22=Gs~Y-X#w&!05KPX3`25$URq|lUPW$BXb2|*vxUkm%KE?%bfj^X~h!P_bp{y-y-CH zHE%Gy_Q-E${$YmiA_=Oim~5}6f4iV1#&&4Njal^%0;ZI5zbij7%Rl_v?w41j1K|Gf z+fZTqD(I5hRiN{>urM&N1O1VapP#LlRSfn-3eW?on4ajJ5B2jiEa&YlJ6p2x=y%nx0goD`CotV} zjL1&-^k}isx?MjGtefOKfv0G-sHfBOy8ctCth;V=z5Kpxudrsf*tQPNXx&>8***&b zMEEmW&fJZ@%Emp_yDaXhU)y8vwey2C!x)eMI<+>T|Jo-e@$+}DgcWCBUOdG{{fOZ* zqoA8vFEpm8mmVp&6zU=V;qR}9jjj`S7{9*7wORN4e6GcNg`Q~gERynJ&R3i2^ttr& z+kfkoKJJ)lBM_&0x25)Y>eu|TApgzvJNNCjKbjY?$JI{riIQjE4ZaqI)+n)I3+qMP! z%ray*EEVy-*3ZdxBkA1Uqx0l@vzvYPAG}b&?IGKES@G8VuZt>V%%XYL8^*HDHP4cJ zpSJto*7N`oOU|WRsu|h56C`s^d7hKxcDyyQ%8BXDhV&&{v^9`=OY2RN{U-|jvpFQuJr58(YSo&>hLzMT^ z11A=h?0sGQ;14e%Rh$cnvi+6!Z}vN2$~Fh43{GIG$jnPgt3h{t=fhGJ8c33_rv2ja^V^rU{olWpf^X6y&{-;m2 zw%p_P&ioC#=9iuD^LgFvhb5B*c3kAoSiOqHZQ+X5k7Q?= zCzNjewqQZ-%?)kaKFlmHSQ#t@Y{A8P@E~u40uSqj&|MAFG9ERqp1dIB1uMs2 zk309ipS!hhoo2IBXUX-Zb=MoNCC&3`F}h$=Jf(c@@2KiWXLmNIS5##AFeP^+Zd@qv zk1@cTkx7mjSK%Z9bQ1#uFeVw^HiB5lMHMTgs6s2Ikj=v^BoO8;X*>Zm4_;&d4FeS! zcnrf#TL{D6Hr``mKu&2u<3K45k8zkGk1%dYBR{Z6gU18VFi<>T7{CG JY@ikf1^_S3Lhk?o diff --git a/tests/w3c_tests/test-cases/i18n-rtl/017/i18nrtl17.wgt b/tests/w3c_tests/test-cases/i18n-rtl/017/i18nrtl17.wgt deleted file mode 100644 index d4915d4a25e54c572c7df8b2ab1489b8395ad827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1505 zcmWIWW@Zs#U|`^22=Gs~U7hrVxgN+{2E<$pG7QQ2d1;yHdKI}jp&^_M%oZvaeJ0et z^(n33W?*Fb%E-U~)@$4A$aPpj!1cT3QG@PxLY%Q%mb}ueVss2Vm?5F=(|`X$%fGwL z|0|+4^*1V3H&@n$Ju!}xV7FLy_uR^f zdqwMdmG=ZQxL;wZ%BudjVQY+}#_=OjvG;@5?R}W;@15l9f5$+e?flvG5*t!Bh3eh0`xD3D~wzW#0F>AC14g*~zH+K)7Wqi`sd; zDTP;WikHoN)0{FPdaZ|$)%WNSJ?#s3Lp=6hKfBf=a?6HDpNQ;>N1~jWS{LnbS5A3n zx9VE-ikM9wwaSfT;59T`>W5X zGKif=J+`%k@q0KwzfRYYxslgHW~{CJ7bEd@s)B!_KxqD}O5>Fxv*cILFRvHvJns8s z-Up*h_czjdtLryUuA1}r_tm#|4a=GzDSry={I7ana_{b+Z!1%Sf5je{7hd<`;LK&e zkICxpY}_)<>xI?or5x|=rI*+*EAQ?|g}xJBnoDHmF|JfDuyWbG`JPDs;k535rpHb%`0VEU_-)Gdz28{6 zl-w6iDa${Qz^Bt3YI({sQPIQtl3&%FfIZ#&%NM64FLqPP;kGQVGWnQ~g62!~G;P`!nB8n3(t7`| z==Ph%+O;1SdNVKLOT8j;MxwUIaP`bgB~Pno`{M)HzP~Kk_g-#~cILsn>s-e^Tu?da z$f|p?b+-ETfSw>9i@TdxzL!NDXm>qr{A%ZncjxTRZV(TPF0VSdiRb903Kr8j7yC<^ zg%~GZW$X`KAs!Gfu!R4?4$B86Hf~9AjOshLvkAUw-u&#}|Mbb$mV4aZnZIGzT=Up5 zviQ|jBVnaAc~%|QgV-!%KCip|uw=5pj*I*mt5>nOEnKnsk?bt_ zhneLCDyRi%35|`ZOpVhL(fU}hyXiS^3ulMcU!zSFu?qQ7?g#4 zJe^(rf?dJEr72;KEx1?@9^`FM;9~r$&0Aq6Q#u1rT!qadLiMT4uUlMQ)C5pCi{{1p(LZ^O9z` zmUp(~Ijx$vNSq_I+OgJ6QiG-|D9X%ZcbEnR+^vv&37jPxIb9!{wXn z>wCX%tWSQr!u#^_O9D0)^v&@O&^A*eQuzj~?C0g=fP zf3@dlMQ(rakG<#L2BZ7B%kKrCxbys-wLTjd85r7G7#P@r?##%~&(_N-?hW?!KWxBb zdpSPwsnc>_*E2~nS$EwQ%B&7P?|O=J<$RlK@zQGvcf}lA+l>s9-k;gE>qySg&({yV@Zx+V!WLM% zZQFu<(=uc?Y!pep*2l>ek$6tKdu_eRx^D)#whs^JDwMML{mzJfJ-b4}EV^X9pnmf@ zqb!Mhw&mZpvMA}b{3tR$$zPH!{>8-;`xv5?`m9(xZ+`O+u>a7 zzD5!Ei%;imId^P^EW4$LnTfu*_{9YVw|+PB)psqgWk8M8UwQv#zXL|5IWS^5fplhG zN@|5(MoF$|Uto5#fk^B9zoOf37HijjTdi$GnG88p6!nhVEg{E zVBdSWJ=&QE^R9Cp`*1#WAYy+|DNWrg`(T zfB(}bTU+jNduRTJU31N2$H?MWTaAR3*5p}rTn}QijQPCo_QR6N0y{49XRKbu;PND(%o9qtep|30_vVJSZ69Wq7p#n!VEL8S>ahoWmjk8^~kS|+3vfUXTaR1n%GF~h?s Vz?+o~B*6lNH-R)0u&`iY001ip3OxV- diff --git a/tests/w3c_tests/test-cases/i18n-rtl/019/i18nrtl19.wgt b/tests/w3c_tests/test-cases/i18n-rtl/019/i18nrtl19.wgt deleted file mode 100644 index 42adc435dc9ad356194a14326e474f33dd7936fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1293 zcmWIWW@Zs#U|`^2I31I0`#(|U*jym*ArNx`adLiMT4uUlMQ)C7pCebZfq?7xc}X)` zcUyRvukCGg+O2@=7_E+I-ahW5N^$v&HLS3Ia4yE zcz2%XCI8J*TRYb$sBc>w-hc0ak>i`=+b@4GX{bNl(=1SVJblWRcB7rPD>vx}pm^fM z(G$k&85tPbSr{1Dfu6|7&(GG&D(($F=y%wF$M*924MhttFH_1>*uw1LtkBqUB(KBy zT1BkO^d6PFAq)Rm7haw!!lpc3t?vB!^PRh&vMp&4{*cY(GcR7_@u|<=Wm9u(Qzk^O z%{L#r$3dy zZ;|_6S6%zR;LL8vkJCSUJlcQG+$}%ty{LY!*KN+6%E+&_7Qx%^7c5epKH=RGp{nU` zmwb3{|7xNBCC5kHFZUlRvATP`qeUg2n9$xipRn+?-`JMvB9J$w3Qq=`n) zx4H#~=ReAvj~b`H^8U?!2aHQ|V7zhy>CC*8)C#?fl3dfi!0cuNk=FZvMYrE9)~@}y z(3^P?U+NW+GZM8uhO1|0DtTHx+aDjm_WfnSzV~u_v@;LpUFSOX;eyIRM^@dFt+Umy z2lNE_Slr#j^1UqLK)dT{<5xRpygO%ic7u3Wba~auO*}_0Rj`=Ox!7OQEW|kRDr0}> z3h{t=fhGJ8c33_rv2ja^V^rU{olWpf^X6y&{-;m2w%p_P&ioC#=9iuD^LgFvhb5B*c3kAoSiOqHZQ+X5k7Q?=CzNjewqQZ-%?)kaKFlmHSQ#D&d zcU1MGvpbv9D=M;ln36jZH!c+T#~9$v$RxsyyLNWI{>-=-SXj1)*&nGdzp}yjj^m5-dP?6G+Pe%L)bt0Id=V-~a#s diff --git a/tests/w3c_tests/test-cases/i18n-rtl/020/i18nrtl20.wgt b/tests/w3c_tests/test-cases/i18n-rtl/020/i18nrtl20.wgt deleted file mode 100644 index 5be4167ca953f4957a255b8498abf585d778914f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 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 MfzDhCRK~yn08U$-WdHyG diff --git a/tests/w3c_tests/test-cases/i18n-rtl/023/i18nrtl23.wgt b/tests/w3c_tests/test-cases/i18n-rtl/023/i18nrtl23.wgt deleted file mode 100644 index 9a26493c643c5d696977f21778e75aab5ede0071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6527 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 iZhL?Q`@>9N(Jq;Zf1u%C{>1r7F($DsC zhJB6_$?A(}pSb&7|Miv+dDh-Xe80}=ICJLqW%*iFv0b7EpFHq-uyg8{a^~9Kwz}-u ziL5WZj}(i2oNd+;Q+=e{%}ejkyGg$p0^km=nVeyp!@K_53!ppRvM?~P109@^pP#Ll zRSb5mG|;8~3^&nT+Z&viecM3bZ_fWNXZbGQp2Xh<$2R4ZT-fNu-u#VUy?U1Wz9;Vc zzt7+PJ)BkE{%X?aiASpEK6W!JuaCa@Bj@d#T?|&+BOFr0vtOD>FRK#Tdt%!yjorH2 zqb`P@f2mj5tN8We!>6n)o75^jh4N&bn${)Fy*a~lwyaX|4?d=*rBAu@r(JSb!hZeY zsh1~MQt~f6e5N){sQZMn5ckQGJi(LyS6pE;T40@CxBFQ33(@nQ@$5pzkA&VHI~Bg~ znf~V%yM`GVrh*$U1|F2rzFEaG%|YC%snVM<`sK?Hvnq-z_IdgUZ~dM5vDB{Dy?tS+ z+Pm+2jBcW2FZ^eX5^Jf)YseV)~XukVxjqE zj~`KQ?j^Wb^*y<>$m?mgWX|GyeK`he{>kst)B4M^(=OR_p;r{wi8iOCnI}z7Df_jj z|J%izt!NkE&B!FjjH^780D6Ui0a#ivyao9TrF3J3lx}Dx8?t$r#SOx|C5;<_=D`ae zpkbiG2ajQxNfOzxTTBdy1PU|^ltA$qhMA_24NGHYKuTdi(?BVVfN7|ak8Bz@u%JaG X1ze`FvVp>v6$sma!F>*>hk*eAe?VHu diff --git a/tests/w3c_tests/test-cases/i18n-rtl/027/i18nrtl27.wgt b/tests/w3c_tests/test-cases/i18n-rtl/027/i18nrtl27.wgt deleted file mode 100644 index a113c0bd3115799e5155be563976b90cecdd704b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1258 zcmWIWW@Zs#U|`^2I31I0E5BxgZ6%O53y8UZI5|HrEi+xOA~(mjH<0VFf`H5Z*P7F8 z8@zA#Pg`(r=@C`I65*1APrgmvR`T!Of!T$&M_WaMzRXzXzj9W7Kj%Y@$XUljOXqh~ zz2A2KZJ78ZxA>)r1_qCwgj)QGb(c32H_ua^U~ zwSY167Nd%Qhl1ip=|>Yx);W zyj=X$j!$pq_)cEi&Qr8n)Y0krRjH|`xk|39Ui!9bpRgvkh#40rx9+P2SJeYF8lp{{ zp1srG+UHbsa#PUG$@~6zy}lmO)ww-+^(Ehg-fN$j+~529+%CwzY&&I-`jf@}sV$p4 zuTPw=zGeHvCE6499(?@tvXgZ}P5QN~s%hNw_KUfNdkHKz=vbv(T4%gcWY+DUhyRLC z49H_B=UeV6Tp3>!`S0D_3y1IJ>%D)+UumxKuSm}G&-I_jUYz|JebjsQr81`IxUgFO zb64J)&&fEcy2N^A%e_=<%|E~Ut6oh0qWp2@m-qy;*>AItd`T?2y-M@}zT-6M5u_Q934 zZyPncWK5QB`JKjd?10gX^^4{tKWi>gdb4Bm=Np zYd0IF{dVM=#C!JiNlz1vo^N#v4$ps-DUTYdzw-Xgeg}+9b6~`B0_n`Wl++5njFMc_ zzQF8e1CiGIe?_<7EY`05xX_z<5nt*RkuwstJ%+1iW-57FJ=-52!1n!R!M^u$d$cnT z=3VDH_ThrcK}S~IldZGWuLtx5`B>cD#PYo?;y}CWY2#NrXS_RScXoq#Saf;S$xS>* zFIBLZ&bioM(k#R{@hW3~=nCwzk~k z_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R#ckn=)sJLnnJ1KP z{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsRv>08mDV|b3_jgqFqq94k(<>^ne3+6u5;ras_y^2cj7%cTxHCV{QZU%o z2%->00lGf)JPFaoz_6`xA&?2pq3D{>;~b%>j0q_Ppld@96@<2KW_TC{c(byBBv^p( MCXoIOlwx220Q15Bod5s; diff --git a/tests/w3c_tests/test-cases/i18n-rtl/028/i18nrtl28.wgt b/tests/w3c_tests/test-cases/i18n-rtl/028/i18nrtl28.wgt deleted file mode 100644 index 318c4d47eafc3ce445bfd8fb8979e203c751062e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 zcmWIWW@Zs#U|`^2I31I0YoJ~9t{ljl3&dPNoSdJRmYJ?sk(*=N>&SIjLBRF9oVM$5fFZwfowZ!J-1xufGJ ze^U3Ec)@A*02Jproc>_CfsuisorQsc9q7D_{QPXatm59_gMNn%cx*4P-%zyh@-ih0 z#f7pCQcRpGDrL?xn~uF!+Lfa6av9gx`<=7bEisVTY4WkUuFmg{uDJs1oQC+|gin8h zB*WukHmy#1t=N1g%XPwq%B^lsH!h%kX1aPUtSqH5a4e9=urGnJJx@yQ_Ute@o4ml|2DwFRea( zYWZe1r$qGaxPzOs#CFfea#Owp;NpM z&OHphR)zzzy11md-6TruKjb|h5ncBGpsVMUSE+Je9JH4^yyXa56;~6 zw@p}gXG@9t)C;?F)LZNS2lCfWd0KJseYWq(bKzTNa|*5c9w$AWqy zt<^LV8ZFoBZ2Na{$F0L#zP8A2Z@408@pf_UTKPwbH*zlSb=$+U>(q+GJ(6>7U6-4& z=tN+!*KYY^2|PN@KebL-rrLR^AM&%dj@#2KzbkOj#uXD2wl&V#UBjx`x9GHO*4$ph z+x$fnax&u1om=FXxaB*u>^~9z-z=z+`YZ3>?03M(GzUg3Cy>s}OG&NJ%P7e;?F-Cq zHV|pO|5tST&0_7^j|;t-7xATD5ji7K+he$TW~P#-)wBKa0c_u27VLX3w?{kkVBU4E zV;?T49CT#WJ=r>2{dz!8kdMXPO)THbA`Y~>o;H59bH=-Kc4s$;heelHo!rE8^il70xGCCx&N6R$G%hprG0h!=;@6YO9g3(waQ0j_W~emNB2#-F{dySzyOS{*2YDSlkw_Sp7(LmU%+y)^7_I z zbRSP=SHECa)`JIm8x(k0FNE%Dn3nOVarNW{Aum`t{(9WG_x;?hed{!vojOadH?6zg za4l(`Pm9q7o8l?ubALxwKRUa!IlZDH%ZDksBXQ$Gfq#qv-i%Bl%($~Y&{8ni)(D~y z1p&G~^gIdC#lWzwaXyd<&7tU;(BmATse}nB1)ys~4;6&APG)!*1$eWvfh1Uf@FtM{ J36x@B005hL{^$U9-=S!2Vyf0dRf9gpS&>WzaCU+o7w!~-nC0I_h!y-^KfCa zm6yx7zU~(`kM;a1wbSHdbzPm`9bIz;R++|l z7ezL{+vRdA?rOPGYU3d{#l(fKvRi(!aIqG2yPdf6cj>i25534Rt@2CL<1_!x@-qBb zmJ_;*bIrx5xCbxxc4kWFq^u49#%gUYrvzJz%KDB%^n^U5CiPa{~&UPcir1xib z?K+Zk@bmRUFT6M(iLeEhE;*O4Hr1)vx_-xhC81Ni56(R_$y9ppt#|tVUg4@6zt29s z`&aQj+tK)Q%ANnM?n~_5S+}|(Gx(NY!s*ki-XEN~>u;N|?#`AH^{E$j=cu>V{}1G^ zom8h{H~Am;nY7Kdy)*25@~pooZ{NoH)ztlUL+?_F&1F6T2bhZEB6I#OF5KFl`I^%@ zk8!1P!7caOQTLA=-f(kKb#H}a$<)BZ6~-1@*V`JnPHbK_rR;vsL5T>q&!JO_&(uut zYmqH4+fyO^|D{{!u|;l8H`$8beG*+_(WUo&L8;lX9QzZFn-*4DT6VIvUcAR&@*~*h zEi)p*4dzwa*6~b=O9dv-QXu98MtEjkN@|5(MoBI>%J%@H`v_)~Zw@T^SkBkUQxJMW zPBb%Z)y64hDof50<>NvG?5; z?+tXLKM;cwrjMtyt6#7y*p*rm<~|CVFVPbw>%oJ(4GKK07eaS6Ov`xGxO(z}kQb~R ze?9Kp`+n}$zIB?-PMsy!o7P=#xRx}}r^V=kP4SfSxxb^TAD!LVoL*6p<-?TRk+^Z8 zz(2+SZ$>6LW?WfY0_Y|N24JpXc-shKA!l?}NJdA?W;=v=OB%NT&4Xt`pkbg) zh{rI@C`B0dws9#F19AidjRQq69^)`W9%0;)Mqg$IL_7cu1H}V|VXSPRAYlPQOJE4y J1ZrVm002Tv*(?A6 diff --git a/tests/w3c_tests/test-cases/i18n-rtl/030/i18nrtl30.wgt b/tests/w3c_tests/test-cases/i18n-rtl/030/i18nrtl30.wgt deleted file mode 100644 index 41fc1d9153406f132dd5eddb91de317b28d22220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 zcmWIWW@Zs#U|`^2n7g3THo`M>Zw-*Q28g*BWEhh3^U^ZY^(u06LPIzim?Jm8^GN{W z(h6<{MwYLP3=CkswtbF#hZF={zuU6TthJt%$HVx}>9B~W#w&(}$Hk{w?EXIa|NRwW zbCxSLT^3lk{fO#1an46JNvEXVEwxci%FfMv{VAbe^YQvg2YnXJzjbojDV0gK9)}ew z&qaSVJ>TqTus18=)x5jM?l6l-IDcpCTX??Vr~SeYrzcC<8SiBbfV+QrK#Z-!f5m4T zfX-@XVPIefx<4a7KU*)W80`36dMAB)Fdg3;?CXEnfXDW7eBx85<-V*(STk=ist9-} zC~lN~G{H1Z{GzI|r+Mg#|8sY|^g4C@#L~|DpFbBr%G=4P`GDikEXK*{;-_|e`ZL9M z^4fNuqSc~~PS3AOO+C$3a$WV(w^jRuHMvF1xH!3WUoE(*9-z?>ZQ}Ioo&MH7r=pXa zf_6^c_s8q?^^mU4?a8Yz`6l#U`^4n_-q+`LLH1?aDSOnPEcQ=r+2nbB;&k;b+aE5` zo~ZZW2F-6CP)$*Ua^45G##!1yB z)+<}?rCMwL`Q2ajV)7T|k2Al-Cz#ECn|l5vNqmbJ}w(+vvt!uy3||fN*)Z+5Bi|(6 zv!_pbnrQTVt6Ok*{-aEJM1-@?tF*1-nG}}_Osu6q%n6L}%)FG;3cZYyTyT`d~!ZuEt+iT}? zqmP?|0pZSrB`KCp&;1=${pjq@ z=Jbk+EFY%ij>L@%1^xju2_usnGp=kd0dx}s12ESxyln)rkTX3iB-5j1cx3Z1vmL^` zC5;Dw=D{-|&@fOY#A6s{lp+j!+qjX50Xc$!#(^Rjk8zkGk1%dYV!>2Ux6 diff --git a/tests/w3c_tests/test-cases/i18n-rtl/031/i18nrtl31.wgt b/tests/w3c_tests/test-cases/i18n-rtl/031/i18nrtl31.wgt deleted file mode 100644 index 70622e1d8e5fcf22f1850675531e9e87b169923d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1299 zcmWIWW@Zs#U|`^2I31I0YojZXu?Wa}4a8hPoSdJRmYJ?sk(*=N@5tAzAmI9aUXoGw zI~_y4DBT^eIbX4E2vBe|XjpoDebl9!d!L;BV{an8Foj83V%D=)PMdNsE7zpGR&t(u z>5}lIV!P+x-ZU%eO}g)OWMNb83-3=`*f{&nPfA=kul#b!%Xz*V`HCMlop@fFL?5xYuYa7 zudD$mK5>8MGIIkX14BCt0|PtICmH$q*?L*Uy}^OrhYbYkw(Wm(qFYv4^rPzpTMZu( z5ti?2b}47qa+jU-xzwxl_x-b3>y}x~t;{UCUw*%Kdd&7a4I%|hb-s-!KYORfR2H6F zH)(A%BkMHHLe=pxxX|D0FNY3-m^`FOHoPD$R(Nf<`>qcGu)%)1fUwxDI+ww%{ z(%cZI_nYR5{QK)}`^DADqek&>_zb`0zoiUoXWS`!;hvYv{VKcf8l$wgVcOdn3mRCT z?b&qWm;2)^{>#^d%kD4*xj)#_zin$>M|_@0dF&Wj z{A#O_u+o}5tB&hIY?d*f*WG?tGFf29MgEM{t61C?u2}s@c9wZU>DF%x7UbUC(6;Tv z%<_Vj5pzt0JvNB@on_o3oNf|jExWHaW?G)1=Ola7K(Y7T7VixV41XX7rF0)pXIH;q zSJs0Ec^edXSTBU`YM7SssB!h=1tBk3IsSUwx%d6tt$ph>o1HpKt~af_-f%5xo==O> z1)Jh2<#T^WRX;krvpKz@BFl#f`IGyc}Ygy z@1{hEuNAxVmE|i_gvJC7i367&hwHw46Za|YpZu(z0HY>B9^cxnc7A7fI{!E`nU|-u z$J^b*Yo(X((>+RN6YhH**w>Kz!u!*XD$Z%=CnYZH+y1yBbAIVIzT$`T&fk=N*U$Ly z?DA4}-Nx$oLM(5uc^-Jw)BB+JlHjRNOCIq$N}Mlv-LAqudCt_r{kQ+uFL?5x>DjK@ zkE{VGKJh#IT4Dnu14BCt0|PtICmH$q*?L*Uy}`czhYfgaFUKc7bz1K0dVn?a7Nd%Q zhl1ip=|>Yx);Wyj=X$j!%Dj zd?&AM=P6n(>ge?Rs?^leTqW04FMV6JPgs*%#EgrRTldw1tLgz74bdh}&)(^8?Q<$R zxhZJpfD~Z`jT%#@3l`%?(cnlZWm-AS0v~8=laiMFV23AKI%RDQW;ZpTv#ptxhrqY=VY8z zU1GhmRmQn0EI!9-0O>SZm zoALQn(rfwN)wVv-{x=G_J!Bg%+ugeMOHHortk~V`Bc~Uv?vXk+`{2sjw~d-zGA2v6 z{7&OJcED)H`bBe+pEZ{#z1gw(@zL8q{LQ^g#7u?Gm`y02zFy&IV98GQwVMsoemn9_ z;yru%q^F5S&$qe-hvz@alt+!!UwQv#zXL|5IWS^5fplhGN@|5(MoF$|Uto5#fk^B9 zzoOf37HijjTdi$GnG88p6!nhVEg{EVBdSWJ=&QE^R9Cp`*1#WAYy+|DNWrg`(TfB(}bTU+jNduRTJU31N2 z$H?MWTaAR3*5p}rTn}QijQPCo_QR6N0y{49XRKbu;PND(%o9qtep|30_vVJS zZ69Wq7p#n!VEPXU?G9Ez?9J;vO8ZM3wd!)_y)JYPbSXRXU<0--_Cmc zMr~%L@usTel?~=xe}4+?Y}qF-aId%{a-nvrWXp=JWn141MGJ2J5o*-On=^^~^5hwh zniXEn6!GhGFka4ebE&CB#H4=K8`0qla{af(2*z2hss2_rU!W(w^|nb@^UmgD|K&CJ z?VEV~%Z(a_0JxVF!g6do?w&Yz1L)GTEDQ|nKrdzF=V$9>6@&fL!+Y0f3J|0Dr#0wc z)*S-@+w1X$FNE}8OL*zEZfF%TQ<>nDP^)d5u{JXLh<2`OWiRKy?^!zQlb8Fh>0VlC zoPSUH{7mTyO#2$_r4v5AHcyQyEk2yLcyl{X(P~jgr{`YZ#waZ%eP~ZxrdAp8WchYJp33W#j7Wd9%tM zT{|YOQPt~lJmM5b>d6NuE(=?oD!3Ht!CbNL_S*;s&+@F;=)_&me|jgDtYvvB!WPKu z*?ccVtM!@U@1I}#RJP1M*nH^rirE?V1(CID=3YpB`@Ov1-}@GC*ZC>_8e&uYkL7*% zkn<(;_wr{`d;R~-IxsW*YsQh8+y1wS%T_k*nCSIFEqBQW?+sE5w=emxw(JTY?<$$M z`mer9o6SDE^!}C-zbnz-tSh##N}j!7m5{A@ZOwgYkqyV^To-HfxVYom;gYYMyxSX| z@Xh&lao=_OCyBpv4FAk~Y4{>*@w1P4-(J=K_YrYTTco$n{=)Jtv$J@Z8%;NeY$^&W zIa)Izt|gZDQq5w!eI}V&iNehXUDz$lD>)6cD#PYo?;y}CWY2#Nr zXS_RScXoq#Saf;S$xS>*FIBLZ&bioM(k#R{@hW3~=nCwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI z&se>R#ckn=)sJLnnJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsR zKE(^4lZp8b8NxIdhj4`g8~ohh0t9M z(=r}4uAaOgY?$oIsej zr13J)Jb0-AGz?T~;4us{Z6OSM+xUiw0Xd}sjRU1LJjP*$Ji@pojk3T}4IU3b!$9$X VVHhhLC`ed<&=MFzD}h=V7yy37NLT;> diff --git a/tests/w3c_tests/test-cases/i18n-rtl/034/i18nrtl34.wgt b/tests/w3c_tests/test-cases/i18n-rtl/034/i18nrtl34.wgt deleted file mode 100644 index b6350d1fb153725f256be48d7aeb376856e9610e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1520 zcmWIWW@Zs#U|`^2xD=Rd>wUlPejkvx9f-LYWEhh3^U^ZY^(u06LPIzinE$9>^f6Vv z<5OC}&A`a=m63q~tk<^Bk*~=>!1eo_BqQ$f3lcFBIX4TLb~0>CzP)5iO4OR;;!}Q< z=YPEaf0IS7M)PH^yFaBYet)~9xF=nHlGE(ZmpB8xGQDoQm?^1zT&?m(`-YPEGIhgN zcE=fMK^A=91s|IJEM@mLFg(t5^4Qhvh(+9zHza2-T<5QLUtmje>ur;+!#lfw{g>C= z7jrUs*Lu4ExQ~n`W!ug^ca!@f(4lKt7#P@rKFY|?&(_N-27AW<=oKv9>78`2>$ZVF z+xf4-JiFF7Z)&?F$K}lx?eX%E7}v+OUlv3NN3T)ZIY}m2Y=5=sw8yvZmIcS=oVEY_ zS~~OGohFeFY=>?!P0qK^czt#E_cwZ$>?f7V-6pH}T$~f|dyUKfV2}Otcd<|0G~-a% z#s>*5;(M1dak+l%2|ICU|1+~?6Jm>UN*<@#|%IW8SFN zsx)3{dQ1Q3_2c$Fj|#afRrYxQlKef<`)ht#(E82w`|2z99Lo#b<7T({NBpN-v#P#t zet2r>m)(uV;b*TjZ@>GY*E;GGN2c~xgWPLgg7@l8J@-%kH*3aKvHpxe@fZ6pN7^Us zz8iOL_H@18w!FhX=Eiv1K6_!aVXH{CSq~4FMZ!Vpc4z&JTJe-$yqvn_4Oe6?rc_G1jnVmEwcsHXYhYK z`nJ#9D>LVsN6XuV5B9B4IC}L>(fUQ3P1B|??3-qL_FPU%#J=0l6SqhP7H9i%uQTcu z3XooD8xa{MmzQrZbXgyfB3^e!+WyM>H~SqheVYSQ1t%~?Wag!$R_JAvCNbCK-qT6p4YuA2U=*_%{FZGJZ8Hw5+!__l0l{~GU?T-&&`~I?E z-+Q?|+L;IQu5%sxa6#puBdhMo*4gUU1A2mdEbeY%`Cb-rpxyPf@vEIP-kq~MyFolG zy1eS-CZ400Dp*YCT z|I;U1TkdgtXa0s=bIoJN$l_O9jf9of7`MmD-!;;AYJ1+8PtX{?9ws6Jj zN3yfb6H2#!Td*Ma=7zRyA7+*ptc;jrBJ8n2-0v*o9^rJ8C~Mh$wK3E33_T~=BLeJD z$x9o1-)-^UzyR|HVo(kZeE=J~W3U9c&hQa<;0RQ02?JDbxhDzbc- zk~`%hiGcwalMHVgK`i6~ixpB}p%qrh=3y2P2=kUSUILm2 zFD`(Ffr<+}hGC{Hgkf(RpD-~Xr!=5(pp=HkILweo7`LQR6j+?W;{j+GC>}5jV`T#c Q2@4Qf0z+saPzwVC0OcP*d;kCd diff --git a/tests/w3c_tests/test-cases/i18n-rtl/035/i18nrtl35.wgt b/tests/w3c_tests/test-cases/i18n-rtl/035/i18nrtl35.wgt deleted file mode 100644 index ab6c8e3033fa43a1470cfacd3c23f72afa19eb12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1636 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 diff --git a/tests/w3c_tests/test-cases/i18n-rtl/038/i18nrtl38.wgt b/tests/w3c_tests/test-cases/i18n-rtl/038/i18nrtl38.wgt deleted file mode 100644 index 36547c4f7a29ed880022104875c5c2cd427bd7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1250 zcmWIWW@Zs#U|`^2I31I0`?&uZb0Ls7ABeetI5|HrEi+xOA~(miCy?u~f`H5a;;vNw z2SJ~No2sSm#ZU3Va-Llf6A6+NdYWRqV zuzXjuOF6riyX>UTrCz1K@1Mfrm`Q&_pATU%PiN-w+;)(|z00v);fCR_QuecY8%|LD;pR0t1ZjjvGt{#mz~h3i_49iZZ3I!;e*RO;&v!1`twOCuVBUr-a>O`ykGefw}-u?6O;cO2L^9Jkoa8KdN z_@c;v@8({3d@q0fd-=XfbB%vRa-M&#|2+2M?3=xhmilH|H|pxI-p8K)>YKFRmM21& z=7u=E-!xa`-(PpzFRoS|HHv@3XZS7uEoE3c<4)NN_q<&0SJ{2n7^S@p)85Wl(7^g^ z&!!u{+#hH0U%n<>c84j*{lS+0ZCmR)+7masewX@a^g?TK+sCwmtoZ7LE+uzg&9`+D z&4wFzo~_n+KINyvTn_8EZz?{T)xB`*JhsTK=_XszyHBD^EV}f*uP8M;mScayanr&| zOY3g7){FP}OMV2~ycI@^)VzPQ-vJ}j92l{jKsqxoCAC5?qa@d~FEG2=K&18lU(xM1 zi?wS%F7#$z#Fu(SnM$5k&-TX$uzi17uj6DMJ{EU3v3xI!IMD8T+W6JZ8Sl>7o!uZF7F}L-aud(dOBF1pb1wFmGz&3K zyvo=gx`?>7-gjHPH!v{#ff$t1eLS6A{eoRt z4<6)gP~c&`5W1^jTE?Ts)sq*5ykO<{>v8Aa_j9-QtMXh5wC;MtwWN7IEk+k? zil>y%{T)^P=O*8031&I Al>h($ diff --git a/tests/w3c_tests/test-cases/i18n-rtl/039/i18nrtl39.wgt b/tests/w3c_tests/test-cases/i18n-rtl/039/i18nrtl39.wgt deleted file mode 100644 index 8a6726ba477b8587cd933827f4b43cc31a28522e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1756 zcmWIWW@Zs#U|`^2Q1nl>mD?6^I3CC=17ZON83sM&$?2P6p9*0WckX-zyLPE_KYJ}gMt9-h1%s3&lvcgEpyuIoiJsBn3aL7{mK{X z|HbdgS8Xdz>^PWs#aVC9Y{7?K)$91opA{^uN3TaEGo*PPP@k+ZLSwbYuk(a{(QSa3BPNY zCq4x`aYg`&6I*u}EO}s13UuPkLZ==VKU)fRc8D$R7t#!`@^sB;4R4Rl7jV+z zo9)K0Yj*zkqyNs{=fl2jj=PI+OKd=LHJ`13S=-8Tt9ydRfI_2X+9% z4@(&K1}A3UHW2um^Pg)W|IuT|E_^+GO-EO@WX*+x3;r^9l@_{)YEFK_GWps5_kLwT z=8HXh1t;CxTmF8@BGsyfZ13yW5W!-;+HN ze9m2Hekot}!uS8TIsMLg`es$ij=Y5_TVvO?1gA*6_Pks;@LH`C7@Y{xdgqAL~TOtjpXa(B@iIAlo;E&v(NcW~<#h zI+h+$`qXj6smR3n$`gCJZH*ic`evFxuaNTpIO9vLf}k?r#k@5&FQs?QO#jgM(dlH< zaX0ppX#w5Wn3XvT7CO&ZCb2Ha{hR#`n3&Ch35FAxSTgfcQY-W_N^-%;MQHv}pBPPy^laJ}nB8n3 z(t7`|==Ph%+O;1SdNVKLOT8j;MxwUIaP`bgB~Pno`{M)HzP~Kk_g-#~cILsn>s-e^ zTu?da$f|p?b+-ETfSw>9i@TdxzL!NDXm>qr{A%ZncjxTRZV(TPF0VSdiRb903Kr8j z7yC<^g%~GZW$X`KAs!Gfu!R4?4$B86Hf~9AjOshLvkAUw-u&#}|Mbb$mV4aZnZIGz zT=Up5viQ|jBVnaAc~%|QgV-!%KCip|uw=5pj*I*mt5>nOEnKnsk?bt_hneLCDyRi%35|`ZOpVhL(fU}hyXiO^3ulMcU!zSFu?qQ z7?itwJe^(rf?dJEr7dCZ^I8=nxL6M!?=@)1mDE;Cw4l_QHjav;YKjE2R3 QfdZNp2>XFvF=qww0M%TCbpQYW diff --git a/tests/w3c_tests/test-cases/i18n-rtl/040/i18nrtl40.wgt b/tests/w3c_tests/test-cases/i18n-rtl/040/i18nrtl40.wgt deleted file mode 100644 index a38db17a8765e3f939e56df9b48a5ad3a5e5fa0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1450 zcmWIWW@Zs#U|`^2xD=Rd`(V0`e+rOS3B+6sG7QQ2d1;yHdKI}jp&^_M%zxA``pmb! z=u=w3&A`a=m63q~tk?F8BUiJ5KZ=>JJb)P6#4Z7;M{NZJztA64yIaCYv9$oAcc6##c;}eMo zb5_5%ZGC?6;{M*aaCf%nCfmkHeE7N*XnhL{0|PtIof-N0*?L*UU`NVEUi8@x z#AuG}opjLev4KF_`Ps`QemboR6Wmbk;AAVpxy3_4@uKvj2gfcSQQEqD+hr}M%I{x~ zWEM2!UY~yC^MB)i$L7hJE3p1y*#GRnlcQ6O*8M6yw{G&>={!ZNMLnIKe`T9`nyX~H z=%x3*#ri>FIypi@VNoUvuT5}RsPOIr$IRWySF5&qYXX`aCG38y?#H}6x9pLd1vuxGep?19UVe$Hf_xWoAMEUwL> z=kIeZ&Q?7UEa7r>cGW!}t=4DXKYe@{Jh9-8$2-pTlg*OiizENeo_po;oAU18?ZI!@ zjv9ViapeD`{N8)_{;jM`4gNLvU|;yx3(dy9-+8U0ig;hfX)XMIGmh*3zsZij3~IA$ z7XDgqF#kM%`jKyiMb{U~@9foGv0gQbJxA;4l+xrTrmz{GZzUb?KV}-YEI$86F}H_o z<7K;BbH6UFkT8q>vR+WXd7W97OuqZ>cU#>9L@YU%Zu!l`7Mvidb6Vqh&rgN79@ei5 zYd-4zyW2ad*R_}BhFHH~SqhWtszHo)Z}BnRzLx6?z#Zx!`!`ntv2q;xz3G%x*RiX}$kfbo z?b?qEy_pyBrCt#^BT?I9xO!%$lBdXMMahmQ*uY*#)Sg^7z4Z+ndF#p6)qA$H!&~( zW0K)*BZ!4u)UZN|8nhgYY#wGIfG}@K;|id8@FD?d7^q0VV;E-ILKyb8aUK%`a!Lal t2TEypjKd6hgmFt6&oeV1;sIzFC>}5jV`T#c2@4Qf0z)VoSjsUl001B5DVqQQ diff --git a/tests/w3c_tests/test-cases/i18n-rtl/041/i18nrtl41.wgt b/tests/w3c_tests/test-cases/i18n-rtl/041/i18nrtl41.wgt deleted file mode 100644 index 3f56685c440e3723206a40b1aa4c8844b8a7bfc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1249 zcmWIWW@Zs#U|`^2I31I0d-%GKU>uNF1H@cFoSdJRmYJ?sk(=Y%9mv(7Ai(E3;w&nlJGyN*@ytkl{Ob(&pCurTUpte=nQ{UuDFzv(Y~ zyl(c4=Gm$Sue+NrF=d#kP44uo-ne|BnPTB5rTy#UmC26mt; zGV=4Y^|Fe4Cmr;AY#`8fe)jSWHHx9DLp-V-qQ5c-aj1kvb>0(TH=nmmY^CfQ&)tHj zc0caC{D8sx`t&28&;R*%Y~J1tKAzv2e{M~QnH!(c{q%hCK96s4n-u0;RPmgA-TJ}| z(T3})7v6^!s|U*k{ZJ8E)0@+DJ-}h1!n=cBQy-V-)pFfbogMXj#h;JS$@79$)8&p| zRXuluZ;mjlPuy*bwL<5Xx@%VYb|h;&UGgdN{>1I-r3V~ZRWGpq*;!NZz)|JhnZ#hH zZDK!*6MfgJJ{1vj`0i<&zibOz_3mG_{|~Cjm`|!cBo|Vzjo|+eWCx(IngWExnzv&LW@rAHe@_`Z9?}g$K(8B()yRz`&)1v zZ?HTpj

;1o? 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 Hn}GoUijj!@ diff --git a/tests/w3c_tests/test-cases/i18n-rtl/044/i18nrtl44.wgt b/tests/w3c_tests/test-cases/i18n-rtl/044/i18nrtl44.wgt deleted file mode 100644 index a4d3c6e0a8087347b332f91199e9a40c61b58ed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmWIWW@Zs#U|`^2XkA=s8}Ys5eLawO5Qw=LWEhh3^U^ZY^(u06LPIzim{09^=W`Z_ zODnh;7+JnDGBAMkZq_{S`Coyp{F!7H8)(k zuCK3uUEBQHX??Hj=e4i3XK1o%Z#w09#(R6H*V*78kCQr^LYZELZwd~05EKxw;iUH& zU)P}Eh0%;oqF!Zree>+heko*H?{M19aQs0+iKEKh6}xg4^lf;|#1H`Y!W5tvCh+dv zv>)iQ$t(;E>_9JMg9STttu@3RbCfRek>~6=^uKn|lZsEbOfMf5y8rm`Vi)-xjG7N*Teh;O+1G>| z+ZrDJW|sxa35D%Zf+{6%%U8r)U9dZQ;Vz+a>-kE{tu+l;&{HV_d0RVC9m$R{T-sjU3}WZu@ww@~@cO^Y{C>RehO8 z(X}a;-nAOeU|yZD^=y$|1jnV$4c!O*1o}T-&zq8=ldUrI?ZRj4?m2aCep7TlD!q7( zU-KN5>RHosd}chd=6QUk?#Jox)3<-we&p`*AJ@hAGa};uLP(VDue^V=-vN`aIWP@y z0^>h3FD11?FQX(EoC4Y>AH$Y{P5T0~n+-%-@BbCuezRD+_Txft=0$v|S47T8)b<#z zo|&oSY4vP>d;r_`mj(OY%k9z5JeYT#>)3}2DhC}|bx*d=R=*z56XauYcN5F^vWNri zuBVM(?VR!MoZZ-BzuIafth6T2s^fYPn`O-Bb+;du zOcvO2kw0VgDi*heD^@>}on@X-y7k+F1-Umjv~Bw^v%Fws#2gc0j}78}XBqbhr<+7s z%kHav#VdQD>%4xB+Px`?yp(QYc8i3^;0|NjIzdo%1 diff --git a/tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/000/aa.wgt b/tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/000/aa.wgt deleted file mode 100644 index 22ec6df477b46a041dae683db4aae656906160f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmWIWW@Zs#U|`^2I1`g>%OdnE%9xRX;W-eq0YwuN^{O%pN(1)#9X1fiJKgV+rgCku zu+Bz-=+|zm8oE}kNYP+kJXyw5VdLT(p;0T}GjaPjvb;acy`jjD`7J~G+;_jbw6ONA&ia0Vmr{%ET*=@n${#sMVWf;=s9*{qB(&i;hQxhUS&N zTV<3Mw0Wybxox}m#Kr0?>81r0!JjQwFaNo}yuNq&-{<#!Ut~{w&HiL%Pr*YqwdcpD zZx`QO{hzBN#pKu$HRpU2nfn(ONLkwiTol?8nP%~VO{u2K+jM&1`XeXoR4i9NEl@h5 znSMkju0nZYnuKG+!Wr2tlNIjpDqd~qW^#5`UA*9k`=JXpT&q}4Z`~4diXm;rVv}v2 zLZZFz)ZZ6{UC_Th_wcp<)^XA%g_}RV-M9bS=9kgA`KRZF4k7Tw=$0Vu)B zFvYvW9~hjmK+FZi$@zI{ndy2JxjCCPJ$3aqZq_{S-zfo*R{>Bo!0ldeqQ@p`wHE#O^-L7^giRe)!S#wMRwyIISY!)%zh;# zGoo5+|L7IRJfL-VfS4VKGxGDZ^|FdfdpGhmIS9C9zt=VkcU1Yr*wS?D$dN-G_8T6G z-Ke-DSa$KykN0v@Hx|tDRQsGJw}Zj@hGP(~*u}7AIuE@zAMbl`(&~^?ams7cLf(S^EvtY|e*nasK%AME zl3JmcQIc!g?aO`0K)~hwU(sy;s*M#>O#}WgI9_O$vsrfX(vn_Z&ut<9_g;LJn|4on z&f9ahU;o|2ewbg~DCKnDk%cz%Hq0n$n|fWp<4@6+liDk9S^Zde`L%)b>2kiGA=cyFLbK*<3VCqACeu71I; ztOpPBHYo70UI^XQFfHRzpBAGF zHpNrQ=l+hWesp$cb9zNZmJd^MN8-kX0{?(%fRRar8F!urS_%f+8bK5!hokF3Pp}Xj z3=G>E!+|9OBKe~0Lr-xCedmDspy>}?6M7sYG)-heig9#p=pl*Fmc$GX*8p!;P&vlH P3WU5sCtLzbF)#oC#`fo} diff --git a/tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/001/ab.wgt b/tests/w3c_tests/test-cases/ta-ACCJfDGwDQ/001/ab.wgt deleted file mode 100644 index 4401d4bdd4e8f266bbcbf7a6dda5ef548c3856a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1211 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 PumIsrAblPv#lQdnMvUnA diff --git a/tests/w3c_tests/test-cases/ta-AYLMhryBnD/001/ap.wgt b/tests/w3c_tests/test-cases/ta-AYLMhryBnD/001/ap.wgt deleted file mode 100644 index 393f3588d670f4cda0ef81fa7edc3471386bc8d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1357 zcmWIWW@Zs#U|`^2I1`g>%W=Il>JE@s&cwjL1*DVn^U^ZY^(u06&R#t0ci4c3;X(Dh zLn58?ou{u!T|8w?5PyN2lZ}Iiv$Ur7A~lW2Z!?4KkLdkNxw%Pq=KU$Eomwur?j4hx z*8j6>_;JncxP1rT5@WX?3yMCbd&WdX*RP$H7w};2Hp2r#G8`P~7C*c4-r$*J`Mh1m*|s+~ZOnu9%xY+kN7u35V1cCM?)TCF1Ik7u6b1p{3J$kaa_j1{tTVFI(=W`bFEbR#~du#pa+Y&wr zzg=7_KTrRebg;?e&dyTb)}LMC@0VWODl{cn%H^v1*F8H!xXvE_^z&uA=Z-v;?=9w@ z(i_+BT=OqY{j1UMzkfcy6x!`r*k`lphyKrVFYexTKdU|aQW;lu+*N1(b0&Aq=VY8T zUBbSy#qJ5a=AYmGY%i@}raaRAx&L5}ne{!v<^A2e`Tm~B&GoF+y=av%Q$+IhF&5S} z8y;*u+9%(ey~ihde!&B=306$YYq#uvJ-t%GEc)AeLH*`+W?3@%?#th8bq^5P$+2|H zZ&o(R4KmYauXr}=r@~y1-R}zbREpbwb=T~5?Pa+k#`Ug?cZo%3-8DoEnd z*$F(y4W)ef4%xLdW?d*c^m9?_k2hC@-L|^db2kahcU$g!;^nKmhgWSaIrj6ecc6&I z&GxrB|E|UL8YvlFeqgrPmnl}^mB2yn-3Nbe@a_C9^C5~QUGSh{Rr>n>^M_)Ube)DkSr;wL^3WptkeUwwI*y-L}eEFI7lC+;nlXZThg^a!Lws>z~i1-6B zD5d*&I=lJ>yRsfU$lIX6!+IffSHrZ7M~$l|F9>qF0z5M2xm+ZtJbu?o$h=$gD|6vj`z;{vIU@rD7m!ZQ&r8cp*Q?0QIeX!t-(dqDh6~mE z4vBCcTj+glQ=nJaN_Gon-`@=r(sGyRX!-^myMKAvKMuXRO*uEG{fwPAc|pyEZS4jc z7Tf#fj!ZYR`r}lfFxN2Yi3$fd8CxOwp6Q9igZ4?Y;ec>EZ`$OB$pA0miBDQxm5b(t>*1y zi&v)mmJ>2EEOL>l( z?~#4aHvO49chmKo^3VLcv)`~Cjej!nX#L4@xA*V9i|Xfk-R6|3i2Q165xjl>Ll^IL zind;=Ukt6i9^S9NvV5P5J=gsc|7FuQ-~8DZVW*R4{Y82ER@SduU0yfzE|u6^<`Zy$ zt2iz)=jX*8x0YwVW_8bFT&Y}e%l-Cly)%b5++0-MTOnC8HSlnSvBlQ)whfC;gla6k z%PP^+n7ZMPi|O_=>@Qt*-sU?#d;7=v`!r5QT=8hgRd}v<-=S;qi^p-U>B(o#HOuHo z&zhd$GviV8m&Y>y)Z@NzqDH1$iwfUoU?e&MBa{Z)dQXhYH*@pJJiO=3X2tBJ+XB8yz=8nZ4G9s0Q_^~akl!fspL>$#f*=DRI-KJoI^-NUQ4mK^(e*E>)|<7WHY zoPXEidX1EfEv8Aa_j9-QtMXh5wC;Mt zwWN7IEk+k?il>y%{T)^P=0iY=n;?5be;(*8K7%J4;6&Am(1`m3h-uS14*y|;Y}bN J2`niX7yu=1IQIYm diff --git a/tests/w3c_tests/test-cases/ta-AYLMhryBnD/003/ar.wgt b/tests/w3c_tests/test-cases/ta-AYLMhryBnD/003/ar.wgt deleted file mode 100644 index 50685b8d641805b37ab1b471b4c7546f20045c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1323 zcmWIWW@Zs#U|`^2I1`g>%i45e(k>wHI}mdLadLiMT4uUlMQ)C+@5QXc20S%>3jYf} zpWfDfC9zuDb3uK8#&3qRABCE;*}ae6y?;Kh{m9EBcRe3_-!ESqAtoMnBJE>oRqBQ9 zpZ)3-1=Xtjt#7yg2%a`$^;fYuo!v*}Vg=k9Ihe#xMt|@-b|`1ci4Nb2-Ta4-f4H}` z)_!qzcJEEy)uKC6gQoOxeP7LQv(h)kK5K5V-IMdqKCAiG%#RBzKFPXk8hf;lk)}!P zZ4-yjb41TAKfQF4yZE9suf^*YO8wh!@}DsP#fN-|?kY@Wj4`hmOL%YFR!{&i)9vmTb}^cAIb0gxd1z*E8lWxFLRP z_y51YcYnQ6$Q*P)^oJ?)G2Y#NWp-&3qStDumBi%+>|Ene97JP( zTxSpe`T4Tlb4T8UcO2^{t0l!3MgBYIck}d{@8&cOD^XK(-5sqbYZW-62*ePZY7 z@ClDBe(eyyc#~!GV+HopZO>Gtgww)r?GWGRXn*@s`T~$>&13le`Wf#?om|c%RL>7H}Bpo`L=~4|CZdPk{)NyD&dcU1MGvpbv9D=M;ln36jZH!c+T z2h3TFOd`yV6d$bL?Ox&bbaV~5~7QNVO!%PAQPHH(KVq*JVMhZCZuG5t_?j@ c5ZcZ#!^0@Ro0SbD!2*OgfwT>d)(2!{~eIW&BVaK1*DVn^U^ZY^(u06&R#g1*KEMU@W8l| zOMmjW;sr}Kl&xV_;k#WKw3YpYLbHd7jTB!fHa z{I`3Ve=b$;-QOT)W$jy3rp31Z@bO=!Uyr{y_l+xUHLn#%KP#tRiyCX*w7E@rQ@Y;- z=zb^=RTA&l@s&>K361;S>~x{_>{9E(9dT-pv+R`4E!X*c?|se2&8H_wPS4%hXTHYh zlTcQF*}+-PhbFNobhiAyIPd(yf`*UJ-kFuv^lrQOcjFzMqqnp4S`@yg_=!Ccu2krM zVjMY1KV|pK{rPf>j^0Y2`)>c)kkr?9hodr&o|O+k36&b1gN`d085rtV7#P@rp^}lG zpRJcw+&lST-XQ~?w)3xpBX$O`yyEtenQ>%`r_U^tyvuwG4OOE&BPKOzT`7;hGeuAK zc7&eFxA*q*rHdc1EoqSckj>T;T{c^$=8VGjs6d|=du}Z(ifqgaRLXt-%6;M{g~Z1J z8?G(lQ>$fcb^6rccH++8r`J4B=-mv_D!&xJ|LQN>sY$O2b3%7%zPS(;_u$8sBb#iu zo7pa(6zn8ZtGQTbcA0Et^{H!tw{JH6idtBDKrP58!dguuq1SS~&bB`pF>fz#`P!tsz2SLof%$IB zolm@cb@%Y9ttH2P-t`U?(YV?EHs{~9xLzYAqstG>7W*>AD!dXn$i4gE&keqvzhyo| zv7`$gRIEy0|G!>r$MsjHPwO5FMZe2h(pJZu}JT(of;AE#elI2&7SC*&?6q9=`pahgC_%Y fZRnwb(Ds)Z9!3G)tZX0&79hL{q;r8K1p@;B4XHfN diff --git a/tests/w3c_tests/test-cases/ta-AYLMhryBnD/005/at.wgt b/tests/w3c_tests/test-cases/ta-AYLMhryBnD/005/at.wgt deleted file mode 100644 index a89720bd7a92f3618431ce254a09390fc9b935d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1216 zcmWIWW@Zs#U|`^2I1`g>+qA@`JP62(2VyQDPR`Fu%S_j+$j#ZTdEUps+zEZH zjiFoxJbYoBm?xV3QYc(t60%a3ApphZW>;yQ6^slFbu0`F>_D3{^7FIxvWj~rAIv*s zz|(gAb#TPa0G3zWJ~A_oZ1MD&Ws-N9Z=s=TlxM`GCao*w@pq=^$=;68Q~CDZe!g_^ z1GXg%(jT(fdaTQ4%ha4v*d7(=^J34fg+-B#d4Wo~?_ar3+@z5BIAFuIMSNxN>BZ?RGQU<&%P)WNI}R z>&z~bt*k!vO~P-N(8|xxf1c*%_Iz}1&1&y6*KF$bd)7@+@J$p5Rex1syi#OV`_;>z zW_#|)oA8b!f3jNA{esAU=lpKIe)IkF@u#L`&5!gyop`kWN%i9I-ThtD&6d6u;oGz3 zm)x9{x9=A$QZ=6-w^ZoY4B4e0-rK(mj$b6-y8g+3w#_%+)VS-&i*1+vHSzY%re9GD zOAn|8`9xT&X(aSouGiW2CnM(V3Wxl%2Jd1_^Zn{wBJp9_Vz*O zS*<#&Ac;q3C-59Ml=9^}WY^M|b)o3c&qb*}-dquO+v;A=-6SyIZMpM_m#^*~UbVI4 z*w4G(fg&0=+u!E=yB61Lq-1pYf!ShTrdWkn0tdNwAN;w&xAV8mhbWeG!Gnrb>FfX3 zi|x4n%Jga7qo~Z6dpZ_x-o07!Z3{>KExAi2Jt3jpk(gj>Fnwk?8L59@`{T@BMR9yP9>yddNSE5~1tJNLeyyR~nf zX0uag$@Qjn*Bh=S>t7x?od0rF`!1sOm>&cQ&V2RAl)uC3hrlTqy7l7!!<4BFwn6 zG|*Bo*wzT55E&d@A9{v_=we{l)>s8(LbE5jCiI9$XmV#lN(SiK&_e~GEs+@>MgiWe RY#<31AiN2rF9M|)7yxZt>y`ij diff --git a/tests/w3c_tests/test-cases/ta-AYLMhryBnD/006/au.wgt b/tests/w3c_tests/test-cases/ta-AYLMhryBnD/006/au.wgt deleted file mode 100644 index 6b9a46bc5634e393fb53f97e1c478ab8e59d98fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1215 zcmWIWW@Zs#U|`^2I1`g>t9mT=b^wqU4a8hPoSdJRmYJ?sk(;ww^SqCzzi!|OpN*kj zI$MK+R-8C{QhQtIDGg1{4VSL#>+4_FHotaS-|PB$?Q88Tbi+11-gMIYjBlvMxfA+Y z8$*LO6&HW`vhgB&C*#rur`|9Gpx9gR>P62=Mh1p@76t}(puHLS`Pq6|#l4fx`yDpm zId=Yw=9-unTUP2flreC!2q~zPIm>K1_F8FI%9HcUxW3-)oV{*|fy7RekLmS4cYf@X zp1^cYVU4B1yPK}txDA`{WVsqH^xp6Iw2SL*Y44W3S?^rVC2`F@(zH~}*F=&_L*%He zl%n_d>Cy9@%5I)oed%Pu->BEyW4a;_Y}{97d}G1ZJ%>)Z&t8_hbL&sXQ+7s=B)lY7 z=3FZmdE+T-FsH;c=(+#&^XGNCj>JY>zY?KS`7=!N?bHQxPAROiTlrjfNl-?fIRE$i zK95S3cdG9>ajT{FXzE{U>y^uI=IgzG=f6=}q<*5h*nidgQhWE-ec!XqGBl z1X&^tyan&o8+pWgx(mmj_%HhG^UsHUCbcnlN+sO#lC@uDH(q0$ z?PZvHcgBJS)oFL4-~70^L+!*CUe4+~#+AwiRxZ1D*UdPdxH{j$zQa$M@%@>x!OM)}9&`YD$pE_t-%E_|{s#<_3uljrkX z(t~yQnq_pOXH8G>nGu`)Snem=VISjNKZH?Z)2&5??=vtK9f2{*38XXgQc^4QGD>ny z`wnIuHV|-m|F5gJ%Fjp7Zb{dH8(L0?%QO#<`XmOGz#`ReZBRa;Ar z{k-cPD57z*{cX;_YjM3sN=BC-m@W2YidA?eaFBcV!Jiv^JAcc3h+;_>Jg8WezW#r` z*pBP3OrO?0ipqSsr(^Nv-J2!fws7R%lDkyW*AAxNJlyyx~& zHam5eTyI);z2REYJf9Y$3pT}5%IE%$s(y5KXLEW*MV1d!a!2CEg#!N=1H2iTM3`~s zXrQHFu&oh9A@Vo6KJ*+3(Z#^9t+4{ggyv6lP3RGi(B#I1lnl_dp@#}WTLLpYi~_t_ S*+3F3KzI{KUjRxmFaQ8*VeM!D diff --git a/tests/w3c_tests/test-cases/ta-AYLMhryBnD/007/av.wgt b/tests/w3c_tests/test-cases/ta-AYLMhryBnD/007/av.wgt deleted file mode 100644 index 912fce7c8b84354bc917640ca69e47d70244f418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1407 zcmWIWW@Zs#U|`^22=Y(1<@M+I;SA*Y0WlYY3`25$URq|lUPW$BXb2|*vyI9{pSOA+ zeM&3185mie7Z)MWX}x)! zreXBwnsA9&O-IXC$B^2f^RqpdUa(m+Pj3H=me+1Y{uPtA2>xz6{i(bxNPqKv{b~Kv zZ}4{QKcU?Hf0BHU-JQMRd$wrirU!i9Bvnq60?pNmp|ytyLmw$;6!yGdZa+j8dXMMahmQ*uY*#)Sg^7z4Z+ndF#pl^7C0 zH!&~(qmyAtBZ!4uey~Ey543!XY#wITM>ek=Xdb*E02&4=2=Ew&nZS?@%VT0dPHsTs qK*834;R1_l6c4-Liu diff --git a/tests/w3c_tests/test-cases/ta-AYLMhryBnD/008/oa.wgt b/tests/w3c_tests/test-cases/ta-AYLMhryBnD/008/oa.wgt deleted file mode 100644 index 092bafd0a402dcb79ff434d5825a003bebd5d33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1253 zcmWIWW@Zs#U|`^2I2)5}`$FNXSvin*2#C3WI5|HrEi+xOA~$EV=6N4af8D?nJ{v<% z`ELmdT5;m+N$qW+r!+J*H(a`|udjby+x*&TeXr~1wXe0W&<)%4_|cY=-e-JSHMgDe zJmbARbk&8m7j!*!^#V5)7k~M(@glqD;VBC_G#MCoJ-cF~x|`wngM<}Qeyl#99la*> zJbbdLan~_Eh5!`jeK*~_W(6YyLmdkP13S=p8Tt9ydRfK2lMm({GT>=D|2jBgX8_A9 zZXcN$N49wS%reQl%(u``HOez$Qj^w|^7uPb^ki>G=&5{rZ$DqU_yOCJ2I&vkY(B+h zvt??|C~S`k^m(!8*21F5#=JnK-1o2CCvH+md>pXh+9E!+TE3%`vzjJ;!U%&bO`S?@QvgSwnpH4j5|D<~H_wN3#>1Ipcitz1O^Gj~d%G>t~7O9#~ zkXtJBYliI75AW^Y1;;OvZ(aZ7KilS;Z))6i99jyZMt~{*xZ1(T6xT<8g6z2xsCwHDkdlbsl-dX)3r|D+pgyvM| z&qBSN!8Pr5a}NJM(rw3x8kue_Dtw=Tk?07FP);D7nU|7Up_fsTYua}(>#%`<%lm&_ zy;XibdUi{?4&2Z(Qw=+yrRwe)lytpIL}jT-ef-sB8`|$CK70Eh^sH8$RglD^vlDoZ z8%p`|9kOd_%(_r?=;xx;A8)P*yKQx^=WY_1@3!3e#LHKA53kx@s`T~$>&13le`Wf#?om|c z%RL>7H}Bpo`L=~4|CZdPk{)NyD&dcU1MGvpbv9D=M;ln36jZH!c+T2aE|uCJ|=b`5tH~7;I|>m*w#27$b@E3bWP|HkI@>wV{U!LR%X%Jd6UoS=m4mEI@b@NPh!L HF)#oCi&F;W diff --git a/tests/w3c_tests/test-cases/ta-BnWPqNvNVo/000/aw.wgt b/tests/w3c_tests/test-cases/ta-BnWPqNvNVo/000/aw.wgt deleted file mode 100644 index eca35dd0baaebd2d9cac1a219d70bd5d165ffa68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4883 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 diff --git a/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/000/ax.wgt b/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/000/ax.wgt deleted file mode 100644 index 2f4553fa8460be916dc0399de8fa4736c4188f5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmWIWW@Zs#U|`^2I2)5}>(G6%Hweg!17a>9PR`Fu%S_j+$j#9`<;c~bAi!{7_xcI7 z4c?WLukPpQ;>w)J{rYqBE3_D3{^7FIxvWj~r`T8F= z;AuPmB|Kv1h0I{p2OVV$oGd~f9&g$#QhKkum7Mgr)XVjCzp#0%=TE7fCL81TSKg^O z&FjJF{@}WdM1At}lh=;(6s;CL+H&r-sn&GS7wfc^yiG0E4iZzz5#pK_WpXe@V?lsN z-bId?yZ7Iz;=HN4I_jz4uh-sdwa(ECg!%u>zrQwdHCq##8#EU^lPS~Y2Nepi@06)ny}2EW0m;VJu^eN&Yper z?_Ia&j=U-FIL}WuONuXy{Cm#t=HWNj#kZHY-{9@qe?qzY|D^n$dog>j?b)Q6o4(;` zsO^^rK9_3`cTS6O+%?(jMeMf8hxY$Z@u=;p6S154-}ub)&wph%*2LT?ec_&$%l#_5 z@fzc7FT>QkGZr+cKHIbH#>d5lz5bW4ahKg;3UYt2rN6Aa)|mfrTK7NGN2wRCy7fMO z`{K&pZya4p>cD#PYo?;y}CWY2#NrXS_RScXoq#Saf;S z$xS>*FIBLZ&bioM(k#R{@hW3~=nC zwzk~k_RjnbyXKn5j*-Q$wi*d5t;w_MxE{o28S{DF?T00k1$JEI&se>R#ckn=)sJLn znJ1KP{kC91?#&Ht+dj-JFIX8d$3)m;gSg*W#y!I6CQ;V1`)XsRv>08mDV|b3_jgqFqq94k(<>^ne3+6u5;ras_y>#xMkWzv+!-2Z zDHv>P1W}0Wjjj(pJ3@3ZFl=kA0y3eQ6I~N}oFg=OF(IV@bZzLNg3uPv3=g9KZ&o&t P1Pc(}1k&e$QVa|LA42Nl diff --git a/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/001/ay.wgt b/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/001/ay.wgt deleted file mode 100644 index 11ea725b335b9f222299131801de2e0d7120030d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 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 diff --git a/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/004/a2.wgt b/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/004/a2.wgt deleted file mode 100644 index 22e02240ea2f3f9c00a53c940c59f4945f6d433d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcmWIWW@Zs#U|`^2I2)5}tNPC^&kx9p1Y#~APR`Fu%S_j+$j#ZTdEUplJkI)@*Vq^uv}yB6 z?=!wzy-hY{PDgC^A@p7#{Fbl@!7uI-@k@q(z`=H_cbOdo|=AYR+#sxl{yV_lil{VUXpsV z{`vj>bQR~FlRvB|5PPq7Yr2zZe)jSgrEl%u%gL?J+^(RnIX@sK@ZMajWq&?BoWXy5 zkH2NfqMiS5cO6sB&c0@OxRl#c`)ro(8l{6b{Fh8S>6V#kcGS&t&sUM}i<0>^`HQVz z-@{zEXqtx7>x3h#jlRtE3Hb^f^yw@LS&TGzd7f?JT@TBcr__{^2E7_h)o}Y52!obR7 zTSL$mK8e7FueNQOU7XSn3kr4SyzSTLPG$Q3Au49-xkHzl^4IcxmgPM-K|M6{c~)rd zpQWc3-sqcpXu7HQhY8!>uR3b1@vUFk;K&bmVZS}c*`q~GSFHN>Bf{?KaqUIxJ^%2d zri@>C|7O1frU-Lj>fi*@nRzLx6?z#Zxu$)A+06zbt@r{H1XVq~%h|MzQ z^Sav)OC}5KxX7QedKHV?!WF9@$<8uQDBb#P!GheI8``#gm|0%1GGdO2u*U{*zq5>c zgwsu;tY!Dr#!SmI^qgdm8YuR@+v2@}f#DCtpzPw~>Fnwk?8L59@`{T@BMR z9yP9>yddNSE5~1tJNLeyyR~nfX0uag$@Qjn*Bh=S>t7x?od0rF`!1sOm>&cQ&V2 zRAl)uC3hrlTqy95F~FOVNrV}9u>iCb47N3bC`2KFt`9w9Lv%4PY-=n7GNIWVT@!ko lBQ#B5LP`PX+R#G2t@z@ diff --git a/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/005/a3.wgt b/tests/w3c_tests/test-cases/ta-BxjoiWHaMr/005/a3.wgt deleted file mode 100644 index bf6c5ef8059c659471724491965e6c7dc7dc5d76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1294 zcmWIWW@Zs#U|`^2I2)5}yHMKXP9~5y4~V&dI5|HrEi+xOA~(mj_byk10#EDu=fOR; z4!b|-T`3n75_8J8XFd7|0YR=MfPSC0yv;+4~avTvWzQEGmXcvpG) zDgSLk%O)geO=A!c{BS7LtC8u&F7+2RA7|Eoob$!)oXCEb=UX4gY+Id zI6PrwV0gsBz`zc4P)2@!wq90oZ*XGvZ3BV7Isds9@*h2RjOSZ!q?uJlfv`%uWovpt=_l-)P+hi$amA%#P?|CloE%4EvX7J}(PxtzoX?X?b8$VpTFmKbQ z=tj;^-iPa0XZ?F6A9Ac+U><)K<0zYS{ARQfhk2g&F%cep9`? z%EfwLw)4rb2YXj2-haD1G5cX{S;M7RFT1`FKMnokT>wa78qOEu9Nv^Zjn7L*3)`D3)$+n$wY0`l);JExqhGdkCF^r5t`RAR&u_Un&5 zUS421ZMR_a?AZ}sI!gT>Ix6nQF24UBCrWoPyqoj$vDEsb!8Yo(@}5UJoVQ48$N!v_ z_e`=TVb6tC4>n$O+{o&2u`)r0QSS@KWfA6WhaNwgvcp0qUhuNZ+lO0!Sj|7WwE2Ri z@bhY^B_@0dF&Wj{A#O_ zu+o}5tB&hIY?d*f*WG?tGFf29MgEM{t61C?u2}s@c9wZU>DF%x7UbUC(6;Tv%<_Vj z5pzt0JvNB@on_o3oNf|jExWHaW?G)1=Ola7K(Y7T7VixV41XX7bhG`j(8dpzV5b}bRQvV545I}$f86aYm6Ba;X-?g9d6DHv>P1W}0M0$m?^K8EOGVA$3; w5y*t*YIIHLagNY5iwP+Opld@96@<3+%+4_FHotaS-|PB$?Q88Tbi;y9c%1b)udy-olBtPN z*rv@Vz0de=^)}gfk=;0F!K*hr7y?jiHv5!q{EU%-;V}yX13S>>jQsp;y{zKikc(Nj z4Mb|U?RR>y@Wzc9wr?^c&8#va7dAWoX6`CU?zRfjI?1VacK`dho1S-i)OZ~|tiI2w zURUz8x4=hxn!%s5lH&0{b?!cx$NX^ZLfh2T?M%X}qz=V$oBX|MzoLg<(MFzwd-X5J zCmsvdGTvzjj%xGHO6EAZ^z^wC3k++M-+C_#?JTRg-Zp9Nf$Bi#eYgD&Upw^s4a3si zQ)*;Z&IyR?6J2Pt&|TWGU2Mgt{oDQhYZy+JKXtzEv{m5K(z0#FT}fH&3C9*(%wO8e z`2F|K^N(kqnD9>4#%j*e-<{u=UU+-_9_QY7fB$`Z_;FS_`>RQxJCCH#J?yrneEr;v z+HGZJu|_fF0Y;hO*$+)5k5vinJ+tkW#_qM-q8_e&zGM2Fq=4E@71hZy9>RN7IJfdC zIi8M4H%mSHy#2(SzbSKAyAPYsGC8!tgMZ!eiI)~~POEiDH#grnCBj8+VuVLuTF0zE z#}AtcFy68JeB3mydwGT5FS|({g6$dRVf#Lr-aTXd<3Pp2(1Xc~o0GUFEc$%FgDK{P z;4)3NoYvzf8PbY@;kYK2}#Nv>&MV0N>CNbCK-qT6p4YuA2U=*_%{FZGJZ8Hw5+!__l0l{~GU z?T-&&`~I?E-+Q?|+L;IQu5%sxa6#puBdhMo*4gUU1A2mdEbeY%`Cb-rpxyPf@vEIP z-kq~MyFolGy1eS-CZ400Dp*YCT|I;U1TkdgtXa0s=bIoJN$l_O9jf9of7`MmD-!;;AYJ1+7A z{mbIEaK-9Jva`$+O1FMnupsy5hPG`VW|kMMjF@90?6E=I?=0gU;dGNIYuSCZG1Kx4 zJtx_t28zA!ws>z~VE6+uD1Z2PI=lJ>yRsfU$lIX6!+IffSHrZ7M~$l|F9>qF1U5M2xm+ZwBYOlZDF*MuJD2u-a_NGSka8+xc9 bw9R6Mhf#nxD;r3H1qg2fX)a(9!@vLlmns8d diff --git a/tests/w3c_tests/test-cases/ta-CEGwkNQcWo/000/e2.wgt b/tests/w3c_tests/test-cases/ta-CEGwkNQcWo/000/e2.wgt deleted file mode 100644 index 2fa0e09ab30e0735b6d8aeed70309b5cb48d5049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1255 zcmWIWW@Zs#U|`^2I2)5}yGJ%|Lk*BOABeetI5|HrEi+xOA~#33_aN6H0|A%!Kf9Jr zzq2cX|I!4OJseH;8@Fcbnru{A`SJ5w!|jq4`EJiE=U5!Hnbl@}^}ummJE@;OnV}t) z&&}j-htIg+{%3Pw6ypMUpGtc_{2^#`6A~FKmC+}-;QrzjPobv8p z(QB2I={nj|tzWK>&-^>l%kZPcHm$oX*D`eV3%2AZ-E51VEf;jsPO)#_l)!1eyZZLn zrdIQ)$97)%dHU>YZEnv;=hm$DJ|kxHU!!N;6b0Wzfl&2V6~-$?X0`wPe3^f8!Ci&B zf_{_LlH!XZ|DE%@`T5Ov^M3#5H+Z}DpHS}pKPkWG-ksX8JzF$$)i*p%z54xu&)t7* z!n!+KO4O%b*qx)^TK_+A{x7k)BKs!(w?31$`LOK9nut4PFWmETxnE`XU1OB?HcWdv zV?hJ!vpt(`d|F(%)&KG}?y@^fLGBN>^lvMdo!Oqa+4Z~BN23>7i`zb?6=cO%Gq_IN z9N@KE*+7E%bi%%_EWMfhmpY54%l4V)KVH61<7C7YkA_@@=X&vuU5j5lp68mLe1@-C zMn`(q^wp~~0wmu4b!e~enqJF@8lAuL{>^>|j7D={lyU;;%)FG;3cZYyT+_b5>}CUz z*86`&x8E$*uKl>sn|Tpm>J^bQ616>st7m2^d0IW&A0NQ>{bj+v_i}r*GY{rn=Q{S` zg33WhR^5}Wv(>K$^aS}>+}*_Ty)5EDyX$G=S376CJ7;%xgLqhUdDY2HJV!58u$a!d z*k95t#5nOPV}Ixh@ql=NCHxO|SUxDRaZ8G0RNuLsP4G?g=4b!@r%$%F+~fAn{0+P2 zn#Ycj#jmy+2`jD1v+B4W#AX@udEM=YC6fhqT;$JKy^6(c;fmFdWM`Qtly3dDU_tK9 z4Q<;#%q%Zh88OF1*kgmZ-&w{z!s#Ya*0TF*W2WU9dQP%O4HSFdZSmf~!0-oRP#X8~ zbawR%c4a+ykhejBhxJ0}u7+tDj~Z7`UJ&wvmE*6+oqONU-P*TKv)QS$kZeE z=J~W3U9c&hQa<;0RQ02?JDbxhDzbc-k~d8wo_Re_HX5Cznn1jVpG`hD+YbnAC{iBzso&x;@D?qt+_!1QMp8v)a`cS&fllkJWuFFhG~^wir;_fm-5u4M};||yExZejEZ}ZasS9B-tA_# zOD5Gi$<%5t)|p)*TUmYTn}pvkp_QMf&%PcmHtERR$nfbibSwS^O2le9&N`&9%J0g@ zv>;6r{?E^s%d0)y<+w|Ej+*b0eNQ(1nLBsW^PBJU<>sH;C@oSy(OvAn>V1j5JAbdK z$PB*amvH*@s`m$H?)uBC9#zEo(obt)`At8r|Nj=-ebu$ntWo}7KI3d!yLHmf4Ljam z=)ZGI?8^>|j7D={lyU;; z%)FG;3cZYyT+_b5>}CUz*86`&x8E$*uKl>sn|Tpm>J^bQ616>st7m2^d0IW&A0NQ> z{bj+v_i}r*GY{rn=Q{S`g33WhR^5}Wv(>K$^aS}>+}*_Ty)5EDyX$G=S376CJ7;%x zgLqhUdDY2HJV!58u$a!d*k95t#5nOPV}Ixh@ql=NCHxO|SUxDRaZ8G0RNuLsP4G?g z=4b!@r%$%F+~fAn{0+P2n#Ycj#jmy+2`jD1v+B4W#AX@udEM=YC6fhqT;$JKy^6(c z;fmFdWM`Qtly3dDU_tK94Q<;#%q%Zh88OF1*kgmZ-&w{z!s#Ya*0TF*W2WU9dQP%O z4HSFdZSmf~!0-oRP#X8~bawR%c4a+ykhejBhxJ0}u7+tDj~Z7`UJ&wvmE*6+oqONU z-P*TKv)QS$kZeE=J~W3U9c&hQa<;0RQ02?JDbxhDzbc-k~*N2`PA-WhCwl!`7GNE}BT@!koBQ!NKA*BFxZRnwb&^C=3 X9!3G)tZX0&79hL{q}hPQ1Oo#AT^0T4 diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/000/a5.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/000/a5.wgt deleted file mode 100644 index a9ac6edf919c3a3f398d60396efe6d7a9c256b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1277 zcmWIWW@Zs#U|`^2I2V&_yYO#{Zak2e4a8hPoSdJRmYJ?sk(;ww^SqCzzi!|OpN*kj zCR>AoR-8C{QhQtIDGg1{4VSL#>+4_FHotaS-|PB$?Q88Tbi+11-gMIYjPF)&ldTuo zjd$d5bp>4x>JIumDOmKBP_b8V?$kRnwzX5fGzJCamN5jNIHQE;&a1nO3=C4N3=Hf* zXJq8(XX|AZ_f84SzHK0IeExHP#V-LlIcMU&ZPJsLEm?En;DWzQT_uGsvL`1$5t;mK z_xp3xWYw2?ewpA={{8=b|E?)(3w*S{bv}$R(A)Rnc1pJ)`=MxO!_?H>jKZh54%PCS z{Jm+rVhX>ijWmn*>Rks@gaR@=@(yb19=6;b;Z$~Vm8nri&i-xRRIjdbkhy2A>K+`<%d7e~&*rtUZEc&+&A(iJ1!*7 zS{Cs^%SMk+<7dUC%KJZ79RDz*Ml}Dng-pw}na(-(XMai89C4o5ZF8)x*k|M4d7gq# zW-YDQvio)PCz(?p16`GO?cS_?I)3Y+{|h!1ZeU_}Ytqj)2#t7L{kvz;f7BH4EAQXz zcfgo82c`l}Af1_)l3JmcQIc!g7nt2_AkupOujuxh#oDzW7kV=<;!C|Eaz>)I$8hz` zOeIgNXZzy=*uK9k*!Ny;k9Ow4yz5-YK3q^a=*X&jvURrl^?;rrAB(%2SiYA<9B6kv zZTxEIjCbek&TbG7i!QG^xryiKr3x0)IT!m&nuQoAUS;eLT_GM2FR+CF!4As@B{ptJ zag6Fax3dYpY2N(o-~aT<)|PwR-kHB)*Ie`1F|zp8RwH4hHF;JY*MrzBV?M9D{jg-R zz>bUj8LL;ZxGh|<`jPA`^Mul^-xe&$y}6-n+lQIu1uG-wmd6a2 zUa)ff^|*8I`?*{D)@e37b(UOjT6ewSTGBk97NZL`#Z$`X{*J1CbarQRdPPN+4^whS z;>Lvn{}= diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/001/a6.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/001/a6.wgt deleted file mode 100644 index da32b4f3f1f45c4801f3cf453b5859e2201b4cdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 zcmWIWW@Zs#U|`^2I2V&_t5N&ju?Wb!0>oTEoSdJRmYJ?sk(;ww^SqCzzi!|OpN*kj zCYytTR-8C{QhQtIDGg1{4VSL#>+4_FHotaS-|PB$?Q88Tbi+11-gMIYjPF)&lg$^| zjd$d5bp>4x>JIumDOmKBP_b8V?$kRnwzX5f1TJ;x%ALw2)7(5Y;nV?{S}&gl?dDzQ z`4|FFT$Z@*`u1=p28Lbi3=BZTkddFCt(R52G}Jf$k%541eqHNp@8*Q!JKT>B=!JB< zoL=SnYT>F0o$MQ=a;}vvSaGU8-hYn650Aw1=aVX)RX#hr**MbJmqk6kV>92vH`2N6 z+0QQ@=$Z85v6kO-gWiuBd6yB9 zD16{ted+vpEBKY(pSY3BbaBej{NlAiCk2hKGi+iItx;A~eKG&>?}vdx@$VF3406~b zTYvX-E}3WTreD1OHDBBG9oY}&8?IlnW7)hx|hRJUcTVr1GB4}YV{-%IWH(A8&p3~eZsw|GWSiw?_C)?@0IWz6S^g` z$FrEfz^HY`QnnLzlbI8=*dKE7Ogtr2A+EN6@zp8EWmDLBUUN*E?RVV!n|#Pst}SyukgyW{cr5+ zr@kkmr)EyNQW_OE@pIsoDAA8u#_nZ5P4lPBdt;+;snBK3I}CUz*86`&x8E$*uKl>sn|Tpm>J^bQ616>st7m2^d0IW&A0NQ> z{bj+v_i}r*GY{rn=Q{S`g33WhR^5}Wv(>K$^aS}>+}*_Ty)5EDyX$G=S376CJ7;%x zgLqhUdDY2HJV!58u$a!d*k95t#5nOPV}Ixh@ql=NCHxO|SUxDRaZ8G0RNuLsP4G?g z=4b!@r%$%F+~fAn{0+P2n#Ycj#jmy+2`jD1v+B4W#AX@udEM=YC6fhqT;$JKy^6(c z;fmFdWM`Qtly3dDU_tK94Q<;#%q%Zh88OF1*kgmZ-&w{z!s#Ya*0TF*W2WU9dQL(M z6no!o@!r6|@CRa0hV=1tcJ&K(Wj%P1w?To2^+M>bhG`j(8dpzV5b}bRQvV545I}$f86!^y&;LXS+ z!i>9c0$K_N+ZsU>qNqaGhhB6*bTKe&Yn%mSLJJafP3Uos&?Lr;lmgJTp@#}Wn>GtP Wi~_t_*+3F3KzI{K&jv~{FaQ9U;Y7Ir diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/002/a7.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/002/a7.wgt deleted file mode 100644 index 6d3becef68a987489042c98a84c5ece687a4e357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 zcmWIWW@Zs#U|`^2I2V&_YxTUkrwGVv2VyQDPR`Fu%S_j+$j#ZTdEUpCV@ zHA4W3%eFs=ei_chz_5#*fdPmZGV=4Y^|FeWhWh3|G7zxMuWNnn-JDQ-m-*2Fy^wB~ z)2m!xEnGFBlYN6!&b6`yD^AtN`_FOs;gMMWd{V`;%4cUc8%G-ZvZ%**Z01||Mmm>0 z`}ySqJ(FHM*7BRKkZZzz+n*tRe?Gg-5;-U7y2BwK*ZOa|-JmBQ)BH?n+x%2*g&BG? zmKtq4G&Nr1s~Fe4q7t83H^d^F40HH;``2(q8zvtz5~*Q1k-U9s(v)poeKA!%?=m71 zg%6yoFP%Sc1;5h!6E||1E>1a`U%WQxq@eM2hD{8jHOh*rFXlh~{V-4{{+&XMK@NLl z>+hb)7`4t=%67tTGIN3!`$I0CiKm1r#MSmMzB=W&YzjNiYmP~?{f>KolMlJdwdL+E zgMC&9+C*(W#&m@0O`5LY>!fTH7xL{+(DNgr$MU+>Vm{s3FF0wn?~|ST6<(RP|BZe9 z)b~X6)XYg&N~7W?eh%CcCHgVT*uCthY5tUXZ)_AU6}qfh=M@+K>6Eg?Ufo0U9V5R) zY_@vqXKE9B^vp4CA-RwCPxaCiT{b?NP<}`H?)Ur25f9U)ZF|(dFTVF6@55qixgI&S zyAKP#+4UVCv=jm(LcQ2uoZ2f8`dBpI@T3H`}A8y-E1JzdjGHJ_M64pwI3IHGcV#xy&`f(qPE9y^~_8qPpfD9;{({f zzbx4IUT%+e=E1z{T*p3KP&w$xs(Z3^w)*veo**BKyPH_Pmqi?CcRg+VYUhl1=j_gI z5D$wkuR6Jj=jf#h7SlNw`%9XI7$;t3>N~fy3BGCG z{OsTV^vTwid)(fczhT#0^Vl)6_|;Y;VWl;BRvp)a*eqi{ue<%QWU|1Hi~Jd@SFyM) zT(SC*>@4$y(yiYXEXcjNp>5lTndJp5Bj%V0du$N*JIlC7INc=5T6SM;%(Og1&q-*3 zV(+^x-WwPg{y+@MkUpNyu71I;tOpPBHYo70UI^XQFfHRzpBAGFHpNrQ=l+hWesp$cb9zNZmJd^MN8-kX0{<8TycwB9 zm~j_QKuf`3TO)`<6jkW@(2EX;E(V5ejkADEXhDLm2|dmcn#7oqQUJO(^iV-)(`JE( VQGhoq8%Tl$2yX)E*+3}<1^}U;L&N|8 diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/003/a8.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/003/a8.wgt deleted file mode 100644 index 088f4a35b2aa5104a57233891e51d0d255bfd3d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 zcmWIWW@Zs#U|`^2I2V&_`=aLSk|H3l9f-MrI5|HrEi+xOA~$EV=6N4af8D?nJ{v>5 zwrmIrT5;m+N$qW+r!+J*H(a`|udjby+x*&TeXr~1wXe0W&<)%4c+*MmGrn8Bw`{n` zZoDIht1IYoPtz)$4fV}`WFTOhU)TEDyE&maj z)T>Hg142(6VUFN6%eD>(dAfi7aZiPsB^!1ZbIz=sSNYk-=bDf3!IR>T);MeYcDsG> z)=v|I#VWscbX`{UkUo3xoA818_qQ|4U6OH<{@J+l(QTWP?-+J{dLU&YzVWY4G~>aN zgE~_;imvwlpW-DFBVz6CA8$prQ{O# z!(6i&%KokX{l(?8!l%BTyJ`Zyk$=ptYfY6gEap|<4mfBo6x8(3a-Y1M>dDixE!=Hy z6;>C_H=KB-`1p&|cjb2veh@0>{bT%Ws>pSt_{zC^oE==*xm}u%9^dV*Eq?6m; z9DB94{#kxTlG~x#y$|x(r1=$31a$Giro#!>jq}hJz)8E*ySS6aV zyEO67O9tt%4@asM!*+J)JI-oxOWCtx&d#OhI`buV>&_}Txwl?fC49EV^M6e%!ufyi zzINL4!`f3Op0BKQ-JjHmtPOLO$$fT0Z~rg1mnTm$E6KVad9~`vSJm}bp{`QP$8M|D~>!enZW@4Z<2-?mNkU+&`ei%;sVNZ;YDD>>eL z@$eFBnZ9|y_j>;S_%SNfPi5{-)dIK6zj!kKuX?K*d-2s4*VF65Y;M1o`rm1(&@Hz; zSo)~bsc+@MFMlTWZ{ZBw`L}qNq~6U_d1vjlbc5{v{@B)RkDB&=<^7xe4w&Z585tNj zfplhGN@|5(MoF$|Uto5#fk^B9zoOf37HijjTdi$GnG88p6!nh zVEg{EVBdSWJ=&QE^R9Cp`*1#WAYy+|DNW zrg`(TfB(}bTU+jNduRTJU31N2$H?MWTaAR3*5p}rTn}QijQPCo_QR6N0y{49XRKbu z;PND(%o9qtep|30_vVJSZ69Wq7p#n!VDCoc$j!OHR1_8mOv#g*D=xzwP~EEC^Xpn)dp9Q($1C!^aoXy!Wlhu)xm8>((l<=Pd2^mQt+wO;38Hdrlyxoky^>xF+W>_@)thPbw9qO zGk2n@#NlTbew<_YR35HPx$wjoxc=5_4V9U z6Y!1vV|HC@s*GVVuL5_#L35#?rhk_Eadbn&t=#KL9AI zODZNxk6lyG>z4Y(B)-{}aY*(2Uungiw_N7^=3W$6eB=JsxO**oLT9RZ#x8#cuAJe{rum1OaA|;SgWNz z>D(Owi^Z9>Y+LHDew(x|qx9CI)Nt*2Z_|DMbz3TQ%b5pDA9XnOEj{?<&!qk>oPm~q zZSV55=cI1?HQ%dyivRjj>mSUhY42CwzuE7AY0jLHfq@f9XXd4(R_JAvW$9vg)2}ovnU7peM-3;_fDv?`07O+Fef@zuGzD-8s9n8^pt+%d1Xq;yHS$g2i;s z#r~3JA;yVU8T&(5hzGj;7AU4aG&+BeKESW5@<05~?>QyXm3s*rF1q*U- zZfM)~VP<*3%7{58!X6vM{mwG(5l%OWvX&~uVKYM|KrZj1K@28KTngEFL# zr?abHuq*4qgS-t2JggT&cQs7Qc+|Lh@`8{TtQ>zm?%ex+?$*9_n$1p~CD)tQU2nLS zG|#8S=z>l0l=8X1qpBaB-PxR8QIX}tl-!ZHaiPFJ#sF_dCJ|=br4i6lFxb`zq7Y>h zx<2%x1EPz8VOwK2kO?hF&^4jQIYJXVGg1mb*M=S{2yHSf@GuJSW@Q6OumIsrAl(C$ HVqgFO>U~0z diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/005/ba.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/005/ba.wgt deleted file mode 100644 index db96c596832e31adadd69fa4b7ff9249cedf2e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1427 zcmWIWW@Zs#U|`^2I2V&_%Uofj=g zwT>B#pR(szJoElp`{G^ziW~h!j&2KMVqn<9&cFaf3>o?P*?L*UOGAD8Zy5;Kn(sgK z`ZSy4XLbShs0dNcX<6bc+pluXtYEsvHv1NzPSn%=*B`TR$VX;avv;J=OTTAhJ=yfK zOTnjBi`N2H$y;RC%=KqB_FB}x+9JAX%SD+Sd)Asi+hjjX5EHniVRlC3zL@7X=?kGO z*B9*Uc$rusGi4ZpEjhvyIzpx$*lqByFD!Uo*#vpRHOe0E ztmZmx`oCaR*n+p$T0dT7G+Xne^SRTSBEk436VBcfDS=h6GHLVEe|GoQKx%t8ETANMQzAhY`l=*>*2lKI>{``MQTcwbIPuCVXi5Z&^OEMc`;x^ZOmigPw!Qa)}u9vv3zAUD@Kl0-r zgX}-*&pLFf?)cM z*VD$YcFuTr&hG36@v!Lfs*{^|j$W!@F`aXX9;G5>n&;I>SpKNWp$L*c@8+Oe#j~ye6Uu`uKR$7y1)p0$D%`)cmy4w#+ zCJXGi$e*!#6^q-#6{{b~&N5FZ-TH08g4~-M+O~a|SzfR*VvdQh#|Ck~vy6L$(@mnR zW%t#_Ov^L$oMew0DE7YF;=O@^;Sa>1{OIH9?CKZn%6jl1Z-W94>xIx=4bw6nHLjk# zAmjxr$6t>-_r9OIwQrqfvr}iu^`>>#8?GhI^Jy`PKgHHm6rqWce^9 zcO-6HDDaOlz?+dtgc)}!1+)|lwl#t%M45%I5544o=we{l*0==7gq9=dn$Y7Mp-G+@ iDFvWwLk|^%HWL_>6hV!QXlM0Vs}HlOJjA%EZ8M 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 Xfrn9mH!B-Rf&~a~0_n3rDFy}rzav_0 diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/008/bd.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/008/bd.wgt deleted file mode 100644 index 33853a5e8af6f1ae0910c335b982e65802ea04d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmWIWW@Zs#U|`^2P;L&fw&3y-&IR%sftU-3lk@Y^GSl@ca&v5Z9Qh6z@UXnEY<WG}x$g@eK}g{65@C3yC;-&(c(?!}BfwngW;-Y@jvt_Yv|%_Z&H&2`e*{+BWW zrQDvY^2+Gnylf-WFkkEbj!iL=|8y1<1-FE2oqrqRS2^VqXNA=~evkbZq2*g}KoSdJRmYJ?sk(*=NbbITm_15dC z$f75Wm**$22b{aB@pSu!bLLA_OI(6~Fb4n~1hSfe zVN0W*^<0(aniwD(ggJpYGcP5zLNB8v*GAFB-#H{Qz*Par$+6?IDakC!NwxFKFHtB- zEiOq-vC)T!aM>i~r&KBwmsIAY+A1X_CTFJ?<(KBA=qBgq diff --git a/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/010/bf.wgt b/tests/w3c_tests/test-cases/ta-DwhJBIJRQN/010/bf.wgt deleted file mode 100644 index e108eaa5de1204648d58210087e2b56e4032457d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmWIWW@Zs#U|`^2aA*#(PE5K{lnvxH0x=g5C+Fv-Wv1&@o4+4_|E z3U`^tNzDfgjk{PiOSO+D?6935c6YD2l<${n`%MS4S6vdicV?RM#NFj}FVbW^rPg{K zmRU5V^K)v)7kNeny;IEEr>8zVE+l2{Trus}jsBvS=_}v2sM{J}GT-7_{DUC?=p>Nk z3=Eqa{jBGzG}puc*&xgb#F=?1sTFz|CAl_=F8Ku(SwmrY4#NlvPrUw(-~ zNosLPYKo0MM1;#GDLoJ#CsS3zj4#ZqQoSdJRmYJ?sk(;CI8_n0OAn@nANDK3h z%wHEh8g{Qq&Gu}Gidb@7e?`3UChbQ+D zo^&&B>lYo3Ym#}{CBJk}@K(CGbmH_Ni?g4TtL`oF_@ZkUSp6_$g?`QqgAUp2m$=xs zNSH9MD_j12vFyJ96c^Smnxe6ik%6Isg@J(`=)#Qr{A|6f;@-)D{)Y?%j?cfle8-no z!4rQN+Sq+eW@RKX;JmF{vOh`^7zKkm&-P|W>+>oKCd?I?T)Q44X4(q9l1E&=+vgn>l3#x z&*^`-M0=uD{Y-r^9hFY&&Fl0Gqd)%HYp^S*$)wdWWbTT`XO{$J$W1%%Z|`%cw7JB+ zVzPo2c* zR1xn>N3DhYHyyeD|9forRo6jI(LSt&@Ik*zxv4|D9`MSFQ`KWj33bbm*3$ zBct}2%G8Zd-5+PoU$$0UW(Vt%z5|)^x$l3a%C(&pyPJLF^n%qrQpaW=Tv_{;QN&fx zN%L)8<3W}Pw$r{L#z}S_>Zf|GWb*GF^REq@v~k5mhT9J3V)r$Q9KU#cZ^t>c8M5q_ z5oRX(*RNk(U~ubqBj0}!{ohQevFTM8tFaXri%)@=6NoeOQc^4QGD>nydmXu(3?$m# z|LZcho?h}%AX}k$VT)gZpqy{G+v%fo*#FlqV!8jacK-LDC)C7z!dTs(+s&#vvUg6H z$?D%5uO-aQx~CFh+<(W{Ij{scq*UT@a4r zw=lK1vFrZigm<=|mZlV3`*MDNUTMVDUmG>>{0z@@4GGD8|Wv0AO@vWA5UjjzhGC^g9mvV z6nI!KgzjpXmhq@@_2dO1FIYMLdfd79{oJj6>ol94I!mrMt-IcEEoq)li_ry};wj~G ze@9h6I=izuy`mz^hbg%uapOXPe~ba%j7%cTxN|SiQZU%o2%->q8C@TGo`UFNVA$5U v2*`xyFmz4mQHRh}z=RZ$=-SXj1)0Q8uCV&F