Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Aubry <mattab@users.noreply.github.com>2016-11-15 18:51:38 +0300
committerGitHub <noreply@github.com>2016-11-15 18:51:38 +0300
commit28409d4c92f46ce3b250501c769bb08ebb26884c (patch)
tree645f6b3a94bf98d8af518c9605d2414b2e848d60
parent44283a6f19e4f1b2ca96e4ebacab1f2dc8eb42ed (diff)
parentff33b964f557e230f6cbcbf6ccac92cf8fe608fa (diff)
Merge pull request #10871 from piwik/3.x-dev
Piwik 3.0.0-b3 release
-rw-r--r--.gitignore2
-rw-r--r--.gitmodules4
-rw-r--r--.travis.yml1
-rw-r--r--CHANGELOG.md14
-rw-r--r--composer.json3
-rw-r--r--composer.lock74
-rw-r--r--config/global.ini.php17
-rw-r--r--core/API/DataTableManipulator/Flattener.php14
-rw-r--r--core/API/DocumentationGenerator.php2
-rw-r--r--core/Archive.php52
-rw-r--r--core/ArchiveProcessor/Rules.php2
-rw-r--r--core/DataTable.php3
-rw-r--r--core/DataTable/Filter/ReplaceColumnNames.php2
-rw-r--r--core/DbHelper.php2
-rw-r--r--core/Filechecks.php16
-rw-r--r--core/Http.php15
-rw-r--r--core/Menu/MenuAbstract.php23
-rw-r--r--core/Menu/MenuAdmin.php13
-rw-r--r--core/Menu/MenuTop.php13
-rw-r--r--core/Notification.php7
-rw-r--r--core/Plugin.php2
-rw-r--r--core/Plugin/ControllerAdmin.php47
-rw-r--r--core/Plugin/Dependency.php81
-rw-r--r--core/Plugin/Manager.php12
-rw-r--r--core/Plugin/MetadataLoader.php37
-rw-r--r--core/Plugin/ReleaseChannels.php12
-rw-r--r--core/ProfessionalServices/Advertising.php10
-rw-r--r--core/ProxyHttp.php12
-rw-r--r--core/Segment.php27
-rw-r--r--core/SettingsPiwik.php37
-rw-r--r--core/Tracker/Action.php4
-rw-r--r--core/Tracker/ActionPageview.php10
-rwxr-xr-xcore/Twig.php26
-rw-r--r--core/UpdateCheck.php7
-rw-r--r--core/UpdateCheck/ReleaseChannel.php9
-rw-r--r--core/Updater.php76
-rw-r--r--core/Updates/3.0.0-b2.php24
-rw-r--r--core/Updates/3.0.0-b3.php72
-rw-r--r--core/Version.php2
-rw-r--r--core/View.php2
-rw-r--r--js/piwik.js53
-rw-r--r--js/piwik.min.js16
-rw-r--r--lang/pt.json4
-rw-r--r--lang/uk.json2
-rw-r--r--libs/bower_components/iframe-resizer/.bower.json55
-rw-r--r--libs/bower_components/iframe-resizer/.gitignore9
-rw-r--r--libs/bower_components/iframe-resizer/.travis.yml6
-rw-r--r--libs/bower_components/iframe-resizer/LICENSE21
-rw-r--r--libs/bower_components/iframe-resizer/bower.json45
-rw-r--r--libs/bower_components/iframe-resizer/index.js4
-rw-r--r--libs/bower_components/iframe-resizer/js/ie8.polyfils.map1
-rw-r--r--libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js4
-rw-r--r--libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js1108
-rw-r--r--libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map1
-rw-r--r--libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js10
-rw-r--r--libs/bower_components/iframe-resizer/js/iframeResizer.js1002
-rw-r--r--libs/bower_components/iframe-resizer/js/iframeResizer.map1
-rw-r--r--libs/bower_components/iframe-resizer/js/iframeResizer.min.js9
-rw-r--r--libs/bower_components/iframe-resizer/js/index.js2
-rw-r--r--libs/bower_components/iframe-resizer/karma.conf.js92
-rw-r--r--libs/bower_components/iframe-resizer/src/ie8.polyfils.js64
-rw-r--r--libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js1123
-rw-r--r--libs/bower_components/iframe-resizer/src/iframeResizer.js1002
-rw-r--r--libs/bower_components/iframe-resizer/test-main.js33
-rw-r--r--piwik.js16
-rw-r--r--plugins/API/API.php10
-rw-r--r--plugins/API/Menu.php2
-rw-r--r--plugins/Actions/Actions/ActionSiteSearch.php10
-rw-r--r--plugins/Actions/Columns/VisitTotalActions.php3
-rw-r--r--plugins/Actions/lang/id.json5
-rw-r--r--plugins/Actions/lang/uk.json1
m---------plugins/AnonymousPiwikUsageMeasurement0
m---------plugins/Bandwidth0
-rw-r--r--plugins/Contents/API.php2
-rw-r--r--plugins/Contents/Actions/ActionContent.php11
-rw-r--r--plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_day.xml5
-rw-r--r--plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_month.xml5
-rw-r--r--plugins/CoreAdminHome/Controller.php5
-rw-r--r--plugins/CoreAdminHome/lang/uk.json4
-rw-r--r--plugins/CoreAdminHome/templates/home.twig2
-rw-r--r--plugins/CoreConsole/Commands/GeneratePlugin.php5
-rw-r--r--plugins/CoreConsole/Commands/GeneratePluginBase.php14
-rw-r--r--plugins/CoreHome/Controller.php5
-rw-r--r--plugins/CoreHome/CoreHome.php3
-rw-r--r--plugins/CoreHome/Widgets/GetSystemSummary.php9
-rw-r--r--plugins/CoreHome/lang/ar.json1
-rw-r--r--plugins/CoreHome/lang/bg.json1
-rw-r--r--plugins/CoreHome/lang/cs.json3
-rw-r--r--plugins/CoreHome/lang/da.json1
-rw-r--r--plugins/CoreHome/lang/de.json1
-rw-r--r--plugins/CoreHome/lang/el.json3
-rw-r--r--plugins/CoreHome/lang/en.json3
-rw-r--r--plugins/CoreHome/lang/es.json1
-rw-r--r--plugins/CoreHome/lang/fi.json1
-rw-r--r--plugins/CoreHome/lang/fr.json3
-rw-r--r--plugins/CoreHome/lang/hi.json1
-rw-r--r--plugins/CoreHome/lang/id.json1
-rw-r--r--plugins/CoreHome/lang/it.json1
-rw-r--r--plugins/CoreHome/lang/ja.json1
-rw-r--r--plugins/CoreHome/lang/ko.json1
-rw-r--r--plugins/CoreHome/lang/nb.json3
-rw-r--r--plugins/CoreHome/lang/nl.json1
-rw-r--r--plugins/CoreHome/lang/pl.json1
-rw-r--r--plugins/CoreHome/lang/pt-br.json1
-rw-r--r--plugins/CoreHome/lang/pt.json2
-rw-r--r--plugins/CoreHome/lang/ro.json1
-rw-r--r--plugins/CoreHome/lang/ru.json1
-rw-r--r--plugins/CoreHome/lang/sk.json1
-rw-r--r--plugins/CoreHome/lang/sq.json5
-rw-r--r--plugins/CoreHome/lang/sr.json1
-rw-r--r--plugins/CoreHome/lang/sv.json1
-rw-r--r--plugins/CoreHome/lang/tl.json1
-rw-r--r--plugins/CoreHome/lang/tr.json1
-rw-r--r--plugins/CoreHome/lang/uk.json16
-rw-r--r--plugins/CoreHome/lang/vi.json1
-rw-r--r--plugins/CoreHome/lang/zh-cn.json1
-rwxr-xr-xplugins/CoreHome/templates/_donate.twig2
-rw-r--r--plugins/CoreHome/templates/_headerMessage.twig8
-rw-r--r--plugins/CorePluginsAdmin/Controller.php257
-rw-r--r--plugins/CorePluginsAdmin/CorePluginsAdmin.php12
-rw-r--r--plugins/CorePluginsAdmin/Marketplace.php199
-rw-r--r--plugins/CorePluginsAdmin/MarketplaceApiClient.php200
-rw-r--r--plugins/CorePluginsAdmin/Menu.php43
-rw-r--r--plugins/CorePluginsAdmin/PluginInstaller.php85
-rw-r--r--plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js59
-rw-r--r--plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js20
-rw-r--r--plugins/CorePluginsAdmin/config/config.php7
-rw-r--r--plugins/CorePluginsAdmin/lang/cs.json3
-rw-r--r--plugins/CorePluginsAdmin/lang/el.json3
-rw-r--r--plugins/CorePluginsAdmin/lang/en.json64
-rw-r--r--plugins/CorePluginsAdmin/lang/fr.json3
-rw-r--r--plugins/CorePluginsAdmin/lang/hr.json5
-rw-r--r--plugins/CorePluginsAdmin/lang/sq.json3
-rw-r--r--plugins/CorePluginsAdmin/lang/uk.json12
-rw-r--r--plugins/CorePluginsAdmin/stylesheets/plugins_admin.less32
-rw-r--r--plugins/CorePluginsAdmin/templates/installPlugin.twig41
-rw-r--r--plugins/CorePluginsAdmin/templates/license.twig4
-rw-r--r--plugins/CorePluginsAdmin/templates/macros.twig315
-rw-r--r--plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig82
-rw-r--r--plugins/CorePluginsAdmin/templates/pluginDetails.twig209
-rw-r--r--plugins/CorePluginsAdmin/templates/plugins.twig55
-rw-r--r--plugins/CorePluginsAdmin/templates/updatePlugin.twig41
-rw-r--r--plugins/CorePluginsAdmin/templates/uploadPlugin.twig18
-rw-r--r--plugins/CoreUpdater/Commands/Update.php5
-rw-r--r--plugins/CoreUpdater/Controller.php16
-rw-r--r--plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php5
-rw-r--r--plugins/CoreUpdater/ReleaseChannel/LatestBeta.php5
-rw-r--r--plugins/CoreUpdater/SystemSettings.php2
-rw-r--r--plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php5
-rw-r--r--plugins/CoreUpdater/Updater.php41
-rw-r--r--plugins/CoreUpdater/lang/uk.json4
-rw-r--r--plugins/CoreUpdater/templates/layout.twig2
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator.php3
m---------plugins/CustomAlerts0
m---------plugins/CustomDimensions0
-rw-r--r--plugins/CustomPiwikJs/lang/uk.json7
-rw-r--r--plugins/DBStats/lang/pt.json1
-rw-r--r--plugins/DevicePlugins/DevicePlugins.php8
-rw-r--r--plugins/DevicePlugins/tests/System/UserSettingsBCTest.php78
-rw-r--r--plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___API.getMetadata_day.xml24
-rw-r--r--plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___DevicePlugins.getPlugin_day.xml63
-rw-r--r--plugins/DevicesDetection/DevicesDetection.php19
-rw-r--r--plugins/DevicesDetection/images/browsers/SB.gifbin0 -> 974 bytes
-rw-r--r--plugins/DevicesDetection/lang/pt.json4
-rw-r--r--plugins/DevicesDetection/lang/tr.json10
-rw-r--r--plugins/DevicesDetection/tests/System/UserSettingsBCTest.php83
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___API.getMetadata_day.xml37
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___DevicesDetection.getBrowsers_day.xml15
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___API.getMetadata_day.xml43
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___DevicesDetection.getBrowsers_day.xml16
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___API.getMetadata_day.xml44
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___DevicesDetection.getBrowsers_day.xml16
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___API.getMetadata_day.xml42
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___DevicesDetection.getBrowsers_day.xml98
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___API.getMetadata_day.xml43
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___DevicesDetection.getBrowsers_day.xml15
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___API.getMetadata_day.xml43
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___DevicesDetection.getBrowsers_day.xml16
-rw-r--r--plugins/Events/Actions/ActionEvent.php12
-rw-r--r--plugins/Events/Reports/Base.php19
-rw-r--r--plugins/ExamplePlugin/plugin.json2
-rw-r--r--plugins/ExamplePlugin/tests/System/expected/test___API.get_day.xml3
-rw-r--r--plugins/ExampleTheme/plugin.json2
-rw-r--r--plugins/Feedback/lang/nb.json1
-rw-r--r--plugins/Feedback/templates/index.twig14
-rw-r--r--plugins/Goals/lang/cs.json1
-rw-r--r--plugins/Goals/lang/da.json1
-rw-r--r--plugins/Goals/lang/el.json1
-rw-r--r--plugins/Goals/lang/es.json1
-rw-r--r--plugins/Goals/lang/et.json1
-rw-r--r--plugins/Goals/lang/fi.json1
-rw-r--r--plugins/Goals/lang/fr.json1
-rw-r--r--plugins/Goals/lang/hi.json1
-rw-r--r--plugins/Goals/lang/it.json1
-rw-r--r--plugins/Goals/lang/ja.json1
-rw-r--r--plugins/Goals/lang/ko.json1
-rw-r--r--plugins/Goals/lang/nb.json9
-rw-r--r--plugins/Goals/lang/nl.json1
-rw-r--r--plugins/Goals/lang/pl.json1
-rw-r--r--plugins/Goals/lang/pt-br.json1
-rw-r--r--plugins/Goals/lang/pt.json1
-rw-r--r--plugins/Goals/lang/ru.json1
-rw-r--r--plugins/Goals/lang/sq.json1
-rw-r--r--plugins/Goals/lang/sv.json1
-rw-r--r--plugins/Goals/lang/ta.json1
-rw-r--r--plugins/Goals/lang/tr.json1
-rw-r--r--plugins/Goals/lang/uk.json6
-rw-r--r--plugins/Goals/templates/_formAddGoal.twig3
-rw-r--r--plugins/Goals/templates/conversionOverview.twig2
-rw-r--r--plugins/Installation/View.php3
-rw-r--r--plugins/Installation/lang/id.json6
-rw-r--r--plugins/Installation/lang/uk.json46
-rw-r--r--plugins/Installation/templates/layout.twig4
-rw-r--r--plugins/LanguagesManager/Commands/CreatePull.php11
m---------plugins/LogViewer0
-rw-r--r--plugins/Login/lang/uk.json3
m---------plugins/LoginHttpAuth0
-rw-r--r--plugins/Marketplace/API.php106
-rw-r--r--plugins/Marketplace/Api/Client.php326
-rw-r--r--plugins/Marketplace/Api/Exception.php (renamed from plugins/CorePluginsAdmin/MarketplaceApiException.php)4
-rw-r--r--plugins/Marketplace/Api/Service.php158
-rw-r--r--plugins/Marketplace/Api/Service/Exception.php19
-rw-r--r--plugins/Marketplace/Consumer.php68
-rw-r--r--plugins/Marketplace/Controller.php459
-rw-r--r--plugins/Marketplace/Environment.php104
-rw-r--r--plugins/Marketplace/Input/Mode.php29
-rw-r--r--plugins/Marketplace/Input/PluginName.php42
-rw-r--r--plugins/Marketplace/Input/PurchaseType.php20
-rw-r--r--plugins/Marketplace/Input/Sort.php41
-rw-r--r--plugins/Marketplace/LicenseKey.php44
-rw-r--r--plugins/Marketplace/Marketplace.php63
-rw-r--r--plugins/Marketplace/Menu.php28
-rw-r--r--plugins/Marketplace/Plugins.php318
-rw-r--r--plugins/Marketplace/Plugins/InvalidLicenses.php238
-rw-r--r--plugins/Marketplace/Tasks.php (renamed from plugins/CorePluginsAdmin/Tasks.php)18
-rw-r--r--plugins/Marketplace/UpdateCommunication.php (renamed from plugins/CorePluginsAdmin/UpdateCommunication.php)14
-rw-r--r--plugins/Marketplace/Widgets/GetNewPlugins.php (renamed from plugins/CorePluginsAdmin/Widgets/GetNewPlugins.php)15
-rw-r--r--plugins/Marketplace/angularjs/licensekey/licensekey.controller.js63
-rw-r--r--plugins/Marketplace/angularjs/marketplace/marketplace.controller.js (renamed from plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js)0
-rw-r--r--plugins/Marketplace/angularjs/marketplace/marketplace.directive.js132
-rw-r--r--plugins/Marketplace/angularjs/plugins/plugin-name.directive.js (renamed from plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js)2
-rw-r--r--plugins/Marketplace/config/config.php32
-rw-r--r--plugins/Marketplace/config/test.php144
-rwxr-xr-xplugins/Marketplace/images/rating_important.png (renamed from plugins/CorePluginsAdmin/images/rating_important.png)bin673 -> 673 bytes
-rw-r--r--plugins/Marketplace/lang/en.json112
-rw-r--r--plugins/Marketplace/stylesheets/marketplace-widget.less (renamed from plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less)0
-rw-r--r--plugins/Marketplace/stylesheets/marketplace.less (renamed from plugins/CorePluginsAdmin/stylesheets/marketplace.less)78
-rw-r--r--plugins/Marketplace/stylesheets/plugin-details.less (renamed from plugins/CorePluginsAdmin/stylesheets/plugin-details.less)64
-rw-r--r--plugins/Marketplace/templates/getNewPlugins.twig (renamed from plugins/CorePluginsAdmin/templates/getNewPlugins.twig)0
-rw-r--r--plugins/Marketplace/templates/getNewPluginsAdmin.twig (renamed from plugins/CorePluginsAdmin/templates/getNewPluginsAdmin.twig)0
-rw-r--r--plugins/Marketplace/templates/installPlugin.twig41
-rw-r--r--plugins/Marketplace/templates/licenseform.twig75
-rw-r--r--plugins/Marketplace/templates/macros.twig25
-rw-r--r--plugins/Marketplace/templates/overview.twig (renamed from plugins/CorePluginsAdmin/templates/marketplace.twig)69
-rw-r--r--plugins/Marketplace/templates/paid-plugins-install-list.twig22
-rw-r--r--plugins/Marketplace/templates/plugin-details.twig361
-rw-r--r--plugins/Marketplace/templates/plugin-list.twig159
-rw-r--r--plugins/Marketplace/templates/subscription-overview.twig101
-rw-r--r--plugins/Marketplace/templates/updatePlugin.twig41
-rw-r--r--plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php50
-rw-r--r--plugins/Marketplace/tests/Framework/Mock/Client.php22
-rw-r--r--plugins/Marketplace/tests/Framework/Mock/Consumer.php91
-rw-r--r--plugins/Marketplace/tests/Framework/Mock/Environment.php53
-rw-r--r--plugins/Marketplace/tests/Framework/Mock/Service.php122
-rw-r--r--plugins/Marketplace/tests/Integration/ApiTest.php198
-rw-r--r--plugins/Marketplace/tests/Integration/ClientTest.php72
-rw-r--r--plugins/Marketplace/tests/Integration/EnvironmentTest.php87
-rw-r--r--plugins/Marketplace/tests/Integration/Input/PluginNameTest.php53
-rw-r--r--plugins/Marketplace/tests/Integration/LicenseKeyTest.php126
-rw-r--r--plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php290
-rw-r--r--plugins/Marketplace/tests/Integration/PluginsTest.php486
-rw-r--r--plugins/Marketplace/tests/Integration/ServiceTest.php67
-rw-r--r--plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php (renamed from plugins/CorePluginsAdmin/tests/Integration/UpdateCommunicationTest.php)9
-rw-r--r--plugins/Marketplace/tests/System/Api/ClientTest.php299
-rw-r--r--plugins/Marketplace/tests/System/Api/ServiceTest.php165
-rw-r--r--plugins/Marketplace/tests/Unit/ConsumerTest.php153
-rw-r--r--plugins/Marketplace/tests/resources/emptyObjectResponse.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json21
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json7
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json27
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json21
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_consumer_validate.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_info.json3
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json142
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json89
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json83
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json141
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json90
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins.json3011
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json57
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json1
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json90
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json90
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json83
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json36
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json17
-rw-r--r--plugins/Marketplace/tests/resources/v2.0_themes.json182
-rw-r--r--plugins/MobileAppMeasurable/lang/pt.json5
-rw-r--r--plugins/Morpheus/templates/javascriptCode.twig2
-rw-r--r--plugins/Morpheus/templates/layout.twig2
-rw-r--r--plugins/MultiSites/Menu.php2
-rw-r--r--plugins/Overlay/lang/pt.json1
-rw-r--r--plugins/PrivacyManager/lang/ca.json1
-rw-r--r--plugins/PrivacyManager/lang/cs.json2
-rw-r--r--plugins/PrivacyManager/lang/da.json1
-rw-r--r--plugins/PrivacyManager/lang/de.json1
-rw-r--r--plugins/PrivacyManager/lang/el.json2
-rw-r--r--plugins/PrivacyManager/lang/es.json1
-rw-r--r--plugins/PrivacyManager/lang/fi.json1
-rw-r--r--plugins/PrivacyManager/lang/fr.json2
-rw-r--r--plugins/PrivacyManager/lang/hi.json1
-rw-r--r--plugins/PrivacyManager/lang/id.json1
-rw-r--r--plugins/PrivacyManager/lang/it.json1
-rw-r--r--plugins/PrivacyManager/lang/ja.json1
-rw-r--r--plugins/PrivacyManager/lang/ko.json1
-rw-r--r--plugins/PrivacyManager/lang/nl.json1
-rw-r--r--plugins/PrivacyManager/lang/pt-br.json1
-rw-r--r--plugins/PrivacyManager/lang/ro.json1
-rw-r--r--plugins/PrivacyManager/lang/ru.json1
-rw-r--r--plugins/PrivacyManager/lang/sq.json2
-rw-r--r--plugins/PrivacyManager/lang/sr.json1
-rw-r--r--plugins/PrivacyManager/lang/sv.json1
-rw-r--r--plugins/PrivacyManager/lang/tl.json1
-rw-r--r--plugins/PrivacyManager/lang/uk.json2
-rw-r--r--plugins/PrivacyManager/lang/vi.json1
-rw-r--r--plugins/PrivacyManager/lang/zh-cn.json1
-rw-r--r--plugins/ProfessionalServices/ProfessionalServices.php40
-rw-r--r--plugins/ProfessionalServices/Promo.php108
-rw-r--r--plugins/ProfessionalServices/Widgets/PromoServices.php2
-rw-r--r--plugins/ProfessionalServices/lang/en.json2
m---------plugins/QueuedTracking0
-rw-r--r--plugins/Referrers/API.php3
-rw-r--r--plugins/Resolution/Resolution.php8
-rw-r--r--plugins/Resolution/tests/System/UserSettingsBCTest.php79
-rw-r--r--plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___API.getMetadata_day.xml44
-rw-r--r--plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___Resolution.getResolution_day.xml14
-rw-r--r--plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___API.getMetadata_day.xml43
-rw-r--r--plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___Resolution.getResolution_day.xml15
-rw-r--r--plugins/ScheduledReports/API.php1
-rw-r--r--plugins/ScheduledReports/lang/uk.json2
m---------plugins/SecurityInfo0
-rw-r--r--plugins/SegmentEditor/lang/uk.json3
-rw-r--r--plugins/SitesManager/lang/uk.json3
-rw-r--r--plugins/SitesManager/templates/sites-list/site-fields.html2
m---------plugins/TasksTimetable0
-rw-r--r--plugins/Transitions/lang/pt.json5
-rw-r--r--plugins/Transitions/lang/uk.json3
m---------plugins/TreemapVisualization0
-rw-r--r--plugins/UserCountry/API.php20
-rw-r--r--plugins/UserCountry/Controller.php25
-rw-r--r--plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js5
-rw-r--r--plugins/UserCountry/lang/uk.json3
-rw-r--r--plugins/UserCountry/tests/Integration/APITest.php83
-rw-r--r--plugins/UserCountryMap/lang/pt.json1
-rw-r--r--plugins/UserCountryMap/svg/AF.svg2
-rw-r--r--plugins/UserCountryMap/svg/AS.svg2
-rw-r--r--plugins/UserCountryMap/svg/CAF.svg2
-rw-r--r--plugins/UserCountryMap/svg/COD.svg2
-rw-r--r--plugins/UserCountryMap/svg/EGY.svg2
-rw-r--r--plugins/UserCountryMap/svg/ETH.svg2
-rw-r--r--plugins/UserCountryMap/svg/EU.svg2
-rw-r--r--plugins/UserCountryMap/svg/IRQ.svg2
-rw-r--r--plugins/UserCountryMap/svg/ISR.svg2
-rw-r--r--plugins/UserCountryMap/svg/JOR.svg2
-rw-r--r--plugins/UserCountryMap/svg/KEN.svg2
-rw-r--r--plugins/UserCountryMap/svg/SAU.svg2
-rw-r--r--plugins/UserCountryMap/svg/SDN.svg2
-rw-r--r--plugins/UserCountryMap/svg/SOM.svg2
-rw-r--r--plugins/UserCountryMap/svg/SSD.svg (renamed from plugins/UserCountryMap/svg/SDS.svg)2
-rw-r--r--plugins/UserCountryMap/svg/SYR.svg2
-rw-r--r--plugins/UserCountryMap/svg/TCD.svg2
-rw-r--r--plugins/UserCountryMap/svg/UGA.svg2
-rw-r--r--plugins/UserCountryMap/svg/world.svg2
-rw-r--r--plugins/UserLanguage/UserLanguage.php8
-rw-r--r--plugins/UserLanguage/lang/pt.json1
-rw-r--r--plugins/UserLanguage/tests/System/UserSettingsBCTest.php78
-rw-r--r--plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___API.getMetadata_day.xml43
-rw-r--r--plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___UserLanguage.getLanguage_day.xml15
-rw-r--r--plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___API.getMetadata_day.xml43
-rw-r--r--plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___UserLanguage.getLanguage_day.xml15
-rw-r--r--plugins/UsersManager/angularjs/manage-users/manage-users.controller.js6
-rw-r--r--plugins/UsersManager/lang/uk.json2
-rw-r--r--plugins/UsersManager/templates/userSettings.twig2
-rw-r--r--plugins/VisitFrequency/lang/uk.json5
-rw-r--r--plugins/VisitTime/lang/pt.json1
m---------plugins/VisitorGenerator0
-rw-r--r--plugins/VisitsSummary/lang/uk.json16
-rw-r--r--plugins/WebsiteMeasurable/lang/pt.json6
-rw-r--r--plugins/Widgetize/Menu.php2
-rw-r--r--plugins/Widgetize/tests/System/WidgetTest.php6
-rw-r--r--tests/PHPUnit/Fixtures/InvalidVisits.php2
-rw-r--r--tests/PHPUnit/Integration/DependencyTest.php22
-rw-r--r--tests/PHPUnit/Integration/Plugin/ManagerTest.php8
-rw-r--r--tests/PHPUnit/Integration/ProfessionalSupport/AdvertisingTest.php7
-rw-r--r--tests/PHPUnit/Integration/ReleaseCheckListTest.php4
-rw-r--r--tests/PHPUnit/Integration/SegmentTest.php81
-rw-r--r--tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php2
-rw-r--r--tests/PHPUnit/System/AutoSuggestAPITest.php4
-rw-r--r--tests/PHPUnit/System/BackwardsCompatibility1XTest.php16
-rw-r--r--tests/PHPUnit/System/DuplicateActionsTest.php2
-rw-r--r--tests/PHPUnit/System/EnvironmentValidationTest.php3
-rwxr-xr-xtests/PHPUnit/System/OneVisitorTwoVisitsTest.php10
-rw-r--r--tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt168
-rw-r--r--tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldAppear__Actions.getPageUrls_month.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldNotAppear__Actions.getPageUrls_month.xml36
-rw-r--r--tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldAppear__Actions.getPageUrls_month.xml21
-rw-r--r--tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear_BecauseDayWasNotInvalidated__Actions.getPageUrls_day.xml17
-rw-r--r--tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear__Actions.getPageUrls_month.xml17
-rw-r--r--tests/PHPUnit/System/expected/test_AutoSuggestAPITest_bandwidth__API.getSuggestedValuesForSegment.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownload_day.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownloads_day.xml20
-rw-r--r--tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getPageUrls_day.xml109
-rw-r--r--tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_expanded__Actions.getPageUrls_range.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_flat__Actions.getPageUrls_range.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_subtable__Actions.getPageUrls_day.xml1
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml44
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml28
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_FlattenReports__Actions.getPageUrls_week.xml55
-rw-r--r--tests/PHPUnit/System/expected/test_FlattenReports_expandedSubtable__Actions.getPageUrls_week.xml21
-rw-r--r--tests/PHPUnit/System/expected/test_FlattenReports_expandedWithDepth__Actions.getPageUrls_week.xml41
-rw-r--r--tests/PHPUnit/System/expected/test_FlattenReports_flatFilterPatternRecursive__Actions.getPageUrls_week.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_FlattenReports_withAggregate__Actions.getPageUrls_week.xml115
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml46
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml58
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_month.xml54
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_range.xml93
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml296
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml359
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_month.xml59
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_range.xml108
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml296
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml393
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml21
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml68
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml122
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_month.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_range.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml47
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml305
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml394
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Bandwidth.get_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml54
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml88
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml64
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml139
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml21
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml74
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml122
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_0__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_dir2sub0filephp__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_dir__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_dir_range__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_dirfilephpfoobarfoo2bar__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectBranch__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_thisiscool__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_titlesRecursive__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_LabelFilter_titles__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric__API.getProcessedReport_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageUrls_day.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_NonUnicode__Actions.getSiteSearchKeywords_day.xml20
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml3
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml3
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml1
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml1
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Bandwidth.get_day.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___API.getProcessedReport_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml24
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumns___API.getProcessedReport_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml7
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml13
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml7
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml32
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml24
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml28
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml27
-rw-r--r--tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_month.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_day.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_month.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_month.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_day.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_month.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml45
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml20
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_day.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_month.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_month.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_day.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_month.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_month.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_day.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_month.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_day.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_month.xml25
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_month.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml20
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_month.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_week.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_year.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml150
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml46
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml72
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml46
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_month.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_week.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_year.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml120
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml34
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml58
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml34
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_day.xml25
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_month.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_week.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_year.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml140
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml36
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml62
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml36
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_day.xml30
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_month.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_week.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_year.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml110
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml24
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml48
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml24
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv54
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html167
-rw-r--r--tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmentedRef__Actions.getPageUrls_day.xml31
-rw-r--r--tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmented__Actions.getPageUrls_day.xml9
-rw-r--r--tests/PHPUnit/System/expected/test_UrlNormalization_titles__Actions.getPageTitles_day.xml41
-rw-r--r--tests/PHPUnit/System/expected/test_UrlNormalization_urls__Actions.getPageUrls_day.xml31
-rw-r--r--tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldAppear__Actions.getPageUrls_month.xml53
-rw-r--r--tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml53
-rw-r--r--tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldAppear__Actions.getPageUrls_month.xml53
-rw-r--r--tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml53
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getDefaultMetricTranslations.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml17
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml7
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml240
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.get_day.xml3
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata_pageTitleZeroString__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata_phpRenderer__API.getDefaultMetricTranslations.php2
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_csv__ScheduledReports.generateReport_week.original.csv84
-rw-r--r--tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html131
-rw-r--r--tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_all_sites__ScheduledReports.generateReport_week.original.sms.txt2
-rw-r--r--tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_one_site__ScheduledReports.generateReport_week.original.sms.txt2
-rw-r--r--tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_week.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_noVisit__Bandwidth.get_day.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_expanded___Actions.getPageUrls_range.xml27
-rw-r--r--tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml15
-rw-r--r--tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Actions.getPageUrls_range.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Actions.getPageUrls_range.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml100
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml100
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageTitles_day.xml28
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageUrls_day.xml44
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml82
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml82
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageTitles_day.xml27
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageUrls_day.xml41
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__CustomVariables.getCustomVariables_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__DevicesDetection.getBrowserVersions_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getKeywords_day.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getSearchEngines_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getWebsites_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml300
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_rankingQueryDisabled__Actions.getPageUrls_day.xml125
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageTitles_day.xml23
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageUrls_day.xml18
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContainsStrangeCharacters__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageTitles_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageUrls_day.xml9
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleEndsWith__Actions.getPageTitles_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleStartsWith__Actions.getPageTitles_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageTitles_day.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageUrls_day.xml9
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlEndsWith__Actions.getPageUrls_day.xml9
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageTitles_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlStartsWith__Actions.getPageUrls_day.xml5
-rw-r--r--tests/PHPUnit/Unit/DbHelperTest.php61
-rw-r--r--tests/PHPUnit/Unit/DeprecatedMethodsTest.php2
-rw-r--r--tests/UI/expected-screenshots/ActionsDataTable_flattened.png4
-rw-r--r--tests/UI/expected-screenshots/CoreUpdaterCode_newVersion.png4
-rw-r--r--tests/UI/expected-screenshots/CoreUpdaterDb_main.png4
-rw-r--r--tests/UI/expected-screenshots/CoreUpdaterDb_updated.png4
-rw-r--r--tests/UI/expected-screenshots/DashboardManager_create_new.png4
-rw-r--r--tests/UI/expected-screenshots/DashboardManager_expanded.png2
-rw-r--r--tests/UI/expected-screenshots/DashboardManager_removed.png4
-rw-r--r--tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png4
-rw-r--r--tests/UI/expected-screenshots/DashboardManager_widget_preview.png4
-rw-r--r--tests/UI/expected-screenshots/Dashboard_create_new.png4
-rw-r--r--tests/UI/expected-screenshots/Dashboard_removed.png4
-rw-r--r--tests/UI/expected-screenshots/Dashboard_reset.png4
-rw-r--r--tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png3
-rw-r--r--tests/UI/expected-screenshots/Marketplace_updates_superuser.png3
-rw-r--r--tests/UI/expected-screenshots/Overlay_loaded.png4
-rw-r--r--tests/UI/expected-screenshots/Overlay_loaded_with_segment.png4
-rw-r--r--tests/UI/expected-screenshots/Overlay_page_change.png4
-rw-r--r--tests/UI/expected-screenshots/Overlay_page_link_clicks.png4
-rw-r--r--tests/UI/expected-screenshots/Overlay_page_new_links.png4
-rw-r--r--tests/UI/expected-screenshots/Overlay_period_change.png4
-rw-r--r--tests/UI/expected-screenshots/Overlay_transitions.png4
-rw-r--r--tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png4
-rw-r--r--tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png4
-rw-r--r--tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png4
-rw-r--r--tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png4
-rw-r--r--tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png4
-rw-r--r--tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png4
-rw-r--r--tests/UI/expected-screenshots/Theme_home.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_fatal_error_safemode.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal_updated.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_goals_overview.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_reloaded.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png4
-rw-r--r--tests/UI/specs/Marketplace_spec.js265
-rw-r--r--tests/javascript/index.php3
-rw-r--r--tests/lib/screenshot-testing/support/page-renderer.js2
-rw-r--r--tests/resources/yuicompressor/How to.md2
-rw-r--r--tests/resources/yuicompressor/yuicompressor-2.4.7.jarbin0 -> 891148 bytes
741 files changed, 24610 insertions, 4204 deletions
diff --git a/.gitignore b/.gitignore
index 8a53c53e11..e5748d7c31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,7 @@ php_errors.log
*.tmp
*.pyc
.DS_Store
-
+/.idea/
/bootstrap.php
/build
/composer.phar
diff --git a/.gitmodules b/.gitmodules
index f3ca2aff64..ba524bbbd1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -42,6 +42,10 @@
path = plugins/CustomDimensions
url = https://github.com/piwik/plugin-CustomDimensions.git
branch = master
+[submodule "plugins/Bandwidth"]
+ path = plugins/Bandwidth
+ url = https://github.com/piwik/plugin-Bandwidth.git
+ branch = master
# Add new Plugin submodule above this line ^^
diff --git a/.travis.yml b/.travis.yml
index 04c4a6fc9c..a821c6294d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -50,7 +50,6 @@ env:
- PIWIK_ROOT_DIR=$TRAVIS_BUILD_DIR
- SKIP_INSTALL_MYSQL_56=1
- secure: "AMhZmPZx4SUcuZRBzGHlQPxzM4D8FvFB3UThDa52gbi9KIBrwcumzV2VGi6B\n5fgjwtB4XTE1In7qhY2HMikPWBmWYYOQ5QcMPJsqqHt4iMmahx8WKzne6NOk\nNpqAuje/fulNGeP2LJZi0nrub3Fh4VwXaOvpNloKNQN/2JuqPtM="
- - secure: "DySde80fX3dw0osGY5s5lGiGLjMleUkkONsuRDC4xjT1hAQP94FGHpPXVZV8\nAQY0s8MQmcK2eRLOQrmE9Bh1XXbGqh40s66XhSWq0hulFHxQH5OLaZXccFeu\n5WxGkHXnNDIc+CVhXW/IIbHZPO1K6hffS8fuvP1o6mYgxwFL6Xw="
- secure: "CW73pDjcaabpSL7bWiWIQLydKmvLzA1gWNv/zK0VcAKezQtCAQbqpIY1+B56wOhkaCWa7P+xdd2gUWEtvvdRKEC0sZcgCdHD5pQx390e5PWCMQTFO+doAElI4w4DMATCbH890Wcw2rotiZcjlkPYY+urIpUlcRsl6mMtBVQuQ9c="
matrix:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08e09abd05..2cf95ce416 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,8 @@ Read more about migrating a plugin from Piwik 2.X to Piwik 3 in [our Migration g
* The menu classes `Piwik\Menu\MenuReporting` and `Piwik\Menu\MenuMain` have been removed
* The class `Piwik\Plugin\Widgets` has been removed and replaced by `Piwik\Widget\Widget`. For each widget one class is needed from now on. You can generate a widget via `./console generate:widget`.
* The class `Piwik\WidgetList` class has been moved to `Piwik\Widget\WidgetsList`.
+* The method `Piwik\Plugins\API\API::getLastDate()` has been removed.
+* The method `Piwik\Archive::getDataTableFromArchive()` has been removed, use `Piwik\Archive::createDataTableFromArchive` instead.
* The method `Piwik\Plugin\Menu::configureReportingMenu` has been removed. To add something to the reporting menu you need to create widgets
* The method `Report::configureWidget()`, `Report::getWidgetTitle()` and `Report::configureReportingMenu()` have been removed, use the new method `Report::configureWidgets()` instead.
* The method `Report::getCategory()` has been moved to `Report::getCategoryId()` and does no longer return the translated category but the translation key of the category.
@@ -22,11 +24,12 @@ Read more about migrating a plugin from Piwik 2.X to Piwik 3 in [our Migration g
* The properties `Report::$widgetTitle`, `Report::$widgetParams` and `Report::$menuTitle` were removed, use the method `Report::configureWidgets()` to create widgets instead
* In the HTTP API methods `Dashboard.getDefaultDashboard` and `Dashboard.getUserDashboards` we do no longer remove not existing widgets as it is up to the client which widgets actually exist
* The method `Piwik\Plugin\Controller::getEvolutionHtml` has been removed without a replacement as it should be no longer needed. The evolution is generated by ViewDataTables directly
-* The `core:plugin` console command has been removed in favor of the new `plugin:list`, `plugin:activate` and `plugin:deactivate` commands as anounced in Piwik 2.11
+* The `core:plugin` console command has been removed in favor of the new `plugin:list`, `plugin:activate` and `plugin:deactivate` commands as announced in Piwik 2.11
* The visibility of private properties and methods in `Piwik\Plugins\Login\Controller` were changed to `protected`
* Controller actions are now case sensitive. This means the URL and events have to use the same case as the name of the action defined in a controller.
* When calling the HTTP Reporting API, a default filter limit of 100 is now always applied. The default filter limit used to be not applied to API calls that do not return reports, such as when requesting sites, users or goals information.
* The "User Menu" was removed and should be replaced by "Admin Menu". Change `configureUserMenu(MenuUser $menu)` to `configureAdminMenu(MenuAdmin $menu)` in your `Menu.php`.
+* The method `Piwik\Menu\MenuAbstract::add()` has been removed, use `Piwik\Menu\MenuAbstract::addItem()` instead
* The method `Piwik\Menu\MenuAdmin::addSettingsItem()` was removed, use `Piwik\Menu\MenuAdmin::addSystemItem()` instead.
* A new methd `Piwik\Menu\MenuAdmin::addMeasurablesItem()` was added.
* The class `Piwik\Plugin\Settings` has been splitted to `Piwik\Settings\Plugin\SystemSettings` and `Piwik\Settings\Plugin\UserSettings`.
@@ -67,6 +70,7 @@ Read more about migrating a plugin from Piwik 2.X to Piwik 3 on our [Migration g
* The JavaScript AjaxHelper has a new method `ajaxHelper.withTokenInUrl()` to easily send a token along a XHR. Within the Controller the existence of this token can be checked via `$this->checkTokenInUrl();` to prevent CSRF attacks.
* The new class `Piwik\Updater\Migration\Factory` lets you easily create migrations that can be executed during an update. For example database or plugin related migrations. To generate a new update with migrations execute `./console generate:update`.
* The new method `Piwik\Updater::executeMigration` lets you execute a single migration.
+* The new method `Piwik\Segment::willBeArchived` lets you detect whether a segment will be archived or not.
* The following events have been added:
* `ViewDataTable.filterViewDataTable` lets you filter available visualizations
* `Dimension.addDimension` lets you add custom dimensions
@@ -76,8 +80,11 @@ Read more about migrating a plugin from Piwik 2.X to Piwik 3 on our [Migration g
* `Updater.componentUpdated` triggered after core or a plugin has been updated
* `PluginManager.pluginInstalled` triggered after a plugin was installed
* `PluginManager.pluginUninstalled` triggered after a plugin was uninstalled
+ * `Updater.componentInstalled` triggered after a component was installed
+ * `Updater.componentUninstalled` triggered after a component was uninstalled
* New HTTP Tracking API parameter `pv_id` which accepts a six character unique ID that identifies which actions were performed on a specific page view. Read more about it in the [HTTP Tracking API](https://developer.piwik.org/api-reference/tracking-api);
* New event `Segment.addSegments` that lets you add segments.
+* New Piwik JavaScript Tracker method `disableHeartBeatTimer()` to disable the heartbeat timer if it was previously enabled.
### New features
* New "Sparklines" visualization that lets you create a widget showing multiple sparklines.
@@ -137,6 +144,11 @@ The folder containing expected screenshots was renamed from `expected-ui-screens
* Tracking API: by default, when tracking a Page URL, Piwik will now remove the URL query string parameter `sid` if it is found.
* In the JavaScript tracker, the function `setDomains` will not anymore attempt to set a cookie path. Learn more about [configuring the tracker correctly](http://developer.piwik.org/guides/tracking-javascript-guide#tracking-one-domain) when tracking one or several domains and/or paths.
+## Piwik 2.16.1
+
+### Internal change
+ * The setting `[General]enable_marketplace=0/1` was removed, instead the new plugin Marketplace can be disabled/enabled. The updater should automatically migrate an existing setting.
+
## Piwik 2.16.0
### New features
diff --git a/composer.json b/composer.json
index c6f15b0b67..ef6b953aaf 100644
--- a/composer.json
+++ b/composer.json
@@ -44,7 +44,8 @@
"piwik/referrer-spam-blacklist": "~1.0",
"piwik/searchengine-and-social-list": "~1.0",
"tecnickcom/tcpdf": "~6.0",
- "piwik/piwik-php-tracker": "^1.0"
+ "piwik/piwik-php-tracker": "^1.0",
+ "composer/semver": "~1.3.0"
},
"require-dev": {
"aws/aws-sdk-php": "2.7.1",
diff --git a/composer.lock b/composer.lock
index d1164b4d32..3ffc6dbe3f 100644
--- a/composer.lock
+++ b/composer.lock
@@ -8,6 +8,68 @@
"content-hash": "6c07c2bb4f82daef6519c9ac18c642c4",
"packages": [
{
+ "name": "composer/semver",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "df4463baa9f44fe6cf0a6da4fde2934d4c0a2747"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/df4463baa9f44fe6cf0a6da4fde2934d4c0a2747",
+ "reference": "df4463baa9f44fe6cf0a6da4fde2934d4c0a2747",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "time": "2016-02-25 22:23:39"
+ },
+ {
"name": "container-interop/container-interop",
"version": "1.1.0",
"source": {
@@ -624,16 +686,16 @@
},
{
"name": "piwik/cache",
- "version": "1.0.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/piwik/component-cache.git",
- "reference": "4cae40390a6fe8269e334d1204c51cf79c5e15e1"
+ "reference": "5f6652574440d9886741918a1e4dc1c555820501"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/piwik/component-cache/zipball/4cae40390a6fe8269e334d1204c51cf79c5e15e1",
- "reference": "4cae40390a6fe8269e334d1204c51cf79c5e15e1",
+ "url": "https://api.github.com/repos/piwik/component-cache/zipball/5f6652574440d9886741918a1e4dc1c555820501",
+ "reference": "5f6652574440d9886741918a1e4dc1c555820501",
"shasum": ""
},
"require": {
@@ -667,7 +729,7 @@
"file",
"redis"
],
- "time": "2016-09-14 20:19:56"
+ "time": "2016-11-15 02:33:06"
},
{
"name": "piwik/decompress",
@@ -1443,7 +1505,7 @@
"performance",
"profiling"
],
- "time": "2015-02-26 14:37:51"
+ "time": "2014-08-28 17:34:52"
},
{
"name": "guzzle/guzzle",
diff --git a/config/global.ini.php b/config/global.ini.php
index 61f5045a63..a12a5947ad 100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -90,6 +90,8 @@ backends[] = file
; Redis server configuration.
host = "127.0.0.1"
port = 6379
+; instead of host and port a unix socket path can be configured
+unix_socket = ""
timeout = 0.0
password = ""
database = 14
@@ -242,8 +244,7 @@ process_new_segments_from = "beginning_of_time"
; it is useful to have an actual string to write in the UI
action_default_name = index
-; if you want all your users to use Piwik in only one language, disable the LanguagesManager
-; plugin, and set this default_language (users won't see the language drop down)
+; default language to use in Piwik
default_language = en
; default number of elements in the datatable
@@ -442,6 +443,12 @@ multisites_refresh_after_seconds = 300
; set the HTTPS environment variable.
assume_secure_protocol = 0
+; Set to 1 if you're using more than one server for your Piwik installation. For example if you are using Piwik in a
+; load balanced environment, if you have configured failover or if you're just using multiple servers in general.
+; By enabling this flag we will for example not allow the installation of a plugin via the UI as a plugin would be only
+; installed on one server or a config one change would be only made on one server instead of all servers.
+multi_server_environment = 0
+
; List of proxy headers for client IP addresses
; Piwik will determine the user IP by extracting the first IP address found in this proxy header.
;
@@ -527,14 +534,9 @@ absolute_chroot_path =
; This may for example be useful when doing Mysql AWS replication
enable_load_data_infile = 1
-; By setting this option to 0, you can disable the Piwik marketplace. This is useful to prevent giving the Super user
-; the access to disk and install custom PHP code (Piwik plugins).
-enable_marketplace = 1
-
; By setting this option to 0:
; - links to Enable/Disable/Uninstall plugins will be hidden and disabled
; - links to Uninstall themes will be disabled (but user can still enable/disable themes)
-; - as well as disabling plugins admin actions (such as "Upload new plugin"), setting this to 1 will have same effect as setting enable_marketplace=1
enable_plugins_admin = 1
; By setting this option to 0, you can prevent Super User from editing the Geolocation settings.
@@ -806,6 +808,7 @@ Plugins[] = Resolution
Plugins[] = DevicePlugins
Plugins[] = Heartbeat
Plugins[] = Intl
+Plugins[] = Marketplace
Plugins[] = ProfessionalServices
Plugins[] = UserId
Plugins[] = CustomPiwikJs
diff --git a/core/API/DataTableManipulator/Flattener.php b/core/API/DataTableManipulator/Flattener.php
index a976b7a62e..7aaef6bf27 100644
--- a/core/API/DataTableManipulator/Flattener.php
+++ b/core/API/DataTableManipulator/Flattener.php
@@ -61,20 +61,16 @@ class Flattener extends DataTableManipulator
*/
protected function manipulateDataTable($dataTable)
{
- // apply filters now since subtables have their filters applied before generic filters. if we don't do this
- // now, we'll try to apply filters to rows that have already been manipulated. this results in errors like
- // 'column ... already exists'.
- $keepFilters = true;
- if (Common::getRequestVar('disable_queued_filters', 0, 'int', $this->request) == 0) {
- $dataTable->applyQueuedFilters();
- $keepFilters = false;
- }
+ $newDataTable = $dataTable->getEmptyClone($keepFilters = true);
- $newDataTable = $dataTable->getEmptyClone($keepFilters);
foreach ($dataTable->getRows() as $rowId => $row) {
$this->flattenRow($row, $rowId, $newDataTable);
}
+ $queuedFiltersEnabled = Common::getRequestVar('disable_queued_filters', 0, 'int', $this->request) == 0;
+ if ($queuedFiltersEnabled) {
+ $newDataTable->applyQueuedFilters();
+ }
return $newDataTable;
}
diff --git a/core/API/DocumentationGenerator.php b/core/API/DocumentationGenerator.php
index 456e487f00..e738c6c4c8 100644
--- a/core/API/DocumentationGenerator.php
+++ b/core/API/DocumentationGenerator.php
@@ -285,6 +285,8 @@ class DocumentationGenerator
'addGoal',
'updateGoal',
'deleteGoal',
+ //Marketplace
+ 'deleteLicenseKey'
);
if (in_array($methodName, $doNotPrintExampleForTheseMethods)) {
diff --git a/core/Archive.php b/core/Archive.php
index a8b87e439e..4fc7e219bc 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -32,7 +32,7 @@ use Piwik\Period\Factory as PeriodFactory;
* reports using the {@link getBlob()}, {@link getDataTable()} and {@link getDataTableExpanded()} methods.
*
* If you're creating an API that returns report data, you may want to use the
- * {@link getDataTableFromArchive()} helper function.
+ * {@link createDataTableFromArchive()} helper function.
*
* ### Learn more
*
@@ -85,8 +85,7 @@ use Piwik\Period\Factory as PeriodFactory;
*
* public function getMyReport($idSite, $period, $date, $segment = false, $expanded = false)
* {
- * $dataTable = Archive::getDataTableFromArchive('MyPlugin_MyReport', $idSite, $period, $date, $segment, $expanded);
- * $dataTable->queueFilter('ReplaceColumnNames');
+ * $dataTable = Archive::createDataTableFromArchive('MyPlugin_MyReport', $idSite, $period, $date, $segment, $expanded);
* return $dataTable;
* }
*
@@ -438,64 +437,37 @@ class Archive
* Helper function that creates an Archive instance and queries for report data using
* query parameter data. API methods can use this method to reduce code redundancy.
*
- * @param string $name The name of the report to return.
+ * @param string $recordName The name of the report to return.
* @param int|string|array $idSite @see {@link build()}
* @param string $period @see {@link build()}
* @param string $date @see {@link build()}
* @param string $segment @see {@link build()}
* @param bool $expanded If true, loads all subtables. See {@link getDataTableExpanded()}
+ * @param bool $flat If true, loads all subtables and disabled all recursive filters.
* @param int|null $idSubtable See {@link getDataTableExpanded()}
* @param int|null $depth See {@link getDataTableExpanded()}
- * @throws \Exception
- * @return DataTable|DataTable\Map See {@link getDataTable()} and
- * {@link getDataTableExpanded()} for more
- * information
- * @deprecated Since Piwik 2.12.0 Use Archive::createDataTableFromArchive() instead
+ * @return DataTable|DataTable\Map
*/
- public static function getDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded,
- $idSubtable = null, $depth = null)
+ public static function createDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded = false, $flat = false, $idSubtable = null, $depth = null)
{
Piwik::checkUserHasViewAccess($idSite);
+ if ($flat && !$idSubtable) {
+ $expanded = true;
+ }
+
$archive = Archive::build($idSite, $period, $date, $segment, $_restrictSitesToLogin = false);
if ($idSubtable === false) {
$idSubtable = null;
}
if ($expanded) {
- $dataTable = $archive->getDataTableExpanded($name, $idSubtable, $depth);
+ $dataTable = $archive->getDataTableExpanded($recordName, $idSubtable, $depth);
} else {
- $dataTable = $archive->getDataTable($name, $idSubtable);
+ $dataTable = $archive->getDataTable($recordName, $idSubtable);
}
$dataTable->queueFilter('ReplaceSummaryRowLabel');
-
- return $dataTable;
- }
-
- /**
- * Helper function that creates an Archive instance and queries for report data using
- * query parameter data. API methods can use this method to reduce code redundancy.
- *
- * @param string $recordName The name of the report to return.
- * @param int|string|array $idSite @see {@link build()}
- * @param string $period @see {@link build()}
- * @param string $date @see {@link build()}
- * @param string $segment @see {@link build()}
- * @param bool $expanded If true, loads all subtables. See {@link getDataTableExpanded()}
- * @param bool $flat If true, loads all subtables and disabled all recursive filters.
- * @param int|null $idSubtable See {@link getDataTableExpanded()}
- * @param int|null $depth See {@link getDataTableExpanded()}
- * @return DataTable|DataTable\Map
- */
- public static function createDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded = false, $flat = false, $idSubtable = null, $depth = null)
- {
- if ($flat && !$idSubtable) {
- $expanded = true;
- }
-
- $dataTable = self::getDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded, $idSubtable, $depth);
-
$dataTable->queueFilter('ReplaceColumnNames');
if ($expanded) {
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index 8e027cda43..4f8391c281 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -251,7 +251,7 @@ class Rules
* @param Segment $segment
* @return bool
*/
- protected static function isSegmentPreProcessed(array $idSites, Segment $segment)
+ public static function isSegmentPreProcessed(array $idSites, Segment $segment)
{
$segmentsToProcess = self::getSegmentsToProcess($idSites);
diff --git a/core/DataTable.php b/core/DataTable.php
index 1cfe92491d..ba598f3c1d 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -155,9 +155,8 @@ require_once PIWIK_INCLUDE_PATH . "/core/DataTable/Bridges.php";
*
* public function getMyReport($idSite, $period, $date, $segment = false, $expanded = false)
* {
- * $dataTable = Archive::getDataTableFromArchive('MyPlugin_MyReport', $idSite, $period, $date, $segment, $expanded);
+ * $dataTable = Archive::createDataTableFromArchive('MyPlugin_MyReport', $idSite, $period, $date, $segment, $expanded);
* $dataTable->filter('Sort', array(Metrics::INDEX_NB_VISITS, 'desc', $naturalSort = false, $expanded));
- * $dataTable->queueFilter('ReplaceColumnNames');
* $dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'url', __NAMESPACE__ . '\getUrlFromLabelForMyReport'));
* return $dataTable;
* }
diff --git a/core/DataTable/Filter/ReplaceColumnNames.php b/core/DataTable/Filter/ReplaceColumnNames.php
index cbf4bbb363..b1361c50b3 100644
--- a/core/DataTable/Filter/ReplaceColumnNames.php
+++ b/core/DataTable/Filter/ReplaceColumnNames.php
@@ -30,7 +30,7 @@ use Piwik\Tracker\GoalManager;
* // filter use in a plugin's API method
* public function getMyReport($idSite, $period, $date, $segment = false, $expanded = false)
* {
- * $dataTable = Archive::getDataTableFromArchive('MyPlugin_MyReport', $idSite, $period, $date, $segment, $expanded);
+ * $dataTable = Archive::createDataTableFromArchive('MyPlugin_MyReport', $idSite, $period, $date, $segment, $expanded);
* $dataTable->queueFilter('ReplaceColumnNames');
* return $dataTable;
* }
diff --git a/core/DbHelper.php b/core/DbHelper.php
index 96ba2c5a1d..1687cc89e8 100644
--- a/core/DbHelper.php
+++ b/core/DbHelper.php
@@ -198,7 +198,7 @@ class DbHelper
*/
public static function isValidDbname($dbname)
{
- return (0 !== preg_match('/(^[a-zA-Z0-9]+([a-zA-Z_0-9.-\+]*))$/D', $dbname));
+ return (0 !== preg_match('/(^[a-zA-Z0-9]+([a-zA-Z0-9\_\.\-\+]*))$/D', $dbname));
}
}
diff --git a/core/Filechecks.php b/core/Filechecks.php
index 387fa244ca..33e65c9055 100644
--- a/core/Filechecks.php
+++ b/core/Filechecks.php
@@ -310,11 +310,19 @@ class Filechecks
return '';
}
- $group = posix_getgrgid($stat[5]);
- $group = $group['name'];
+ if (function_exists('posix_getgrgid')) {
+ $group = posix_getgrgid($stat[5]);
+ $group = $group['name'];
+ } else {
+ return '';
+ }
- $user = posix_getpwuid($stat[4]);
- $user = $user['name'];
+ if (function_exists('posix_getpwuid')) {
+ $user = posix_getpwuid($stat[4]);
+ $user = $user['name'];
+ } else {
+ return '';
+ }
return "$user:$group";
}
diff --git a/core/Http.php b/core/Http.php
index 7e7602c20e..373c4815d9 100644
--- a/core/Http.php
+++ b/core/Http.php
@@ -94,17 +94,24 @@ class Http
$httpPassword = null)
{
// create output file
- $file = null;
+ $file = self::ensureDestinationDirectoryExists($destinationPath);
+
+ $acceptLanguage = $acceptLanguage ? 'Accept-Language: ' . $acceptLanguage : '';
+ return self::sendHttpRequestBy(self::getTransportMethod(), $aUrl, $timeout, $userAgent, $destinationPath, $file, $followDepth, $acceptLanguage, $acceptInvalidSslCertificate = false, $byteRange, $getExtendedInfo, $httpMethod, $httpUsername, $httpPassword);
+ }
+
+ public static function ensureDestinationDirectoryExists($destinationPath)
+ {
if ($destinationPath) {
- // Ensure destination directory exists
Filesystem::mkdir(dirname($destinationPath));
if (($file = @fopen($destinationPath, 'wb')) === false || !is_resource($file)) {
throw new Exception('Error while creating the file: ' . $destinationPath);
}
+
+ return $file;
}
- $acceptLanguage = $acceptLanguage ? 'Accept-Language: ' . $acceptLanguage : '';
- return self::sendHttpRequestBy(self::getTransportMethod(), $aUrl, $timeout, $userAgent, $destinationPath, $file, $followDepth, $acceptLanguage, $acceptInvalidSslCertificate = false, $byteRange, $getExtendedInfo, $httpMethod, $httpUsername, $httpPassword);
+ return null;
}
/**
diff --git a/core/Menu/MenuAbstract.php b/core/Menu/MenuAbstract.php
index d172bc3fe3..ca30c02cc7 100644
--- a/core/Menu/MenuAbstract.php
+++ b/core/Menu/MenuAbstract.php
@@ -99,29 +99,6 @@ abstract class MenuAbstract extends Singleton
* @param string $subMenuName The menu item's name. Can be a translation token.
* @param string|array $url The URL the admin menu entry should link to, or an array of query parameters
* that can be used to build the URL.
- * @param boolean $displayedForCurrentUser Whether this menu entry should be displayed for the
- * current user. If false, the entry will not be added.
- * @param int $order The order hint.
- * @param bool|string $tooltip An optional tooltip to display or false to display the tooltip.
- *
- * @deprecated since 2.7.0 Use {@link addItem() instead}. Method will be removed in Piwik 3.0
- */
- public function add($menuName, $subMenuName, $url, $displayedForCurrentUser = true, $order = 50, $tooltip = false)
- {
- if (!$displayedForCurrentUser) {
- return;
- }
-
- $this->addItem($menuName, $subMenuName, $url, $order, $tooltip);
- }
-
- /**
- * Adds a new entry to the menu.
- *
- * @param string $menuName The menu's category name. Can be a translation token.
- * @param string $subMenuName The menu item's name. Can be a translation token.
- * @param string|array $url The URL the admin menu entry should link to, or an array of query parameters
- * that can be used to build the URL.
* @param int $order The order hint.
* @param bool|string $tooltip An optional tooltip to display or false to display the tooltip.
* @since 2.7.0
diff --git a/core/Menu/MenuAdmin.php b/core/Menu/MenuAdmin.php
index 48951171b2..f40327cbe8 100644
--- a/core/Menu/MenuAdmin.php
+++ b/core/Menu/MenuAdmin.php
@@ -16,19 +16,6 @@ use Piwik\Piwik;
* Plugins can implement the `configureAdminMenu()` method of the `Menu` plugin class to add, rename of remove
* items. If your plugin does not have a `Menu` class yet you can create one using `./console generate:menu`.
*
- * **Example**
- *
- * public function configureAdminMenu(MenuAdmin $menu)
- * {
- * $menu->add(
- * 'MyPlugin_MyTranslatedAdminMenuCategory',
- * 'MyPlugin_MyTranslatedAdminPageName',
- * array('module' => 'MyPlugin', 'action' => 'index'),
- * Piwik::isUserHasSomeAdminAccess(),
- * $order = 2
- * );
- * }
- *
* @method static \Piwik\Menu\MenuAdmin getInstance()
*/
class MenuAdmin extends MenuAbstract
diff --git a/core/Menu/MenuTop.php b/core/Menu/MenuTop.php
index bd97c1b84a..8784604a09 100644
--- a/core/Menu/MenuTop.php
+++ b/core/Menu/MenuTop.php
@@ -15,19 +15,6 @@ use Piwik\Piwik;
* Plugins can implement the `configureTopMenu()` method of the `Menu` plugin class to add, rename of remove
* items. If your plugin does not have a `Menu` class yet you can create one using `./console generate:menu`.
*
- * **Example**
- *
- * public function configureTopMenu(MenuTop $menu)
- * {
- * $menu->add(
- * 'MyPlugin_MyTranslatedMenuCategory',
- * 'MyPlugin_MyTranslatedMenuName',
- * array('module' => 'MyPlugin', 'action' => 'index'),
- * Piwik::isUserHasSomeAdminAccess(),
- * $order = 2
- * );
- * }
- *
* @method static \Piwik\Menu\MenuTop getInstance()
*/
class MenuTop extends MenuAbstract
diff --git a/core/Notification.php b/core/Notification.php
index b7c576eba0..7672263ab3 100644
--- a/core/Notification.php
+++ b/core/Notification.php
@@ -81,6 +81,13 @@ class Notification
const FLAG_NO_CLEAR = 1;
/**
+ * If this flag is applied, a close icon will be displayed.
+ *
+ * See {@link $flags}.
+ */
+ const FLAG_CLEAR = 0;
+
+ /**
* Notifications of this type will be displayed for a few seconds and then faded out.
*/
const TYPE_TOAST = 'toast';
diff --git a/core/Plugin.php b/core/Plugin.php
index 82ef4f2fec..949895b70e 100644
--- a/core/Plugin.php
+++ b/core/Plugin.php
@@ -42,7 +42,6 @@ require_once PIWIK_INCLUDE_PATH . '/core/Plugin/MetadataLoader.php';
* - **homepage**: The URL to the plugin's website.
* - **authors**: A list of author arrays with keys for 'name', 'email' and 'homepage'
* - **license**: The license the code uses (eg, GPL, MIT, etc.).
- * - **license_homepage**: URL to website describing the license used.
* - **version**: The plugin version (eg, 1.0.1).
* - **theme**: `true` or `false`. If `true`, the plugin will be treated as a theme.
*
@@ -184,7 +183,6 @@ class Plugin
* - 'author_homepage' => string // author homepage URL (or email "mailto:youremail@example.org")
* - 'homepage' => string // plugin homepage URL
* - 'license' => string // plugin license
- * - 'license_homepage' => string // license homepage URL
* - 'version' => string // plugin version number; examples and 3rd party plugins must not use Version::VERSION; 3rd party plugins must increment the version number with each plugin release
* - 'theme' => bool // Whether this plugin is a theme (a theme is a plugin, but a plugin is not necessarily a theme)
*
diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php
index 092a963b8a..73bf47d32b 100644
--- a/core/Plugin/ControllerAdmin.php
+++ b/core/Plugin/ControllerAdmin.php
@@ -10,12 +10,14 @@ namespace Piwik\Plugin;
use Piwik\Config as PiwikConfig;
use Piwik\Config;
+use Piwik\Container\StaticContainer;
use Piwik\Development;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuTop;
use Piwik\Notification;
use Piwik\Notification\Manager as NotificationManager;
use Piwik\Piwik;
+use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Tracker\TrackerConfig;
use Piwik\Url;
use Piwik\Version;
@@ -40,6 +42,50 @@ abstract class ControllerAdmin extends Controller
}
}
+ private static function notifyAnyInvalidLicense()
+ {
+ if (!Marketplace::isMarketplaceEnabled()) {
+ return;
+ }
+
+ if (Piwik::isUserIsAnonymous()) {
+ return;
+ }
+
+ if (!Piwik::isUserHasSomeAdminAccess()) {
+ return;
+ }
+
+ $expired = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins\InvalidLicenses');
+
+ $messageLicenseMissing = $expired->getMessageNoLicense();
+ if (!empty($messageLicenseMissing)) {
+ $notification = new Notification($messageLicenseMissing);
+ $notification->raw = true;
+ $notification->context = Notification::CONTEXT_ERROR;
+ $notification->title = Piwik::translate('Marketplace_LicenseMissing');
+ Notification\Manager::notify('ControllerAdmin_LicenseMissingWarning', $notification);
+ }
+
+ $messageExceeded = $expired->getMessageExceededLicenses();
+ if (!empty($messageExceeded)) {
+ $notification = new Notification($messageExceeded);
+ $notification->raw = true;
+ $notification->context = Notification::CONTEXT_WARNING;
+ $notification->title = Piwik::translate('Marketplace_LicenseExceeded');
+ Notification\Manager::notify('ControllerAdmin_LicenseExceededWarning', $notification);
+ }
+
+ $messageExpired = $expired->getMessageExpiredLicenses();
+ if (!empty($messageExpired)) {
+ $notification = new Notification($messageExpired);
+ $notification->raw = true;
+ $notification->context = Notification::CONTEXT_WARNING;
+ $notification->title = Piwik::translate('Marketplace_LicenseExpired');
+ Notification\Manager::notify('ControllerAdmin_LicenseExpiredWarning', $notification);
+ }
+ }
+
private static function notifyAnyInvalidPlugin()
{
$missingPlugins = \Piwik\Plugin\Manager::getInstance()->getMissingPlugins();
@@ -272,6 +318,7 @@ abstract class ControllerAdmin extends Controller
$view->isSuperUser = Piwik::hasUserSuperUserAccess();
+ self::notifyAnyInvalidLicense();
self::notifyAnyInvalidPlugin();
self::notifyWhenPhpVersionIsEOL();
self::notifyWhenPhpVersionIsNotCompatibleWithNextMajorPiwik();
diff --git a/core/Plugin/Dependency.php b/core/Plugin/Dependency.php
index e1ccc1c92c..127d32eabf 100644
--- a/core/Plugin/Dependency.php
+++ b/core/Plugin/Dependency.php
@@ -8,7 +8,9 @@
*/
namespace Piwik\Plugin;
+use Composer\Semver\VersionParser;
use Piwik\Plugin\Manager as PluginManager;
+use Piwik\Plugins\Marketplace\Environment;
use Piwik\Version;
/**
@@ -17,10 +19,18 @@ use Piwik\Version;
class Dependency
{
private $piwikVersion;
+ private $phpVersion;
public function __construct()
{
$this->setPiwikVersion(Version::VERSION);
+ $this->setPhpVersion(PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION);
+ }
+
+ public function setEnvironment(Environment $environment)
+ {
+ $this->setPiwikVersion($environment->getPiwikVersion());
+ $this->setPhpVersion($environment->getPhpVersion());
}
public function getMissingDependencies($requires)
@@ -50,40 +60,91 @@ class Dependency
public function getMissingVersions($currentVersion, $requiredVersion)
{
- $currentVersion = trim($currentVersion);
- $requiredVersions = explode(',', (string) $requiredVersion);
+ $currentVersion = trim($currentVersion);
$missingVersions = array();
+ if (empty($currentVersion)) {
+ if (!empty($requiredVersion)) {
+ $missingVersions[] = (string) $requiredVersion;
+ }
+
+ return $missingVersions;
+ }
+
+ $requiredVersion = $this->makeVersionBackwardsCompatibleIfNoComparisonDefined($requiredVersion);
+
+ $version = new VersionParser();
+ $constraintsExisting = $version->parseConstraints($currentVersion);
+
+ $requiredVersions = explode(',', (string) $requiredVersion);
+
foreach ($requiredVersions as $required) {
- $comparison = '>=';
- $required = trim($required);
+ $required = trim($required);
- if (preg_match('{^(<>|!=|>=?|<=?|==?)\s*(.*)}', $required, $matches)) {
- $required = $matches[2];
- $comparison = trim($matches[1]);
+ if (empty($required)) {
+ continue;
}
- if (false === version_compare($currentVersion, $required, $comparison)) {
- $missingVersions[] = $comparison . $required;
+ $required = $this->makeVersionBackwardsCompatibleIfNoComparisonDefined($required);
+ $constraintRequired = $version->parseConstraints($required);
+
+ if (!$constraintRequired->matches($constraintsExisting)) {
+ $missingVersions[] = $required;
}
}
return $missingVersions;
}
+ private function makeVersionBackwardsCompatibleIfNoComparisonDefined($version)
+ {
+ if (!empty($version) && preg_match('/^(\d+)\.(\d+)/', $version)) {
+ // TODO: we should remove this from piwik 3. To stay BC we add >= if no >= is defined yet
+ $version = '>=' . $version;
+ }
+
+ return $version;
+ }
+
public function setPiwikVersion($piwikVersion)
{
$this->piwikVersion = $piwikVersion;
}
+ public function setPhpVersion($phpVersion)
+ {
+ $this->phpVersion = $phpVersion;
+ }
+
+ public function hasDependencyToDisabledPlugin($requires)
+ {
+ if (empty($requires)) {
+ return false;
+ }
+
+ foreach ($requires as $name => $requiredVersion) {
+ $nameLower = strtolower($name);
+ $isPluginRequire = !in_array($nameLower, array('piwik', 'php'));
+ if ($isPluginRequire) {
+ // we do not check version, only whether it's activated. Everything that is not piwik or php is assumed
+ // a plugin so far.
+ if (!PluginManager::getInstance()->isPluginActivated($name)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
private function getCurrentVersion($name)
{
switch (strtolower($name)) {
case 'piwik':
return $this->piwikVersion;
case 'php':
- return PHP_VERSION;
+ return $this->phpVersion;
default:
try {
$pluginNames = PluginManager::getAllPluginsNames();
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 9bd2231df8..846de60086 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -17,6 +17,7 @@ use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
use Piwik\Db;
use Piwik\EventDispatcher;
+use Piwik\Exception\PluginDeactivatedException;
use Piwik\Filesystem;
use Piwik\Log;
use Piwik\Notification;
@@ -657,7 +658,12 @@ class Manager
|| $name == self::DEFAULT_THEME;
}
- protected function isPluginThirdPartyAndBogus($pluginName)
+ /**
+ * @param $pluginName
+ * @return bool
+ * @ignore
+ */
+ public function isPluginThirdPartyAndBogus($pluginName)
{
if ($this->isPluginBundledWithCore($pluginName)) {
return false;
@@ -914,7 +920,7 @@ class Manager
public function isValidPluginName($pluginName)
{
- return (bool) preg_match('/^[a-zA-Z]([a-zA-Z0-9]*)$/D', $pluginName);
+ return (bool) preg_match('/^[a-zA-Z]([a-zA-Z0-9_]*)$/D', $pluginName);
}
/**
@@ -1086,7 +1092,7 @@ class Manager
$pluginsInstalled[] = $pluginName;
$this->updatePluginsInstalledConfig($pluginsInstalled);
$updater = new Updater();
- $updater->markComponentSuccessfullyUpdated($plugin->getPluginName(), $plugin->getVersion());
+ $updater->markComponentSuccessfullyUpdated($plugin->getPluginName(), $plugin->getVersion(), $isNew = true);
$saveConfig = true;
/**
diff --git a/core/Plugin/MetadataLoader.php b/core/Plugin/MetadataLoader.php
index 5a6b2617e6..bde849ff7e 100644
--- a/core/Plugin/MetadataLoader.php
+++ b/core/Plugin/MetadataLoader.php
@@ -57,6 +57,12 @@ class MetadataLoader
unset($plugin['description']);
}
+ // look for a license file
+ $licenseFile = $this->getPathToLicenseFile();
+ if(!empty($licenseFile)) {
+ $plugin['license_file'] = $licenseFile;
+ }
+
return array_merge(
$defaults,
$plugin
@@ -78,7 +84,6 @@ class MetadataLoader
'homepage' => 'http://piwik.org/',
'authors' => array(array('name' => 'Piwik', 'homepage' => 'http://piwik.org/')),
'license' => 'GPL v3+',
- 'license_homepage' => 'http://www.gnu.org/licenses/gpl.html',
'version' => Version::VERSION,
'theme' => false,
'require' => array()
@@ -87,7 +92,7 @@ class MetadataLoader
private function loadPluginInfoJson()
{
- $path = \Piwik\Plugin\Manager::getPluginsDirectory() . $this->pluginName . '/' . self::PLUGIN_JSON_FILENAME;
+ $path = $this->getPathToPluginFolder() . '/' . self::PLUGIN_JSON_FILENAME;
return $this->loadJsonMetadata($path);
}
@@ -111,4 +116,32 @@ class MetadataLoader
return $info;
}
+
+ /**
+ * @return string
+ */
+ private function getPathToPluginFolder()
+ {
+ return \Piwik\Plugin\Manager::getPluginsDirectory() . $this->pluginName;
+ }
+
+ /**
+ * @return null|string
+ */
+ public function getPathToLicenseFile()
+ {
+ $prefixPath = $this->getPathToPluginFolder() . '/';
+ $licenseFiles = array(
+ 'LICENSE',
+ 'LICENSE.md',
+ 'LICENSE.txt'
+ );
+ foreach ($licenseFiles as $licenseFile) {
+ $pathToLicense = $prefixPath . $licenseFile;
+ if (is_file($pathToLicense) && is_readable($pathToLicense)) {
+ return $pathToLicense;
+ }
+ }
+ return null;
+ }
}
diff --git a/core/Plugin/ReleaseChannels.php b/core/Plugin/ReleaseChannels.php
index f108a32cdf..08d95d9bb2 100644
--- a/core/Plugin/ReleaseChannels.php
+++ b/core/Plugin/ReleaseChannels.php
@@ -68,6 +68,18 @@ class ReleaseChannels
return reset($channels);
}
+ /**
+ * Sets the given release channel in config but does not save id. $config->forceSave() still needs to be called
+ * @internal tests only
+ * @param string $channel
+ */
+ public function setActiveReleaseChannelId($channel)
+ {
+ $general = Config::getInstance()->General;
+ $general['release_channel'] = $channel;
+ Config::getInstance()->General = $general;
+ }
+
public function isValidReleaseChannelId($releaseChannelId)
{
$channel = $this->factory($releaseChannelId);
diff --git a/core/ProfessionalServices/Advertising.php b/core/ProfessionalServices/Advertising.php
index 07e42c46e4..ef423200ae 100644
--- a/core/ProfessionalServices/Advertising.php
+++ b/core/ProfessionalServices/Advertising.php
@@ -67,16 +67,6 @@ class Advertising
}
/**
- * Get URL for letting people know about upgrade to On premises
- *
- * @return string
- */
- public function getPromoUrlForPiwikProUpgrade()
- {
- return 'https://piwik.org/recommends/piwik-pro-from-app';
- }
-
- /**
* Appends campaign parameters to the given URL for promoting any Professional Support for Piwik service.
*
* @param string $url
diff --git a/core/ProxyHttp.php b/core/ProxyHttp.php
index 790d62229d..bf3bbf43e3 100644
--- a/core/ProxyHttp.php
+++ b/core/ProxyHttp.php
@@ -60,9 +60,12 @@ class ProxyHttp
* of the file will be served.
* @param int|false $byteEnd The ending byte in the file to serve. If false, the data from $byteStart to the
* end of the file will be served.
+ * @param string|false $filename By default the filename of $file is reused as Content-Disposition. If the
+ * file should be sent as a different filename to the client you can specify
+ * a custom filename here.
*/
public static function serverStaticFile($file, $contentType, $expireFarFutureDays = 100, $byteStart = false,
- $byteEnd = false)
+ $byteEnd = false, $filename = false)
{
// if the file cannot be found return HTTP status code '404'
if (!file_exists($file)) {
@@ -78,7 +81,12 @@ class ProxyHttp
// set some HTTP response headers
self::overrideCacheControlHeaders('public');
Common::sendHeader('Vary: Accept-Encoding');
- Common::sendHeader('Content-Disposition: inline; filename=' . basename($file));
+
+ if (false === $filename) {
+ $filename = basename($file);
+ }
+
+ Common::sendHeader('Content-Disposition: inline; filename=' . $filename);
if ($expireFarFutureDays) {
// Required by proxy caches potentially in between the browser and server to cache the request indeed
diff --git a/core/Segment.php b/core/Segment.php
index 81c661278d..aa39083cab 100644
--- a/core/Segment.php
+++ b/core/Segment.php
@@ -9,6 +9,7 @@
namespace Piwik;
use Exception;
+use Piwik\ArchiveProcessor\Rules;
use Piwik\Container\StaticContainer;
use Piwik\DataAccess\LogQueryBuilder;
use Piwik\Plugins\API\API;
@@ -211,6 +212,32 @@ class Segment
return $this->segmentExpression->isEmpty();
}
+ /**
+ * Detects whether the Piwik instance is configured to be able to archive this segment. It checks whether the segment
+ * will be either archived via browser or cli archiving. It does not check if the segment has been archived. If you
+ * want to know whether the segment has been archived, the actual report data needs to be requested.
+ *
+ * This method does not take any date/period into consideration. Meaning a Piwik instance might be able to archive
+ * this segment in general, but not for a certain period if eg the archiving of range dates is disabled.
+ *
+ * @return bool
+ */
+ public function willBeArchived()
+ {
+ if ($this->isEmpty()) {
+ return true;
+ }
+
+ $idSites = $this->idSites;
+ if (!is_array($idSites)) {
+ $idSites = array($this->idSites);
+ }
+
+ return Rules::isRequestAuthorizedToArchive()
+ || Rules::isBrowserArchivingAvailableForSegments()
+ || Rules::isSegmentPreProcessed($idSites, $this);
+ }
+
protected $availableSegments = array();
protected function getCleanedExpression($expression)
diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php
index c0b2d8e177..52c4f3e16f 100644
--- a/core/SettingsPiwik.php
+++ b/core/SettingsPiwik.php
@@ -233,6 +233,43 @@ class SettingsPiwik
}
/**
+ * Detect whether user has enabled auto updates. Please note this config is a bit misleading. It is currently
+ * actually used for 2 things: To disable making any connections back to Piwik, and to actually disable the auto
+ * update of core and plugins.
+ * @return bool
+ */
+ public static function isAutoUpdateEnabled()
+ {
+ return (bool) Config::getInstance()->General['enable_auto_update'];
+ }
+
+ /**
+ * Detects whether an auto update can be made. An update is possible if the user is not on multiple servers and if
+ * automatic updates are actually enabled. If a user is running Piwik on multiple servers an update is not possible
+ * as it would be installed only on one server instead of all of them. Also if a user has disabled automatic updates
+ * we cannot perform any automatic updates.
+ *
+ * @return bool
+ */
+ public static function isAutoUpdatePossible()
+ {
+ return !self::isMultiServerEnvironment() && self::isAutoUpdateEnabled();
+ }
+
+ /**
+ * Returns `true` if Piwik is running on more than one server. For example in a load balanced environment. In this
+ * case we should not make changes to the config and not install a plugin via the UI as it would be only executed
+ * on one server.
+ * @return bool
+ */
+ public static function isMultiServerEnvironment()
+ {
+ $is = Config::getInstance()->General['multi_server_environment'];
+
+ return !empty($is);
+ }
+
+ /**
* Returns `true` if segmentation is allowed for this user, `false` if otherwise.
*
* @return bool
diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php
index 8326df8deb..bdb4efc7ad 100644
--- a/core/Tracker/Action.php
+++ b/core/Tracker/Action.php
@@ -248,12 +248,12 @@ abstract class Action
public function getIdActionUrlForEntryAndExitIds()
{
- return $this->getIdActionUrl();
+ return false;
}
public function getIdActionNameForEntryAndExitIds()
{
- return $this->getIdActionName();
+ return false;
}
public function getIdActionName()
diff --git a/core/Tracker/ActionPageview.php b/core/Tracker/ActionPageview.php
index eb98dd4b23..79f8f46724 100644
--- a/core/Tracker/ActionPageview.php
+++ b/core/Tracker/ActionPageview.php
@@ -51,6 +51,16 @@ class ActionPageview extends Action
return true;
}
+ public function getIdActionUrlForEntryAndExitIds()
+ {
+ return $this->getIdActionUrl();
+ }
+
+ public function getIdActionNameForEntryAndExitIds()
+ {
+ return $this->getIdActionName();
+ }
+
private function cleanupActionName($actionName)
{
// get the delimiter, by default '/'; BC, we read the old action_category_delimiter first (see #1067)
diff --git a/core/Twig.php b/core/Twig.php
index 5ac84993f1..ce8085f23c 100755
--- a/core/Twig.php
+++ b/core/Twig.php
@@ -176,6 +176,9 @@ class Twig
$this->addFilter_prettyDate();
$this->addFilter_safeDecodeRaw();
$this->addFilter_number();
+ $this->addFilter_nonce();
+ $this->addFilter_md5();
+ $this->addFilter_onlyDomain();
$this->twig->addFilter(new Twig_SimpleFilter('implode', 'implode'));
$this->twig->addFilter(new Twig_SimpleFilter('ucwords', 'ucwords'));
$this->twig->addFilter(new Twig_SimpleFilter('lcfirst', 'lcfirst'));
@@ -428,6 +431,29 @@ class Twig
$this->twig->addFilter($formatter);
}
+ protected function addFilter_nonce()
+ {
+ $nonce = new Twig_SimpleFilter('nonce', array('Piwik\\Nonce', 'getNonce'));
+ $this->twig->addFilter($nonce);
+ }
+
+ private function addFilter_md5()
+ {
+ $md5 = new \Twig_SimpleFilter('md5', function ($value) {
+ return md5($value);
+ });
+ $this->twig->addFilter($md5);
+ }
+
+ private function addFilter_onlyDomain()
+ {
+ $domainOnly = new \Twig_SimpleFilter('domainOnly', function ($url) {
+ $parsed = parse_url($url);
+ return $parsed['scheme'] . '://' . $parsed['host'];
+ });
+ $this->twig->addFilter($domainOnly);
+ }
+
protected function addFilter_truncate()
{
$truncateFilter = new Twig_SimpleFilter('truncate', function ($string, $size) {
diff --git a/core/UpdateCheck.php b/core/UpdateCheck.php
index e2ce130c4a..403fa90b36 100644
--- a/core/UpdateCheck.php
+++ b/core/UpdateCheck.php
@@ -21,11 +21,6 @@ class UpdateCheck
const LATEST_VERSION = 'UpdateCheck_LatestVersion';
const SOCKET_TIMEOUT = 2;
- private static function isAutoUpdateEnabled()
- {
- return (bool) Config::getInstance()->General['enable_auto_update'];
- }
-
/**
* Check for a newer version
*
@@ -34,7 +29,7 @@ class UpdateCheck
*/
public static function check($force = false, $interval = null)
{
- if (!self::isAutoUpdateEnabled()) {
+ if (!SettingsPiwik::isAutoUpdateEnabled()) {
return;
}
diff --git a/core/UpdateCheck/ReleaseChannel.php b/core/UpdateCheck/ReleaseChannel.php
index b398ea22c3..0744378623 100644
--- a/core/UpdateCheck/ReleaseChannel.php
+++ b/core/UpdateCheck/ReleaseChannel.php
@@ -34,6 +34,15 @@ abstract class ReleaseChannel
abstract public function getName();
/**
+ * Whether only stable versions are wanted or also beta versions.
+ * @return bool
+ */
+ public function doesPreferStable()
+ {
+ return true;
+ }
+
+ /**
* Get the latest available version number for this release channel. Eg '2.15.0-b4' or '2.15.0'. Should be
* a semantic version number in format MAJOR.MINOR.PATCH (http://semver.org/). Returning an empty string in case
* one cannot connect to the remote server can be acceptable.
diff --git a/core/Updater.php b/core/Updater.php
index d53280f4da..e969add924 100644
--- a/core/Updater.php
+++ b/core/Updater.php
@@ -83,14 +83,52 @@ class Updater
*
* @param string $name The component name. Eg, a plugin name, `'core'` or dimension column name.
* @param string $version The component version (should use semantic versioning).
+ * @param bool $isNew indicates if the component is a new one (for plugins)
*/
- public function markComponentSuccessfullyUpdated($name, $version)
+ public function markComponentSuccessfullyUpdated($name, $version, $isNew = false)
{
try {
Option::set(self::getNameInOptionTable($name), $version, $autoLoad = 1);
} catch (\Exception $e) {
// case when the option table is not yet created (before 0.2.10)
}
+
+ if ($isNew) {
+
+ /**
+ * Event triggered after a new component has been installed.
+ *
+ * @param string $name The component that has been installed.
+ */
+ Piwik::postEvent('Updater.componentInstalled', array($name));
+
+ return;
+ }
+
+ /**
+ * Event triggered after a component has been updated.
+ *
+ * Can be used to handle logic that should be done after a component was updated
+ *
+ * **Example**
+ *
+ * Piwik::addAction('Updater.componentUpdated', function ($componentName, $updatedVersion) {
+ * $mail = new Mail();
+ * $mail->setDefaultFromPiwik();
+ * $mail->addTo('test@example.org');
+ * $mail->setSubject('Component was updated);
+ * $message = sprintf(
+ * 'Component %1$s has been updated to version %2$s',
+ * $componentName, $updatedVersion
+ * );
+ * $mail->setBodyText($message);
+ * $mail->send();
+ * });
+ *
+ * @param string $componentName 'core', plugin name or dimension name
+ * @param string $updatedVersion version updated to
+ */
+ Piwik::postEvent('Updater.componentUpdated', array($name, $version));
}
/**
@@ -106,6 +144,13 @@ class Updater
} catch (\Exception $e) {
// case when the option table is not yet created (before 0.2.10)
}
+
+ /**
+ * Event triggered after a component has been uninstalled.
+ *
+ * @param string $name The component that has been uninstalled.
+ */
+ Piwik::postEvent('Updater.componentUninstalled', array($name));
}
/**
@@ -280,35 +325,6 @@ class Updater
$this->executeListenerHook('onComponentUpdateFinished', array($componentName, $updatedVersion, $warningMessages));
- /**
- * Event triggered after a component has been updated.
- *
- * Can be used to handle stuff that should be done after a component was updated
- *
- * **Example**
- *
- * Piwik::addAction('Updater.componentUpdated', function ($componentName, $updatedVersion, $warningMessages) {
- * $mail = new Mail();
- * $mail->setDefaultFromPiwik();
- * $mail->addTo('test@example.org');
- * $mail->setSubject('Component was updated);
- * $message = sprintf(
- * 'Component %1$s has been updated to version %2$s',
- * $componentName, $updatedVersion
- * );
- * if (!empty($warningMessages)) {
- * $message .= "Some warnings occured:\n" . implode("\n", $warningMessages);
- * }
- * $mail->setBodyText($message);
- * $mail->send();
- * });
- *
- * @param string $componentName 'core', or plugin name
- * @param string $updatedVersion version updated to
- * @param array $warningMessages warnings occurred during update
- */
- Piwik::postEvent('Updater.componentUpdated', array($componentName, $updatedVersion, $warningMessages));
-
return $warningMessages;
}
diff --git a/core/Updates/3.0.0-b2.php b/core/Updates/3.0.0-b2.php
deleted file mode 100644
index 17c0fce85b..0000000000
--- a/core/Updates/3.0.0-b2.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-
-namespace Piwik\Updates;
-
-use Piwik\Db;
-use Piwik\Plugins\Dashboard;
-use Piwik\Updater;
-use Piwik\Updater\Migration;
-use Piwik\Updates;
-
-class Updates_3_0_0_b2 extends Updates
-{
- public static function isMajorUpdate()
- {
- return true;
- }
-}
diff --git a/core/Updates/3.0.0-b3.php b/core/Updates/3.0.0-b3.php
new file mode 100644
index 0000000000..01fc34e79b
--- /dev/null
+++ b/core/Updates/3.0.0-b3.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Updates;
+
+use Piwik\Config;
+use Piwik\Plugin;
+use Piwik\Updater;
+use Piwik\Updates as PiwikUpdates;
+use Piwik\Updates;
+
+class Updates_3_0_0_b3 extends Updates
+{
+ private $marketplaceEnabledConfigSetting = 'enable_marketplace';
+
+ public static function isMajorUpdate()
+ {
+ return true;
+ }
+
+ public function doUpdate(Updater $updater)
+ {
+ $general = $this->getConfig()->General;
+
+ // need to check against int(0) value, as if the config setting is not set at all its value is null
+ if (isset($general[$this->marketplaceEnabledConfigSetting])) {
+ $isMarketplaceEnabled = 0 !== $general[$this->marketplaceEnabledConfigSetting];
+
+ $this->removeOldMarketplaceEnabledConfig();
+
+ if ($isMarketplaceEnabled) {
+ $this->activateMarketplacePlugin();
+ }
+ } else {
+ $this->activateMarketplacePlugin();
+ }
+ }
+
+ private function getConfig()
+ {
+ return Config::getInstance();
+ }
+
+ private function removeOldMarketplaceEnabledConfig()
+ {
+ $config = $this->getConfig();
+ $general = $config->General;
+
+ if (array_key_exists($this->marketplaceEnabledConfigSetting, $general)) {
+ unset($general[$this->marketplaceEnabledConfigSetting]);
+
+ $config->General = $general;
+ $config->forceSave();
+ }
+ }
+
+ public function activateMarketplacePlugin()
+ {
+ $pluginManager = Plugin\Manager::getInstance();
+ $pluginName = 'Marketplace';
+
+ if (!$pluginManager->isPluginActivated($pluginName)) {
+ $pluginManager->activatePlugin($pluginName);
+ }
+ }
+}
diff --git a/core/Version.php b/core/Version.php
index 9a9fee75b4..d70cd0b1f2 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -20,7 +20,7 @@ final class Version
* The current Piwik version.
* @var string
*/
- const VERSION = '3.0.0-b2';
+ const VERSION = '3.0.0-b3';
public function isStableVersion($version)
{
diff --git a/core/View.php b/core/View.php
index 0c9b379a67..06b6db5f4a 100644
--- a/core/View.php
+++ b/core/View.php
@@ -87,6 +87,7 @@ if (!defined('PIWIK_USER_PATH')) {
* - **isPluginLoaded**: Returns true if the supplied plugin is loaded, false if otherwise.
* `{% if isPluginLoaded('Goals') %}...{% endif %}`
* - **areAdsForProfessionalServicesEnabled**: Returns true if it is ok to show some advertising in the UI for providers of Professional Support for Piwik (from Piwik 2.16.0)
+ * - **isMultiServerEnvironment**: Returns true if Piwik is used on more than one server (since Piwik 2.16.1)
*
* ### Examples
*
@@ -237,6 +238,7 @@ class View implements ViewInterface
$this->latest_version_available = UpdateCheck::isNewestVersionAvailable();
$this->disableLink = Common::getRequestVar('disableLink', 0, 'int');
$this->isWidget = Common::getRequestVar('widget', 0, 'int');
+ $this->isMultiServerEnvironment = SettingsPiwik::isMultiServerEnvironment();
$piwikAds = StaticContainer::get('Piwik\ProfessionalServices\Advertising');
$this->areAdsForProfessionalServicesEnabled = $piwikAds->areAdsForProfessionalServicesEnabled();
diff --git a/js/piwik.js b/js/piwik.js
index 59f0defc99..04afc3cd19 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -6093,18 +6093,25 @@ if (typeof window.Piwik !== 'object') {
}
};
-/*<DEBUG>*/
/**
- * Clear heartbeat.
+ * Disable heartbeat if it was previously activated.
*/
this.disableHeartBeatTimer = function () {
heartBeatDown();
- configHeartBeatDelay = null;
+
+ if (configHeartBeatDelay || heartBeatSetUp) {
+ if (windowAlias.removeEventListener) {
+ windowAlias.removeEventListener('focus', heartBeatOnFocus, true);
+ windowAlias.removeEventListener('blur', heartBeatOnBlur, true);
+ } else if (windowAlias.detachEvent) {
+ windowAlias.detachEvent('onfocus', heartBeatOnFocus);
+ windowAlias.detachEvent('onblur', heartBeatOnBlur);
+ }
+ }
- window.removeEventListener('focus', heartBeatOnFocus);
- window.removeEventListener('blur', heartBeatOnBlur);
+ configHeartBeatDelay = null;
+ heartBeatSetUp = false;
};
-/*</DEBUG>*/
/**
* Frame buster
@@ -6780,8 +6787,10 @@ if (typeof window.Piwik !== 'object') {
getAsyncTracker: function (piwikUrl, siteId) {
var firstTracker;
- if (asyncTrackers && asyncTrackers[0]) {
+ if (asyncTrackers && asyncTrackers.length && asyncTrackers[0]) {
firstTracker = asyncTrackers[0];
+ } else {
+ return createFirstTracker(piwikUrl, siteId);
}
if (!siteId && !piwikUrl) {
@@ -6845,6 +6854,20 @@ if (typeof window.Piwik !== 'object') {
(function () {
'use strict';
+ function hasPaqConfiguration()
+ {
+ if ('object' !== typeof _paq) {
+ return false;
+ }
+ // needed to write it this way for jslint
+ var lengthType = typeof _paq.length;
+ if ('undefined' === lengthType) {
+ return false;
+ }
+
+ return !!_paq.length;
+ }
+
if (window
&& 'object' === typeof window.piwikPluginAsyncInit
&& window.piwikPluginAsyncInit.length) {
@@ -6856,15 +6879,23 @@ if (typeof window.Piwik !== 'object') {
}
}
- window.Piwik.addTracker();
+ if (window && window.piwikAsyncInit) {
+ window.piwikAsyncInit();
+ }
+
+ if (!window.Piwik.getAsyncTrackers().length) {
+ // we only create an initial tracker when no other async tracker has been created yet in piwikAsyncInit()
+ if (hasPaqConfiguration()) {
+ // we only create an initial tracker if there is a configuration for it via _paq. Otherwise
+ // Piwik.getAsyncTrackers() would return unconfigured trackers
+ window.Piwik.addTracker();
+ }
+ }
window.Piwik.trigger('PiwikInitialized', []);
window.Piwik.initialized = true;
}());
-if (window && window.piwikAsyncInit) {
- window.piwikAsyncInit();
-}
/*jslint sloppy: true */
(function () {
diff --git a/js/piwik.min.js b/js/piwik.min.js
index 1a04b67ec5..6fa09e8deb 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -59,14 +59,14 @@ bg(cH,bj)}function cl(cF,cI,cH){var cG=b0("idgoal="+cF+(cI?"&revenue="+cI:""),cH
}else{if(!af){af={}}af[cF]=cG}};this.getCustomData=function(){return af};this.setCustomRequestProcessing=function(cF){bK=cF};this.appendToTrackingUrl=function(cF){cq=cF};this.getRequest=function(cF){return b0(cF)};this.addPlugin=function(cF,cG){a[cF]=cG};this.setCustomDimension=function(cF,cG){cF=parseInt(cF,10);if(cF>0){if(!D(cG)){cG=""}if(!s(cG)){cG=String(cG)}a1[cF]=cG}};this.getCustomDimension=function(cF){cF=parseInt(cF,10);if(cF>0&&Object.prototype.hasOwnProperty.call(a1,cF)){return a1[cF]}};this.deleteCustomDimension=function(cF){cF=parseInt(cF,10);if(cF>0){delete a1[cF]}};this.setCustomVariable=function(cG,cF,cJ,cH){var cI;if(!D(cH)){cH="visit"}if(!D(cF)){return}if(!D(cJ)){cJ=""}if(cG>0){cF=!s(cF)?String(cF):cF;cJ=!s(cJ)?String(cJ):cJ;cI=[cF.slice(0,a7),cJ.slice(0,a7)];if(cH==="visit"||cH===2){b9();aA[cG]=cI}else{if(cH==="page"||cH===3){bv[cG]=cI}else{if(cH==="event"){bU[cG]=cI}}}}};this.getCustomVariable=function(cG,cH){var cF;if(!D(cH)){cH="visit"}if(cH==="page"||cH===3){cF=bv[cG]
}else{if(cH==="event"){cF=bU[cG]}else{if(cH==="visit"||cH===2){b9();cF=aA[cG]}}}if(!D(cF)||(cF&&cF[0]==="")){return false}return cF};this.deleteCustomVariable=function(cF,cG){if(this.getCustomVariable(cF,cG)){this.setCustomVariable(cF,"","",cG)}};this.storeCustomVariablesInCookie=function(){bq=true};this.setLinkTrackingTimer=function(cF){bj=cF};this.setDownloadExtensions=function(cF){if(s(cF)){cF=cF.split("|")}cv=cF};this.addDownloadExtensions=function(cG){var cF;if(s(cG)){cG=cG.split("|")}for(cF=0;cF<cG.length;cF++){cv.push(cG[cF])}};this.removeDownloadExtensions=function(cH){var cG,cF=[];if(s(cH)){cH=cH.split("|")}for(cG=0;cG<cv.length;cG++){if(G(cH,cv[cG])===-1){cF.push(cv[cG])}}cv=cF};this.setDomains=function(cF){al=s(cF)?[cF]:cF;var cJ=false,cH=0,cG;for(cH;cH<al.length;cH++){cG=String(al[cH]);if(cb(cm,F(cG))){cJ=true;break}var cI=bT(cG);if(cI&&cI!=="/"&&cI!=="/*"){cJ=true;break}}if(!cJ){al.push(cm)}};this.setIgnoreClasses=function(cF){bc=s(cF)?[cF]:cF};this.setRequestMethod=function(cF){cy=cF||bR
};this.setRequestContentType=function(cF){b3=cF||au};this.setReferrerUrl=function(cF){a2=cF};this.setCustomUrl=function(cF){aN=bu(bn,cF)};this.setDocumentTitle=function(cF){aY=cF};this.setAPIUrl=function(cF){bi=cF};this.setDownloadClasses=function(cF){bl=s(cF)?[cF]:cF};this.setLinkClasses=function(cF){aQ=s(cF)?[cF]:cF};this.setCampaignNameKey=function(cF){bZ=s(cF)?[cF]:cF};this.setCampaignKeywordKey=function(cF){bh=s(cF)?[cF]:cF};this.discardHashTag=function(cF){bp=cF};this.setCookieNamePrefix=function(cF){aZ=cF;aA=bw()};this.setCookieDomain=function(cF){var cG=F(cF);if(a9(cG)){co=cG;aX()}};this.setCookiePath=function(cF){a4=cF;aX()};this.setVisitorCookieTimeout=function(cF){ce=cF*1000};this.setSessionCookieTimeout=function(cF){bX=cF*1000};this.setReferralCookieTimeout=function(cF){cu=cF*1000};this.setConversionAttributionFirstReferrer=function(cF){a8=cF};this.disableCookies=function(){a0=true;cw.cookie="0";if(bF){aq()}};this.deleteCookies=function(){aq()};this.setDoNotTrack=function(cG){var cF=f.doNotTrack||f.msDoNotTrack;
-ci=cG&&(cF==="yes"||cF==="1");if(ci){this.disableCookies()}};this.addListener=function(cG,cF){ah(cG,cF)};this.enableLinkTracking=function(cF){cx=true;bQ(function(){m(function(){be(cF)})})};this.enableJSErrorTracking=function(){if(ck){return}ck=true;var cF=N.onerror;N.onerror=function(cK,cI,cH,cJ,cG){bQ(function(){var cL="JavaScript Errors";var cM=cI+":"+cH;if(cJ){cM+=":"+cJ}ak(cL,cM,cK)});if(cF){return cF(cK,cI,cH,cJ,cG)}return false}};this.disablePerformanceTracking=function(){aL=false};this.setGenerationTimeMs=function(cF){bV=parseInt(cF,10)};this.enableHeartBeatTimer=function(cF){cF=Math.max(cF,1);aO=(cF||15)*1000;if(cp!==null){cD()}};this.killFrame=function(){if(N.location!==N.top.location){N.top.location=N.location}};this.redirectFile=function(cF){if(N.location.protocol==="file:"){N.location=cF}};this.setCountPreRendered=function(cF){aV=cF};this.trackGoal=function(cF,cH,cG){bQ(function(){cl(cF,cH,cG)})};this.trackLink=function(cG,cF,cI,cH){bQ(function(){cs(cG,cF,cI,cH)})};this.trackPageView=function(cF,cH,cG){bJ=[];
-if(H(bF)){bQ(function(){S(ap,bi,bF)})}else{bQ(function(){bz(cF,cH,cG)})}};this.trackAllContentImpressions=function(){if(H(bF)){return}bQ(function(){m(function(){var cF=r.findContentNodes();var cG=b6(cF);cC(cG,bj)})})};this.trackVisibleContentImpressions=function(cF,cG){if(H(bF)){return}if(!D(cF)){cF=true}if(!D(cG)){cG=750}aC(cF,cG,this);bQ(function(){j(function(){var cH=r.findContentNodes();var cI=aR(cH);cC(cI,bj)})})};this.trackContentImpression=function(cH,cF,cG){if(H(bF)){return}if(!cH){return}cF=cF||"Unknown";bQ(function(){var cI=ar(cH,cF,cG);bg(cI,bj)})};this.trackContentImpressionsWithinNode=function(cF){if(H(bF)||!cF){return}bQ(function(){if(bO){j(function(){var cG=r.findContentNodesWithinNode(cF);var cH=aR(cG);cC(cH,bj)})}else{m(function(){var cG=r.findContentNodesWithinNode(cF);var cH=b6(cG);cC(cH,bj)})}})};this.trackContentInteraction=function(cH,cI,cF,cG){if(H(bF)){return}if(!cH||!cI){return}cF=cF||"Unknown";bQ(function(){var cJ=az(cH,cI,cF,cG);bg(cJ,bj)})};this.trackContentInteractionNode=function(cG,cF){if(H(bF)||!cG){return
-}bQ(function(){var cH=cA(cG,cF);bg(cH,bj)})};this.logAllContentBlocksOnPage=function(){var cG=r.findContentNodes();var cF=r.collectContent(cG);if(console!==undefined&&console&&console.log){console.log(cF)}};this.trackEvent=function(cG,cI,cF,cH,cK,cJ){bQ(function(){ak(cG,cI,cF,cH,cK,cJ)})};this.trackSiteSearch=function(cF,cH,cG,cI){bQ(function(){bI(cF,cH,cG,cI)})};this.setEcommerceView=function(cI,cF,cH,cG){if(!D(cH)||!cH.length){cH=""}else{if(cH instanceof Array){cH=JSON2.stringify(cH)}}bv[5]=["_pkc",cH];if(D(cG)&&String(cG).length){bv[2]=["_pkp",cG]}if((!D(cI)||!cI.length)&&(!D(cF)||!cF.length)){return}if(D(cI)&&cI.length){bv[3]=["_pks",cI]}if(!D(cF)||!cF.length){cF=""}bv[4]=["_pkn",cF]};this.addEcommerceItem=function(cJ,cF,cH,cG,cI){if(cJ.length){cr[cJ]=[cJ,cF,cH,cG,cI]}};this.trackEcommerceOrder=function(cF,cJ,cI,cH,cG,cK){by(cF,cJ,cI,cH,cG,cK)};this.trackEcommerceCartUpdate=function(cF){a6(cF)};this.trackRequest=function(cF,cH,cG){bQ(function(){var cI=b0(cF,cH);bg(cI,bj,cG)})};d.trigger("TrackerSetup",[this])
-}function B(){return{push:X}}function b(ak,aj){var al={};var ah,ai;for(ah=0;ah<aj.length;ah++){var af=aj[ah];al[af]=1;for(ai=0;ai<ak.length;ai++){if(ak[ai]&&ak[ai][0]){var ag=ak[ai][0];if(af===ag){X(ak[ai]);delete ak[ai];if(al[ag]>1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)
-},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C[0]){ai=C[0]}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])
-}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
+ci=cG&&(cF==="yes"||cF==="1");if(ci){this.disableCookies()}};this.addListener=function(cG,cF){ah(cG,cF)};this.enableLinkTracking=function(cF){cx=true;bQ(function(){m(function(){be(cF)})})};this.enableJSErrorTracking=function(){if(ck){return}ck=true;var cF=N.onerror;N.onerror=function(cK,cI,cH,cJ,cG){bQ(function(){var cL="JavaScript Errors";var cM=cI+":"+cH;if(cJ){cM+=":"+cJ}ak(cL,cM,cK)});if(cF){return cF(cK,cI,cH,cJ,cG)}return false}};this.disablePerformanceTracking=function(){aL=false};this.setGenerationTimeMs=function(cF){bV=parseInt(cF,10)};this.enableHeartBeatTimer=function(cF){cF=Math.max(cF,1);aO=(cF||15)*1000;if(cp!==null){cD()}};this.disableHeartBeatTimer=function(){bk();if(aO||ay){if(N.removeEventListener){N.removeEventListener("focus",aS,true);N.removeEventListener("blur",am,true)}else{if(N.detachEvent){N.detachEvent("onfocus",aS);N.detachEvent("onblur",am)}}}aO=null;ay=false};this.killFrame=function(){if(N.location!==N.top.location){N.top.location=N.location}};this.redirectFile=function(cF){if(N.location.protocol==="file:"){N.location=cF
+}};this.setCountPreRendered=function(cF){aV=cF};this.trackGoal=function(cF,cH,cG){bQ(function(){cl(cF,cH,cG)})};this.trackLink=function(cG,cF,cI,cH){bQ(function(){cs(cG,cF,cI,cH)})};this.trackPageView=function(cF,cH,cG){bJ=[];if(H(bF)){bQ(function(){S(ap,bi,bF)})}else{bQ(function(){bz(cF,cH,cG)})}};this.trackAllContentImpressions=function(){if(H(bF)){return}bQ(function(){m(function(){var cF=r.findContentNodes();var cG=b6(cF);cC(cG,bj)})})};this.trackVisibleContentImpressions=function(cF,cG){if(H(bF)){return}if(!D(cF)){cF=true}if(!D(cG)){cG=750}aC(cF,cG,this);bQ(function(){j(function(){var cH=r.findContentNodes();var cI=aR(cH);cC(cI,bj)})})};this.trackContentImpression=function(cH,cF,cG){if(H(bF)){return}if(!cH){return}cF=cF||"Unknown";bQ(function(){var cI=ar(cH,cF,cG);bg(cI,bj)})};this.trackContentImpressionsWithinNode=function(cF){if(H(bF)||!cF){return}bQ(function(){if(bO){j(function(){var cG=r.findContentNodesWithinNode(cF);var cH=aR(cG);cC(cH,bj)})}else{m(function(){var cG=r.findContentNodesWithinNode(cF);
+var cH=b6(cG);cC(cH,bj)})}})};this.trackContentInteraction=function(cH,cI,cF,cG){if(H(bF)){return}if(!cH||!cI){return}cF=cF||"Unknown";bQ(function(){var cJ=az(cH,cI,cF,cG);bg(cJ,bj)})};this.trackContentInteractionNode=function(cG,cF){if(H(bF)||!cG){return}bQ(function(){var cH=cA(cG,cF);bg(cH,bj)})};this.logAllContentBlocksOnPage=function(){var cG=r.findContentNodes();var cF=r.collectContent(cG);if(console!==undefined&&console&&console.log){console.log(cF)}};this.trackEvent=function(cG,cI,cF,cH,cK,cJ){bQ(function(){ak(cG,cI,cF,cH,cK,cJ)})};this.trackSiteSearch=function(cF,cH,cG,cI){bQ(function(){bI(cF,cH,cG,cI)})};this.setEcommerceView=function(cI,cF,cH,cG){if(!D(cH)||!cH.length){cH=""}else{if(cH instanceof Array){cH=JSON2.stringify(cH)}}bv[5]=["_pkc",cH];if(D(cG)&&String(cG).length){bv[2]=["_pkp",cG]}if((!D(cI)||!cI.length)&&(!D(cF)||!cF.length)){return}if(D(cI)&&cI.length){bv[3]=["_pks",cI]}if(!D(cF)||!cF.length){cF=""}bv[4]=["_pkn",cF]};this.addEcommerceItem=function(cJ,cF,cH,cG,cI){if(cJ.length){cr[cJ]=[cJ,cF,cH,cG,cI]
+}};this.trackEcommerceOrder=function(cF,cJ,cI,cH,cG,cK){by(cF,cJ,cI,cH,cG,cK)};this.trackEcommerceCartUpdate=function(cF){a6(cF)};this.trackRequest=function(cF,cH,cG){bQ(function(){var cI=b0(cF,cH);bg(cI,bj,cG)})};d.trigger("TrackerSetup",[this])}function B(){return{push:X}}function b(ak,aj){var al={};var ah,ai;for(ah=0;ah<aj.length;ah++){var af=aj[ah];al[af]=1;for(ai=0;ai<ak.length;ai++){if(ak[ai]&&ak[ai][0]){var ag=ak[ai][0];if(af===ag){X(ak[ai]);delete ak[ai];if(al[ag]>1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;
+z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C.length&&C[0]){ai=C[0]}else{return V(ag,aj)}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()
+}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
/*!!! pluginTrackerHook */
-}(function(){if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}window.Piwik.addTracker();window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)
-}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
+}(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
+if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
/*!! @license-end */
}; \ No newline at end of file
diff --git a/lang/pt.json b/lang/pt.json
index 7232021e7c..c2e3a19929 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -1,5 +1,7 @@
{
"General": {
+ "12HourClock": "Formato 12H",
+ "24HourClock": "Formato 24H",
"AbandonedCarts": "Carrinhos Abandonados",
"AboutPiwikX": "Acerca de Piwik %s",
"Action": "Acção",
@@ -10,6 +12,7 @@
"AllWebsitesDashboard": "Painel de Controlo de Todos os Websites",
"And": "e",
"API": "API",
+ "Apply": "Aplicar",
"ArchivingInlineHelp": "Para websites de tráfego médio ou elevado, é recomendado desactivar o arquivar de Piwik de ser accionado quando os relatórios são vistos no navegador. Em vez disso, recomendamos que configure uma tarefa cron para processar os relatórios de Piwik cada hora.",
"ArchivingTriggerDescription": "Recomendado para instalações Piwik maiores, tem que %1$sconfigurar uma tarefa cron%2$s para processar os relatórios automaticamente.",
"AuthenticationMethodSmtp": "Método de autenticação SMTP",
@@ -302,6 +305,7 @@
"AnonymousAccess": "Acesso anónimo",
"ChooseMetric": "Escolha métrica",
"ChooseReport": "Escolher o relatório",
+ "ChooseSegment": "Escolher segmento",
"DefaultReportDate": "Data do Relatório",
"EnableGraphsLabel": "Mostrar gráficos",
"LoginCredentials": "Credenciais",
diff --git a/lang/uk.json b/lang/uk.json
index 107a0e2541..1a7a7168dd 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -171,6 +171,7 @@
"ExceptionReportNotFound": "Запитуваний звіт не існує.",
"ExceptionWidgetNotFound": "Запитуваний віджет не існує.",
"ExceptionReportNotEnabled": "Запитаний звіт не включений. Це означає, як правило, що або вимкнений плагін, який визначає цей звіт, або немає прав доступу до цього звіту.",
+ "ExceptionWidgetNotEnabled": "Запитаний віджет не активований. Це означає, як правило, що плагін, який показує віджет буде вимкнено або ви не маєте достатньо прав для доступу до цього віджету.",
"ExpandDataTableFooter": "Змінити візуалізацію або налаштувати звіт",
"Export": "Експорт",
"ExportAsImage": "Експортувати як зображення",
@@ -287,6 +288,7 @@
"Password": "Пароль",
"Period": "Період",
"Piechart": "Кругова діаграма",
+ "PiwikIsACollaborativeProjectYouCanContributeAndDonate": "%1$sPiwik%2$s це спільний проект що привів до вас %7$s команду Piwik %8$s , а також багато інших учасників по всьому світу. <br\/> Якщо ви є прихильником Piwik, Ви можете допомогти: дізнайтеся більше %3$sЯк взяти участь в Piwik%4$s, або %5$sпожертвуйте прямо зараз%6$s допомогаючи фонду Piwik 3.0!",
"PiwikXIsAvailablePleaseNotifyPiwikAdmin": "Доступний %1$s. Будь ласка повідомте %2$sадміністратору Piwik%3$s.",
"PiwikXIsAvailablePleaseUpdateNow": "Piwik %1$s доступний для завантаження. %2$s Будь ласка, оновіться!%3$s (див. %4$s зміни%5$s).",
"PleaseContactYourPiwikAdministrator": "Будь ласка, зверніться до адміністратора Piwik.",
diff --git a/libs/bower_components/iframe-resizer/.bower.json b/libs/bower_components/iframe-resizer/.bower.json
new file mode 100644
index 0000000000..5fe4004c75
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/.bower.json
@@ -0,0 +1,55 @@
+{
+ "name": "iframe-resizer",
+ "version": "3.5.5",
+ "homepage": "https://github.com/davidjbradshaw/iframe-resizer",
+ "authors": [
+ "David J. Bradshaw <dave@bradshaw.net>"
+ ],
+ "description": "Responsively keep same and cross domain iFrames sized to their content with support for window/content resizing, multiple and nested iFrames. (Dependacy free and works with IE8+)",
+ "main": [
+ "js/iframeResizer.js",
+ "js/iframeResizer.contentWindow.js"
+ ],
+ "keywords": [
+ "CrossDomain",
+ "Cross-Domain",
+ "iFrame",
+ "Resizing",
+ "Resizer",
+ "postMessage",
+ "content",
+ "resize",
+ "height",
+ "autoheight",
+ "auto-height",
+ "iframe-auto-height",
+ "height-iframe",
+ "heightiframe",
+ "width",
+ "mutationObserver",
+ "RWD",
+ "responsive",
+ "responsiveiframes",
+ "responsive-iframes"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "example",
+ "test",
+ "gruntfile.js",
+ "*.md",
+ "*.json"
+ ],
+ "dependencies": {},
+ "devDependencies": {},
+ "_release": "3.5.5",
+ "_resolution": {
+ "type": "version",
+ "tag": "v3.5.5",
+ "commit": "ddfe8e77c1fd7cc36e2b88b057ef2ab04a45c666"
+ },
+ "_source": "https://github.com/davidjbradshaw/iframe-resizer.git",
+ "_target": "~3.5.5",
+ "_originalSource": "iframe-resizer",
+ "_direct": true
+} \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/.gitignore b/libs/bower_components/iframe-resizer/.gitignore
new file mode 100644
index 0000000000..352f695b0f
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/.gitignore
@@ -0,0 +1,9 @@
+.DS_Store
+.coveralls.yml
+node_modules
+bin
+example/test.html
+test/*.off
+npm-debug.log
+bower_components
+coverage* \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/.travis.yml b/libs/bower_components/iframe-resizer/.travis.yml
new file mode 100644
index 0000000000..6f671aef5e
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - "4.1"
+before_script:
+ - npm install -g grunt-cli
+sudo: false
diff --git a/libs/bower_components/iframe-resizer/LICENSE b/libs/bower_components/iframe-resizer/LICENSE
new file mode 100644
index 0000000000..1c74bdc837
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015 David J. Bradshaw
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/bower.json b/libs/bower_components/iframe-resizer/bower.json
new file mode 100644
index 0000000000..3749495987
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/bower.json
@@ -0,0 +1,45 @@
+{
+ "name": "iframe-resizer",
+ "version": "3.5.5",
+ "homepage": "https://github.com/davidjbradshaw/iframe-resizer",
+ "authors": [
+ "David J. Bradshaw <dave@bradshaw.net>"
+ ],
+ "description": "Responsively keep same and cross domain iFrames sized to their content with support for window/content resizing, multiple and nested iFrames. (Dependacy free and works with IE8+)",
+ "main": [
+ "js/iframeResizer.js",
+ "js/iframeResizer.contentWindow.js"
+ ],
+ "keywords": [
+ "CrossDomain",
+ "Cross-Domain",
+ "iFrame",
+ "Resizing",
+ "Resizer",
+ "postMessage",
+ "content",
+ "resize",
+ "height",
+ "autoheight",
+ "auto-height",
+ "iframe-auto-height",
+ "height-iframe",
+ "heightiframe",
+ "width",
+ "mutationObserver",
+ "RWD",
+ "responsive",
+ "responsiveiframes",
+ "responsive-iframes"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "example",
+ "test",
+ "gruntfile.js",
+ "*.md",
+ "*.json"
+ ],
+ "dependencies": {},
+ "devDependencies": {}
+}
diff --git a/libs/bower_components/iframe-resizer/index.js b/libs/bower_components/iframe-resizer/index.js
new file mode 100644
index 0000000000..c08035a32b
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/index.js
@@ -0,0 +1,4 @@
+
+'use strict';
+
+module.exports = require('./js');
diff --git a/libs/bower_components/iframe-resizer/js/ie8.polyfils.map b/libs/bower_components/iframe-resizer/js/ie8.polyfils.map
new file mode 100644
index 0000000000..eb0ef37713
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/ie8.polyfils.map
@@ -0,0 +1 @@
+{"version":3,"file":"ie8.polyfils.min.js","sources":["../src/ie8.polyfils.js"],"names":["Array","prototype","forEach","fun","this","TypeError","t","Object","len","length","thisArg","arguments","i","call","Function","bind","oThis","aArgs","slice","fToBind","fNOP","fBound","apply","concat","callback","O","k"],"mappings":";;AAOMA,MAAMC,UAAUC,UACrBF,MAAMC,UAAUC,QAAU,SAASC,GAClC,YACA,IAAa,SAATC,MAA4B,OAATA,MAAgC,kBAARD,GAAoB,KAAM,IAAIE,UAO7E,KAAK,GAJJC,GAAIC,OAAOH,MACXI,EAAMF,EAAEG,SAAW,EACnBC,EAAUC,UAAUF,QAAU,EAAIE,UAAU,GAAK,OAEzCC,EAAI,EAAOJ,EAAJI,EAASA,IACpBA,IAAKN,IACRH,EAAIU,KAAKH,EAASJ,EAAEM,GAAIA,EAAGN,KAK1BQ,SAASb,UAAUc,OACtBD,SAASb,UAAUc,KAAO,SAASC,GACjC,GAAoB,kBAATZ,MAGT,KAAM,IAAIC,WAAU,uEAGtB,IAAIY,GAAUjB,MAAMC,UAAUiB,MAAML,KAAKF,UAAW,GAChDQ,EAAUf,KACVgB,EAAU,aACVC,EAAU,WACR,MAAOF,GAAQG,MAAMlB,eAAgBgB,GAAOhB,KAAOY,EAC5CC,EAAMM,OAAOvB,MAAMC,UAAUiB,MAAML,KAAKF,aAMrD,OAHAS,GAAKnB,UAAYG,KAAKH,UACtBoB,EAAOpB,UAAY,GAAImB,GAEhBC,IAINrB,MAAMC,UAAUC,UACnBF,MAAMC,UAAUC,QAAU,SAASsB,EAAUd,GAC3C,GAAa,OAATN,KAAe,KAAM,IAAIC,WAAU,+BACvC,IAAwB,kBAAbmB,GAAyB,KAAM,IAAInB,WAAUmB,EAAW,qBAMnE,KAAK,GAHHC,GAAIlB,OAAOH,MACXI,EAAMiB,EAAEhB,SAAW,EAEZiB,EAAE,EAAQlB,EAAJkB,EAAUA,IACnBA,IAAKD,IACPD,EAASX,KAAKH,EAASe,EAAEC,GAAIA,EAAGD","sourcesContent":["/*\n * IE8 Polyfils for iframeResizer.js\n *\n * Public domain code - Mozilla Contributors\n * https://developer.mozilla.org/\n */\n\n if (!Array.prototype.forEach){\n\tArray.prototype.forEach = function(fun /*, thisArg */){\n\t\t\"use strict\";\n\t\tif (this === void 0 || this === null || typeof fun !== \"function\") throw new TypeError();\n\n\t\tvar\n\t\t\tt = Object(this),\n\t\t\tlen = t.length >>> 0,\n\t\t\tthisArg = arguments.length >= 2 ? arguments[1] : void 0;\n\n\t\tfor (var i = 0; i < len; i++)\n\t\t\tif (i in t)\n\t\t\t\tfun.call(thisArg, t[i], i, t);\n\t};\n}\n\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP ? this : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function(callback, thisArg) {\n if (this === null) throw new TypeError(' this is null or not defined');\n if (typeof callback !== 'function') throw new TypeError(callback + ' is not a function');\n\n var\n O = Object(this),\n len = O.length >>> 0;\n\n for (var k=0 ; k < len ; k++) {\n if (k in O)\n callback.call(thisArg, O[k], k, O);\n }\n };\n}\n\n\n"]} \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js b/libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js
new file mode 100644
index 0000000000..5836bacdb4
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/ie8.polyfils.min.js
@@ -0,0 +1,4 @@
+// IE8 polyfils for iframeResizer.js
+
+Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this||"function"!=typeof a)throw new TypeError;for(var b=Object(this),c=b.length>>>0,d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){if(null===this)throw new TypeError(" this is null or not defined");if("function"!=typeof a)throw new TypeError(a+" is not a function");for(var c=Object(this),d=c.length>>>0,e=0;d>e;e++)e in c&&a.call(b,c[e],e,c)});
+//# sourceMappingURL=ie8.polyfils.map \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js
new file mode 100644
index 0000000000..bfb4a416e3
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.js
@@ -0,0 +1,1108 @@
+/*
+ * File: iframeResizer.contentWindow.js
+ * Desc: Include this file in any page being loaded into an iframe
+ * to force the iframe to resize to the content size.
+ * Requires: iframeResizer.js on host page.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Ian Caunce - ian@hallnet.co.uk
+ */
+
+
+;(function(window, undefined) {
+ 'use strict';
+
+ var
+ autoResize = true,
+ base = 10,
+ bodyBackground = '',
+ bodyMargin = 0,
+ bodyMarginStr = '',
+ bodyObserver = null,
+ bodyPadding = '',
+ calculateWidth = false,
+ doubleEventList = {'resize':1,'click':1},
+ eventCancelTimer = 128,
+ firstRun = true,
+ height = 1,
+ heightCalcModeDefault = 'bodyOffset',
+ heightCalcMode = heightCalcModeDefault,
+ initLock = true,
+ initMsg = '',
+ inPageLinks = {},
+ interval = 32,
+ intervalTimer = null,
+ logging = false,
+ msgID = '[iFrameSizer]', //Must match host page msg ID
+ msgIdLen = msgID.length,
+ myID = '',
+ observer = null,
+ resetRequiredMethods = {max:1,min:1,bodyScroll:1,documentElementScroll:1},
+ resizeFrom = 'child',
+ sendPermit = true,
+ target = window.parent,
+ targetOriginDefault = '*',
+ tolerance = 0,
+ triggerLocked = false,
+ triggerLockedTimer = null,
+ throttledTimer = 16,
+ width = 1,
+ widthCalcModeDefault = 'scroll',
+ widthCalcMode = widthCalcModeDefault,
+ win = window,
+ messageCallback = function(){ warn('MessageCallback function not defined'); },
+ readyCallback = function(){},
+ pageInfoCallback = function(){},
+ customCalcMethods = {
+ height: function(){
+ warn('Custom height calculation function not defined');
+ return document.documentElement.offsetHeight;
+ },
+ width: function(){
+ warn('Custom width calculation function not defined');
+ return document.body.scrollWidth;
+ }
+ };
+
+
+ function addEventListener(el,evt,func){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if ('addEventListener' in window){
+ el.addEventListener(evt,func, false);
+ } else if ('attachEvent' in window){ //IE
+ el.attachEvent('on'+evt,func);
+ }
+ }
+
+ function removeEventListener(el,evt,func){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if ('removeEventListener' in window){
+ el.removeEventListener(evt,func, false);
+ } else if ('detachEvent' in window){ //IE
+ el.detachEvent('on'+evt,func);
+ }
+ }
+
+ function capitalizeFirstLetter(string) {
+ return string.charAt(0).toUpperCase() + string.slice(1);
+ }
+
+ //Based on underscore.js
+ function throttle(func) {
+ var
+ context, args, result,
+ timeout = null,
+ previous = 0,
+ later = function() {
+ previous = getNow();
+ timeout = null;
+ result = func.apply(context, args);
+ if (!timeout) {
+ context = args = null;
+ }
+ };
+
+ return function() {
+ var now = getNow();
+
+ if (!previous) {
+ previous = now;
+ }
+
+ var remaining = throttledTimer - (now - previous);
+
+ context = this;
+ args = arguments;
+
+ if (remaining <= 0 || remaining > throttledTimer) {
+ if (timeout) {
+ clearTimeout(timeout);
+ timeout = null;
+ }
+
+ previous = now;
+ result = func.apply(context, args);
+
+ if (!timeout) {
+ context = args = null;
+ }
+
+ } else if (!timeout) {
+ timeout = setTimeout(later, remaining);
+ }
+
+ return result;
+ };
+ }
+
+ var getNow = Date.now || function() {
+ /* istanbul ignore next */ // Not testable in PhantonJS
+ return new Date().getTime();
+ };
+
+ function formatLogMsg(msg){
+ return msgID + '[' + myID + ']' + ' ' + msg;
+ }
+
+ function log(msg){
+ if (logging && ('object' === typeof window.console)){
+ console.log(formatLogMsg(msg));
+ }
+ }
+
+ function warn(msg){
+ if ('object' === typeof window.console){
+ console.warn(formatLogMsg(msg));
+ }
+ }
+
+
+ function init(){
+ readDataFromParent();
+ log('Initialising iFrame ('+location.href+')');
+ readDataFromPage();
+ setMargin();
+ setBodyStyle('background',bodyBackground);
+ setBodyStyle('padding',bodyPadding);
+ injectClearFixIntoBodyElement();
+ checkHeightMode();
+ checkWidthMode();
+ stopInfiniteResizingOfIFrame();
+ setupPublicMethods();
+ startEventListeners();
+ inPageLinks = setupInPageLinks();
+ sendSize('init','Init message from host page');
+ readyCallback();
+ }
+
+ function readDataFromParent(){
+
+ function strBool(str){
+ return 'true' === str ? true : false;
+ }
+
+ var data = initMsg.substr(msgIdLen).split(':');
+
+ myID = data[0];
+ bodyMargin = (undefined !== data[1]) ? Number(data[1]) : bodyMargin; //For V1 compatibility
+ calculateWidth = (undefined !== data[2]) ? strBool(data[2]) : calculateWidth;
+ logging = (undefined !== data[3]) ? strBool(data[3]) : logging;
+ interval = (undefined !== data[4]) ? Number(data[4]) : interval;
+ autoResize = (undefined !== data[6]) ? strBool(data[6]) : autoResize;
+ bodyMarginStr = data[7];
+ heightCalcMode = (undefined !== data[8]) ? data[8] : heightCalcMode;
+ bodyBackground = data[9];
+ bodyPadding = data[10];
+ tolerance = (undefined !== data[11]) ? Number(data[11]) : tolerance;
+ inPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;
+ resizeFrom = (undefined !== data[13]) ? data[13] : resizeFrom;
+ widthCalcMode = (undefined !== data[14]) ? data[14] : widthCalcMode;
+ }
+
+ function readDataFromPage(){
+ function readData(){
+ var data = window.iFrameResizer;
+
+ log('Reading data from page: ' + JSON.stringify(data));
+
+ messageCallback = ('messageCallback' in data) ? data.messageCallback : messageCallback;
+ readyCallback = ('readyCallback' in data) ? data.readyCallback : readyCallback;
+ targetOriginDefault = ('targetOrigin' in data) ? data.targetOrigin : targetOriginDefault;
+ heightCalcMode = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;
+ widthCalcMode = ('widthCalculationMethod' in data) ? data.widthCalculationMethod : widthCalcMode;
+ }
+
+ function setupCustomCalcMethods(calcMode, calcFunc){
+ if ('function' === typeof calcMode) {
+ log('Setup custom ' + calcFunc + 'CalcMethod');
+ customCalcMethods[calcFunc] = calcMode;
+ calcMode = 'custom';
+ }
+
+ return calcMode;
+ }
+
+ if(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {
+ readData();
+ heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
+ widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');
+ }
+
+ log('TargetOrigin for parent set to: ' + targetOriginDefault);
+ }
+
+
+ function chkCSS(attr,value){
+ if (-1 !== value.indexOf('-')){
+ warn('Negative CSS value ignored for '+attr);
+ value='';
+ }
+ return value;
+ }
+
+ function setBodyStyle(attr,value){
+ if ((undefined !== value) && ('' !== value) && ('null' !== value)){
+ document.body.style[attr] = value;
+ log('Body '+attr+' set to "'+value+'"');
+ }
+ }
+
+ function setMargin(){
+ //If called via V1 script, convert bodyMargin from int to str
+ if (undefined === bodyMarginStr){
+ bodyMarginStr = bodyMargin+'px';
+ }
+
+ setBodyStyle('margin',chkCSS('margin',bodyMarginStr));
+ }
+
+ function stopInfiniteResizingOfIFrame(){
+ document.documentElement.style.height = '';
+ document.body.style.height = '';
+ log('HTML & body height set to "auto"');
+ }
+
+
+ function manageTriggerEvent(options){
+ function handleEvent(){
+ sendSize(options.eventName,options.eventType);
+ }
+
+ var listener = {
+ add: function(eventName){
+ addEventListener(window,eventName,handleEvent);
+ },
+ remove: function(eventName){
+ removeEventListener(window,eventName,handleEvent);
+ }
+ };
+
+ if(options.eventNames && Array.prototype.map){
+ options.eventName = options.eventNames[0];
+ options.eventNames.map(listener[options.method]);
+ } else {
+ listener[options.method](options.eventName);
+ }
+
+ log(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);
+ }
+
+ function manageEventListeners(method){
+ manageTriggerEvent({method:method, eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });
+ manageTriggerEvent({method:method, eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });
+ manageTriggerEvent({method:method, eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });
+ manageTriggerEvent({method:method, eventType: 'Input', eventName: 'input' });
+ manageTriggerEvent({method:method, eventType: 'Mouse Up', eventName: 'mouseup' });
+ manageTriggerEvent({method:method, eventType: 'Mouse Down', eventName: 'mousedown' });
+ manageTriggerEvent({method:method, eventType: 'Orientation Change', eventName: 'orientationchange' });
+ manageTriggerEvent({method:method, eventType: 'Print', eventName: ['afterprint', 'beforeprint'] });
+ manageTriggerEvent({method:method, eventType: 'Ready State Change', eventName: 'readystatechange' });
+ manageTriggerEvent({method:method, eventType: 'Touch Start', eventName: 'touchstart' });
+ manageTriggerEvent({method:method, eventType: 'Touch End', eventName: 'touchend' });
+ manageTriggerEvent({method:method, eventType: 'Touch Cancel', eventName: 'touchcancel' });
+ manageTriggerEvent({method:method, eventType: 'Transition Start', eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });
+ manageTriggerEvent({method:method, eventType: 'Transition Iteration', eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });
+ manageTriggerEvent({method:method, eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
+ if('child' === resizeFrom){
+ manageTriggerEvent({method:method, eventType: 'IFrame Resized', eventName: 'resize' });
+ }
+ }
+
+ function checkCalcMode(calcMode,calcModeDefault,modes,type){
+ if (calcModeDefault !== calcMode){
+ if (!(calcMode in modes)){
+ warn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');
+ calcMode=calcModeDefault;
+ }
+ log(type+' calculation method set to "'+calcMode+'"');
+ }
+
+ return calcMode;
+ }
+
+ function checkHeightMode(){
+ heightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');
+ }
+
+ function checkWidthMode(){
+ widthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');
+ }
+
+ function startEventListeners(){
+ if ( true === autoResize ) {
+ manageEventListeners('add');
+ setupMutationObserver();
+ }
+ else {
+ log('Auto Resize disabled');
+ }
+ }
+
+ function stopMsgsToParent(){
+ log('Disable outgoing messages');
+ sendPermit = false;
+ }
+
+ function removeMsgListener(){
+ log('Remove event listener: Message');
+ removeEventListener(window, 'message', receiver);
+ }
+
+ function disconnectMutationObserver(){
+ if (null !== bodyObserver){
+ /* istanbul ignore next */ // Not testable in PhantonJS
+ bodyObserver.disconnect();
+ }
+ }
+
+ function stopEventListeners(){
+ manageEventListeners('remove');
+ disconnectMutationObserver();
+ clearInterval(intervalTimer);
+ }
+
+ function teardown(){
+ stopMsgsToParent();
+ removeMsgListener();
+ if (true === autoResize) stopEventListeners();
+ }
+
+ function injectClearFixIntoBodyElement(){
+ var clearFix = document.createElement('div');
+ clearFix.style.clear = 'both';
+ clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.
+ document.body.appendChild(clearFix);
+ }
+
+ function setupInPageLinks(){
+
+ function getPagePosition (){
+ return {
+ x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+ y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+ };
+ }
+
+ function getElementPosition(el){
+ var
+ elPosition = el.getBoundingClientRect(),
+ pagePosition = getPagePosition();
+
+ return {
+ x: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),
+ y: parseInt(elPosition.top,10) + parseInt(pagePosition.y,10)
+ };
+ }
+
+ function findTarget(location){
+ function jumpToTarget(target){
+ var jumpPosition = getElementPosition(target);
+
+ log('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+ sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+ }
+
+ var
+ hash = location.split('#')[1] || location, //Remove # if present
+ hashData = decodeURIComponent(hash),
+ target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+ if (undefined !== target){
+ jumpToTarget(target);
+ } else {
+ log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
+ sendMsg(0,0,'inPageLink','#'+hash);
+ }
+ }
+
+ function checkLocationHash(){
+ if ('' !== location.hash && '#' !== location.hash){
+ findTarget(location.href);
+ }
+ }
+
+ function bindAnchors(){
+ function setupLink(el){
+ function linkClicked(e){
+ e.preventDefault();
+
+ /*jshint validthis:true */
+ findTarget(this.getAttribute('href'));
+ }
+
+ if ('#' !== el.getAttribute('href')){
+ addEventListener(el,'click',linkClicked);
+ }
+ }
+
+ Array.prototype.forEach.call( document.querySelectorAll( 'a[href^="#"]' ), setupLink );
+ }
+
+ function bindLocationHash(){
+ addEventListener(window,'hashchange',checkLocationHash);
+ }
+
+ function initCheck(){ //check if page loaded with location hash after init resize
+ setTimeout(checkLocationHash,eventCancelTimer);
+ }
+
+ function enableInPageLinks(){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if(Array.prototype.forEach && document.querySelectorAll){
+ log('Setting up location.hash handlers');
+ bindAnchors();
+ bindLocationHash();
+ initCheck();
+ } else {
+ warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
+ }
+ }
+
+ if(inPageLinks.enable){
+ enableInPageLinks();
+ } else {
+ log('In page linking not enabled');
+ }
+
+ return {
+ findTarget:findTarget
+ };
+ }
+
+ function setupPublicMethods(){
+ log('Enable public methods');
+
+ win.parentIFrame = {
+
+ autoResize: function autoResizeF(resize){
+ if (true === resize && false === autoResize) {
+ autoResize=true;
+ startEventListeners();
+ //sendSize('autoResize','Auto Resize enabled');
+ } else if (false === resize && true === autoResize) {
+ autoResize=false;
+ stopEventListeners();
+ }
+
+ return autoResize;
+ },
+
+ close: function closeF(){
+ sendMsg(0,0,'close');
+ teardown();
+ },
+
+ getId: function getIdF(){
+ return myID;
+ },
+
+ getPageInfo: function getPageInfoF(callback){
+ if ('function' === typeof callback){
+ pageInfoCallback = callback;
+ sendMsg(0,0,'pageInfo');
+ } else {
+ pageInfoCallback = function(){};
+ sendMsg(0,0,'pageInfoStop');
+ }
+ },
+
+ moveToAnchor: function moveToAnchorF(hash){
+ inPageLinks.findTarget(hash);
+ },
+
+ reset: function resetF(){
+ resetIFrame('parentIFrame.reset');
+ },
+
+ scrollTo: function scrollToF(x,y){
+ sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
+ },
+
+ scrollToOffset: function scrollToF(x,y){
+ sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+ },
+
+ sendMessage: function sendMessageF(msg,targetOrigin){
+ sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
+ },
+
+ setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){
+ heightCalcMode = heightCalculationMethod;
+ checkHeightMode();
+ },
+
+ setWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){
+ widthCalcMode = widthCalculationMethod;
+ checkWidthMode();
+ },
+
+ setTargetOrigin: function setTargetOriginF(targetOrigin){
+ log('Set targetOrigin: '+targetOrigin);
+ targetOriginDefault = targetOrigin;
+ },
+
+ size: function sizeF(customHeight, customWidth){
+ var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
+ //lockTrigger();
+ sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
+ }
+ };
+ }
+
+ function initInterval(){
+ if ( 0 !== interval ){
+ log('setInterval: '+interval+'ms');
+ intervalTimer = setInterval(function(){
+ sendSize('interval','setInterval: '+interval);
+ },Math.abs(interval));
+ }
+ }
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function setupBodyMutationObserver(){
+ function addImageLoadListners(mutation) {
+ function addImageLoadListener(element){
+ if (false === element.complete) {
+ log('Attach listeners to ' + element.src);
+ element.addEventListener('load', imageLoaded, false);
+ element.addEventListener('error', imageError, false);
+ elements.push(element);
+ }
+ }
+
+ if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
+ addImageLoadListener(mutation.target);
+ } else if (mutation.type === 'childList'){
+ Array.prototype.forEach.call(
+ mutation.target.querySelectorAll('img'),
+ addImageLoadListener
+ );
+ }
+ }
+
+ function removeFromArray(element){
+ elements.splice(elements.indexOf(element),1);
+ }
+
+ function removeImageLoadListener(element){
+ log('Remove listeners from ' + element.src);
+ element.removeEventListener('load', imageLoaded, false);
+ element.removeEventListener('error', imageError, false);
+ removeFromArray(element);
+ }
+
+ function imageEventTriggered(event,type,typeDesc){
+ removeImageLoadListener(event.target);
+ sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);
+ }
+
+ function imageLoaded(event) {
+ imageEventTriggered(event,'imageLoad','Image loaded');
+ }
+
+ function imageError(event) {
+ imageEventTriggered(event,'imageLoadFailed','Image load failed');
+ }
+
+ function mutationObserved(mutations) {
+ sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
+
+ //Deal with WebKit asyncing image loading when tags are injected into the page
+ mutations.forEach(addImageLoadListners);
+ }
+
+ function createMutationObserver(){
+ var
+ target = document.querySelector('body'),
+
+ config = {
+ attributes : true,
+ attributeOldValue : false,
+ characterData : true,
+ characterDataOldValue : false,
+ childList : true,
+ subtree : true
+ };
+
+ observer = new MutationObserver(mutationObserved);
+
+ log('Create body MutationObserver');
+ observer.observe(target, config);
+
+ return observer;
+ }
+
+ var
+ elements = [],
+ MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
+ observer = createMutationObserver();
+
+ return {
+ disconnect: function (){
+ if ('disconnect' in observer){
+ log('Disconnect body MutationObserver');
+ observer.disconnect();
+ elements.forEach(removeImageLoadListener);
+ }
+ }
+ };
+ }
+
+ function setupMutationObserver(){
+ var forceIntervalTimer = 0 > interval;
+
+ /* istanbul ignore if */ // Not testable in PhantomJS
+ if (window.MutationObserver || window.WebKitMutationObserver){
+ if (forceIntervalTimer) {
+ initInterval();
+ } else {
+ bodyObserver = setupBodyMutationObserver();
+ }
+ } else {
+ log('MutationObserver not supported in this browser!');
+ initInterval();
+ }
+ }
+
+
+ // document.documentElement.offsetHeight is not reliable, so
+ // we have to jump through hoops to get a better value.
+ function getComputedStyle(prop,el) {
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function convertUnitsToPxForIE8(value) {
+ var PIXEL = /^\d+(px)?$/i;
+
+ if (PIXEL.test(value)) {
+ return parseInt(value,base);
+ }
+
+ var
+ style = el.style.left,
+ runtimeStyle = el.runtimeStyle.left;
+
+ el.runtimeStyle.left = el.currentStyle.left;
+ el.style.left = value || 0;
+ value = el.style.pixelLeft;
+ el.style.left = style;
+ el.runtimeStyle.left = runtimeStyle;
+
+ return value;
+ }
+
+ var retVal = 0;
+ el = el || document.body;
+
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
+ retVal = document.defaultView.getComputedStyle(el, null);
+ retVal = (null !== retVal) ? retVal[prop] : 0;
+ } else {//IE8
+ retVal = convertUnitsToPxForIE8(el.currentStyle[prop]);
+ }
+
+ return parseInt(retVal,base);
+ }
+
+ function chkEventThottle(timer){
+ if(timer > throttledTimer/2){
+ throttledTimer = 2*timer;
+ log('Event throttle increased to ' + throttledTimer + 'ms');
+ }
+ }
+
+ //Idea from https://github.com/guardian/iframe-messenger
+ function getMaxElement(side,elements) {
+ var
+ elementsLength = elements.length,
+ elVal = 0,
+ maxVal = 0,
+ Side = capitalizeFirstLetter(side),
+ timer = getNow();
+
+ for (var i = 0; i < elementsLength; i++) {
+ elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);
+ if (elVal > maxVal) {
+ maxVal = elVal;
+ }
+ }
+
+ timer = getNow() - timer;
+
+ log('Parsed '+elementsLength+' HTML elements');
+ log('Element position calculated in ' + timer + 'ms');
+
+ chkEventThottle(timer);
+
+ return maxVal;
+ }
+
+ function getAllMeasurements(dimention){
+ return [
+ dimention.bodyOffset(),
+ dimention.bodyScroll(),
+ dimention.documentElementOffset(),
+ dimention.documentElementScroll()
+ ];
+ }
+
+ function getTaggedElements(side,tag){
+ function noTaggedElementsFound(){
+ warn('No tagged elements ('+tag+') found on page');
+ return height; //current height
+ }
+
+ var elements = document.querySelectorAll('['+tag+']');
+
+ return 0 === elements.length ? noTaggedElementsFound() : getMaxElement(side,elements);
+ }
+
+ function getAllElements(){
+ return document.querySelectorAll('body *');
+ }
+
+ var
+ getHeight = {
+ bodyOffset: function getBodyOffsetHeight(){
+ return document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
+ },
+
+ offset: function(){
+ return getHeight.bodyOffset(); //Backwards compatability
+ },
+
+ bodyScroll: function getBodyScrollHeight(){
+ return document.body.scrollHeight;
+ },
+
+ custom: function getCustomWidth(){
+ return customCalcMethods.height();
+ },
+
+ documentElementOffset: function getDEOffsetHeight(){
+ return document.documentElement.offsetHeight;
+ },
+
+ documentElementScroll: function getDEScrollHeight(){
+ return document.documentElement.scrollHeight;
+ },
+
+ max: function getMaxHeight(){
+ return Math.max.apply(null,getAllMeasurements(getHeight));
+ },
+
+ min: function getMinHeight(){
+ return Math.min.apply(null,getAllMeasurements(getHeight));
+ },
+
+ grow: function growHeight(){
+ return getHeight.max(); //Run max without the forced downsizing
+ },
+
+ lowestElement: function getBestHeight(){
+ return Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));
+ },
+
+ taggedElement: function getTaggedElementsHeight(){
+ return getTaggedElements('bottom','data-iframe-height');
+ }
+ },
+
+ getWidth = {
+ bodyScroll: function getBodyScrollWidth(){
+ return document.body.scrollWidth;
+ },
+
+ bodyOffset: function getBodyOffsetWidth(){
+ return document.body.offsetWidth;
+ },
+
+ custom: function getCustomWidth(){
+ return customCalcMethods.width();
+ },
+
+ documentElementScroll: function getDEScrollWidth(){
+ return document.documentElement.scrollWidth;
+ },
+
+ documentElementOffset: function getDEOffsetWidth(){
+ return document.documentElement.offsetWidth;
+ },
+
+ scroll: function getMaxWidth(){
+ return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());
+ },
+
+ max: function getMaxWidth(){
+ return Math.max.apply(null,getAllMeasurements(getWidth));
+ },
+
+ min: function getMinWidth(){
+ return Math.min.apply(null,getAllMeasurements(getWidth));
+ },
+
+ rightMostElement: function rightMostElement(){
+ return getMaxElement('right', getAllElements());
+ },
+
+ taggedElement: function getTaggedElementsWidth(){
+ return getTaggedElements('right', 'data-iframe-width');
+ }
+ };
+
+
+ function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){
+
+ function resizeIFrame(){
+ height = currentHeight;
+ width = currentWidth;
+
+ sendMsg(height,width,triggerEvent);
+ }
+
+ function isSizeChangeDetected(){
+ function checkTolarance(a,b){
+ var retVal = Math.abs(a-b) <= tolerance;
+ return !retVal;
+ }
+
+ currentHeight = (undefined !== customHeight) ? customHeight : getHeight[heightCalcMode]();
+ currentWidth = (undefined !== customWidth ) ? customWidth : getWidth[widthCalcMode]();
+
+ return checkTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));
+ }
+
+ function isForceResizableEvent(){
+ return !(triggerEvent in {'init':1,'interval':1,'size':1});
+ }
+
+ function isForceResizableCalcMode(){
+ return (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);
+ }
+
+ function logIgnored(){
+ log('No change in size detected');
+ }
+
+ function checkDownSizing(){
+ if (isForceResizableEvent() && isForceResizableCalcMode()){
+ resetIFrame(triggerEventDesc);
+ } else if (!(triggerEvent in {'interval':1})){
+ logIgnored();
+ }
+ }
+
+ var currentHeight,currentWidth;
+
+ if (isSizeChangeDetected() || 'init' === triggerEvent){
+ lockTrigger();
+ resizeIFrame();
+ } else {
+ checkDownSizing();
+ }
+ }
+
+ var sizeIFrameThrottled = throttle(sizeIFrame);
+
+ function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){
+ function recordTrigger(){
+ if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){
+ log( 'Trigger event: ' + triggerEventDesc );
+ }
+ }
+
+ function isDoubleFiredEvent(){
+ return triggerLocked && (triggerEvent in doubleEventList);
+ }
+
+ if (!isDoubleFiredEvent()){
+ recordTrigger();
+ sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
+ } else {
+ log('Trigger event cancelled: '+triggerEvent);
+ }
+ }
+
+ function lockTrigger(){
+ if (!triggerLocked){
+ triggerLocked = true;
+ log('Trigger event lock on');
+ }
+ clearTimeout(triggerLockedTimer);
+ triggerLockedTimer = setTimeout(function(){
+ triggerLocked = false;
+ log('Trigger event lock off');
+ log('--');
+ },eventCancelTimer);
+ }
+
+ function triggerReset(triggerEvent){
+ height = getHeight[heightCalcMode]();
+ width = getWidth[widthCalcMode]();
+
+ sendMsg(height,width,triggerEvent);
+ }
+
+ function resetIFrame(triggerEventDesc){
+ var hcm = heightCalcMode;
+ heightCalcMode = heightCalcModeDefault;
+
+ log('Reset trigger event: ' + triggerEventDesc);
+ lockTrigger();
+ triggerReset('reset');
+
+ heightCalcMode = hcm;
+ }
+
+ function sendMsg(height,width,triggerEvent,msg,targetOrigin){
+ function setTargetOrigin(){
+ if (undefined === targetOrigin){
+ targetOrigin = targetOriginDefault;
+ } else {
+ log('Message targetOrigin: '+targetOrigin);
+ }
+ }
+
+ function sendToParent(){
+ var
+ size = height + ':' + width,
+ message = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
+
+ log('Sending message to host page (' + message + ')');
+ target.postMessage( msgID + message, targetOrigin);
+ }
+
+ if(true === sendPermit){
+ setTargetOrigin();
+ sendToParent();
+ }
+ }
+
+ function receiver(event) {
+ function isMessageForUs(){
+ return msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages
+ }
+
+ function initFromParent(){
+ function fireInit(){
+ initMsg = event.data;
+ target = event.source;
+
+ init();
+ firstRun = false;
+ setTimeout(function(){ initLock = false;},eventCancelTimer);
+ }
+
+ if (document.body){
+ fireInit();
+ } else {
+ log('Waiting for page ready');
+ addEventListener(window,'readystatechange',initFromParent);
+ }
+ }
+
+ function resetFromParent(){
+ if (!initLock){
+ log('Page size reset by host page');
+ triggerReset('resetPage');
+ } else {
+ log('Page reset ignored by init');
+ }
+ }
+
+ function resizeFromParent(){
+ sendSize('resizeParent','Parent window requested size check');
+ }
+
+ function moveToAnchor(){
+ var anchor = getData();
+ inPageLinks.findTarget(anchor);
+ }
+
+ function getMessageType(){
+ return event.data.split(']')[1].split(':')[0];
+ }
+
+ function getData(){
+ return event.data.substr(event.data.indexOf(':')+1);
+ }
+
+ function isMiddleTier(){
+ return ('iFrameResize' in window);
+ }
+
+ function messageFromParent(){
+ var msgBody = getData();
+
+ log('MessageCallback called from parent: ' + msgBody );
+ messageCallback(JSON.parse(msgBody));
+ log(' --');
+ }
+
+ function pageInfoFromParent(){
+ var msgBody = getData();
+ log('PageInfoFromParent called from parent: ' + msgBody );
+ pageInfoCallback(JSON.parse(msgBody));
+ log(' --');
+ }
+
+ function isInitMsg(){
+ //Test if this message is from a child below us. This is an ugly test, however, updating
+ //the message format would break backwards compatibity.
+ return event.data.split(':')[2] in {'true':1,'false':1};
+ }
+
+ function callFromParent(){
+ switch (getMessageType()){
+ case 'reset':
+ resetFromParent();
+ break;
+ case 'resize':
+ resizeFromParent();
+ break;
+ case 'inPageLink':
+ case 'moveToAnchor':
+ moveToAnchor();
+ break;
+ case 'message':
+ messageFromParent();
+ break;
+ case 'pageInfo':
+ pageInfoFromParent();
+ break;
+ default:
+ if (!isMiddleTier() && !isInitMsg()){
+ warn('Unexpected message ('+event.data+')');
+ }
+ }
+ }
+
+ function processMessage(){
+ if (false === firstRun) {
+ callFromParent();
+ } else if (isInitMsg()) {
+ initFromParent();
+ } else {
+ log('Ignored message of type "' + getMessageType() + '". Received before initialization.');
+ }
+ }
+
+ if (isMessageForUs()){
+ processMessage();
+ }
+ }
+
+ //Normally the parent kicks things off when it detects the iFrame has loaded.
+ //If this script is async-loaded, then tell parent page to retry init.
+ function chkLateLoaded(){
+ if('loading' !== document.readyState){
+ window.parent.postMessage('[iFrameResizerChild]Ready','*');
+ }
+ }
+
+ addEventListener(window, 'message', receiver);
+ chkLateLoaded();
+
+
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map
new file mode 100644
index 0000000000..ab9fe2d7eb
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.map
@@ -0,0 +1 @@
+{"version":3,"file":"iframeResizer.contentWindow.min.js","sources":["iframeResizer.contentWindow.js"],"names":["window","undefined","addEventListener","el","evt","func","attachEvent","removeEventListener","detachEvent","capitalizeFirstLetter","string","charAt","toUpperCase","slice","throttle","context","args","result","timeout","previous","later","getNow","apply","now","remaining","throttledTimer","this","arguments","clearTimeout","setTimeout","formatLogMsg","msg","msgID","myID","log","logging","console","warn","init","readDataFromParent","location","href","readDataFromPage","setMargin","setBodyStyle","bodyBackground","bodyPadding","injectClearFixIntoBodyElement","checkHeightMode","checkWidthMode","stopInfiniteResizingOfIFrame","setupPublicMethods","startEventListeners","inPageLinks","setupInPageLinks","sendSize","readyCallback","strBool","str","data","initMsg","substr","msgIdLen","split","bodyMargin","Number","calculateWidth","interval","autoResize","bodyMarginStr","heightCalcMode","tolerance","enable","resizeFrom","widthCalcMode","readData","iFrameResizer","JSON","stringify","messageCallback","targetOriginDefault","targetOrigin","heightCalculationMethod","widthCalculationMethod","setupCustomCalcMethods","calcMode","calcFunc","customCalcMethods","Object","constructor","chkCSS","attr","value","indexOf","document","body","style","documentElement","height","manageTriggerEvent","options","handleEvent","eventName","eventType","listener","add","remove","eventNames","Array","prototype","map","method","manageEventListeners","checkCalcMode","calcModeDefault","modes","type","heightCalcModeDefault","getHeight","widthCalcModeDefault","getWidth","setupMutationObserver","stopMsgsToParent","sendPermit","removeMsgListener","receiver","disconnectMutationObserver","bodyObserver","disconnect","stopEventListeners","clearInterval","intervalTimer","teardown","clearFix","createElement","clear","display","appendChild","getPagePosition","x","pageXOffset","scrollLeft","y","pageYOffset","scrollTop","getElementPosition","elPosition","getBoundingClientRect","pagePosition","parseInt","left","top","findTarget","jumpToTarget","target","jumpPosition","hash","sendMsg","hashData","decodeURIComponent","getElementById","getElementsByName","checkLocationHash","bindAnchors","setupLink","linkClicked","e","preventDefault","getAttribute","forEach","call","querySelectorAll","bindLocationHash","initCheck","eventCancelTimer","enableInPageLinks","win","parentIFrame","resize","close","getId","getPageInfo","callback","pageInfoCallback","moveToAnchor","reset","resetIFrame","scrollTo","scrollToOffset","sendMessage","setHeightCalculationMethod","setWidthCalculationMethod","setTargetOrigin","size","customHeight","customWidth","valString","initInterval","setInterval","Math","abs","setupBodyMutationObserver","addImageLoadListners","mutation","addImageLoadListener","element","complete","src","imageLoaded","imageError","elements","push","attributeName","removeFromArray","splice","removeImageLoadListener","imageEventTriggered","event","typeDesc","mutationObserved","mutations","createMutationObserver","querySelector","config","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","observer","MutationObserver","observe","WebKitMutationObserver","forceIntervalTimer","getComputedStyle","prop","convertUnitsToPxForIE8","PIXEL","test","base","runtimeStyle","currentStyle","pixelLeft","retVal","defaultView","chkEventThottle","timer","getMaxElement","side","elementsLength","length","elVal","maxVal","Side","i","getAllMeasurements","dimention","bodyOffset","bodyScroll","documentElementOffset","documentElementScroll","getTaggedElements","tag","noTaggedElementsFound","getAllElements","sizeIFrame","triggerEvent","triggerEventDesc","resizeIFrame","currentHeight","width","currentWidth","isSizeChangeDetected","checkTolarance","a","b","isForceResizableEvent","isForceResizableCalcMode","resetRequiredMethods","logIgnored","checkDownSizing","lockTrigger","recordTrigger","resetPage","isDoubleFiredEvent","triggerLocked","doubleEventList","sizeIFrameThrottled","triggerLockedTimer","triggerReset","hcm","sendToParent","message","postMessage","isMessageForUs","initFromParent","fireInit","source","firstRun","initLock","resetFromParent","resizeFromParent","anchor","getData","getMessageType","isMiddleTier","messageFromParent","msgBody","parse","pageInfoFromParent","isInitMsg","true","false","callFromParent","processMessage","chkLateLoaded","readyState","parent","click","max","min","offsetHeight","scrollWidth","Date","getTime","offset","scrollHeight","custom","grow","lowestElement","taggedElement","offsetWidth","scroll","rightMostElement"],"mappings":";;;;;;;;CAYC,SAAUA,EAAQC,GAClB,YAuDA,SAASC,GAAiBC,EAAGC,EAAIC,GAE5B,oBAAsBL,GACzBG,EAAGD,iBAAiBE,EAAIC,GAAM,GACpB,eAAiBL,IAC3BG,EAAGG,YAAY,KAAKF,EAAIC,GAI1B,QAASE,GAAoBJ,EAAGC,EAAIC,GAE/B,uBAAyBL,GAC5BG,EAAGI,oBAAoBH,EAAIC,GAAM,GACvB,eAAiBL,IAC3BG,EAAGK,YAAY,KAAKJ,EAAIC,GAI1B,QAASI,GAAsBC,GAC9B,MAAOA,GAAOC,OAAO,GAAGC,cAAgBF,EAAOG,MAAM,GAItD,QAASC,GAAST,GACjB,GACCU,GAASC,EAAMC,EACfC,EAAU,KACVC,EAAW,EACXC,EAAQ,WACPD,EAAWE,KACXH,EAAU,KACVD,EAASZ,EAAKiB,MAAMP,EAASC,GACxBE,IACJH,EAAUC,EAAO,MAIpB,OAAO,YACN,GAAIO,GAAMF,IAELF,KACJA,EAAWI,EAGZ,IAAIC,GAAYC,IAAkBF,EAAMJ,EAsBxC,OApBAJ,GAAUW,KACVV,EAAOW,UAEU,GAAbH,GAAkBA,EAAYC,IAC7BP,IACHU,aAAaV,GACbA,EAAU,MAGXC,EAAWI,EACXN,EAASZ,EAAKiB,MAAMP,EAASC,GAExBE,IACJH,EAAUC,EAAO,OAGPE,IACXA,EAAUW,WAAWT,EAAOI,IAGtBP,GAST,QAASa,GAAaC,GACrB,MAAOC,IAAQ,IAAMC,GAAO,KAAYF,EAGzC,QAASG,GAAIH,GACRI,IAAY,gBAAoBnC,GAAOoC,SAC1CA,QAAQF,IAAIJ,EAAaC,IAI3B,QAASM,GAAKN,GACT,gBAAoB/B,GAAOoC,SAC9BA,QAAQC,KAAKP,EAAaC,IAK5B,QAASO,KACRC,IACAL,EAAI,wBAAwBM,SAASC,KAAK,KAC1CC,IACAC,IACAC,EAAa,aAAaC,GAC1BD,EAAa,UAAUE,GACvBC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,GAAcC,IACdC,EAAS,OAAO,+BAChBC,KAGD,QAASjB,KAER,QAASkB,GAAQC,GAChB,MAAO,SAAWA,GAAM,GAAO,EAGhC,GAAIC,GAAOC,GAAQC,OAAOC,IAAUC,MAAM,IAE1C9B,IAAqB0B,EAAK,GAC1BK,EAAsB/D,IAAc0D,EAAK,GAAMM,OAAON,EAAK,IAAQK,EACnEE,GAAsBjE,IAAc0D,EAAK,GAAMF,EAAQE,EAAK,IAAOO,GACnE/B,GAAsBlC,IAAc0D,EAAK,GAAMF,EAAQE,EAAK,IAAOxB,GACnEgC,GAAsBlE,IAAc0D,EAAK,GAAMM,OAAON,EAAK,IAAQQ,GACnEC,EAAsBnE,IAAc0D,EAAK,GAAMF,EAAQE,EAAK,IAAOS,EACnEC,EAAqBV,EAAK,GAC1BW,GAAsBrE,IAAc0D,EAAK,GAAMA,EAAK,GAAeW,GACnEzB,EAAqBc,EAAK,GAC1Bb,EAAqBa,EAAK,IAC1BY,GAAsBtE,IAAc0D,EAAK,IAAOM,OAAON,EAAK,KAAOY,GACnElB,GAAYmB,OAAUvE,IAAc0D,EAAK,IAAOF,EAAQE,EAAK,MAAM,EACnEc,GAAsBxE,IAAc0D,EAAK,IAAOA,EAAK,IAAcc,GACnEC,GAAsBzE,IAAc0D,EAAK,IAAOA,EAAK,IAAce,GAGpE,QAAShC,KACR,QAASiC,KACR,GAAIhB,GAAO3D,EAAO4E,aAElB1C,GAAI,2BAA6B2C,KAAKC,UAAUnB,IAEhDoB,GAAuB,mBAA6BpB,GAAQA,EAAKoB,gBAA0BA,GAC3FvB,GAAuB,iBAA6BG,GAAQA,EAAKH,cAA0BA,GAC3FwB,GAAuB,gBAA6BrB,GAAQA,EAAKsB,aAA0BD,GAC3FV,GAAuB,2BAA6BX,GAAQA,EAAKuB,wBAA0BZ,GAC3FI,GAAuB,0BAA6Bf,GAAQA,EAAKwB,uBAA0BT,GAG5F,QAASU,GAAuBC,EAAUC,GAOzC,MANI,kBAAsBD,KACzBnD,EAAI,gBAAkBoD,EAAW,cACjCC,GAAkBD,GAAYD,EAC9BA,EAAW,UAGLA,EAGJ,iBAAmBrF,IAAYwF,SAAWxF,EAAO4E,cAAca,cAClEd,IACAL,GAAiBc,EAAuBd,GAAgB,UACxDI,GAAiBU,EAAuBV,GAAgB,UAGzDxC,EAAI,mCAAqC8C,IAI1C,QAASU,GAAOC,EAAKC,GAKpB,MAJI,KAAOA,EAAMC,QAAQ,OACxBxD,EAAK,kCAAkCsD,GACvCC,EAAM,IAEAA,EAGR,QAAShD,GAAa+C,EAAKC,GACrB3F,IAAc2F,GAAW,KAAOA,GAAW,SAAWA,IAC1DE,SAASC,KAAKC,MAAML,GAAQC,EAC5B1D,EAAI,QAAQyD,EAAK,YAAYC,EAAM,MAIrC,QAASjD,KAEJ1C,IAAcoE,IACjBA,EAAgBL,EAAW,MAG5BpB,EAAa,SAAS8C,EAAO,SAASrB,IAGvC,QAASnB,KACR4C,SAASG,gBAAgBD,MAAME,OAAS,GACxCJ,SAASC,KAAKC,MAAME,OAAS,GAC7BhE,EAAI,oCAIL,QAASiE,GAAmBC,GAC3B,QAASC,KACR9C,EAAS6C,EAAQE,UAAUF,EAAQG,WAGpC,GAAIC,IACHC,IAAQ,SAASH,GAChBpG,EAAiBF,EAAOsG,EAAUD,IAEnCK,OAAQ,SAASJ,GAChB/F,EAAoBP,EAAOsG,EAAUD,IAIpCD,GAAQO,YAAcC,MAAMC,UAAUC,KACxCV,EAAQE,UAAYF,EAAQO,WAAW,GACvCP,EAAQO,WAAWG,IAAIN,EAASJ,EAAQW,UAExCP,EAASJ,EAAQW,QAAQX,EAAQE,WAGlCpE,EAAIzB,EAAsB2F,EAAQW,QAAU,oBAAsBX,EAAQG,WAG3E,QAASS,GAAqBD,GAC7BZ,GAAoBY,OAAOA,EAAQR,UAAW,kBAA6BI,YAAa,iBAAiB,0BACzGR,GAAoBY,OAAOA,EAAQR,UAAW,sBAA6BI,YAAa,qBAAqB,8BAC7GR,GAAoBY,OAAOA,EAAQR,UAAW,gBAA6BI,YAAa,eAAe,wBACvGR,GAAoBY,OAAOA,EAAQR,UAAW,QAA6BD,UAAY,UACvFH,GAAoBY,OAAOA,EAAQR,UAAW,WAA6BD,UAAY,YACvFH,GAAoBY,OAAOA,EAAQR,UAAW,aAA6BD,UAAY,cACvFH,GAAoBY,OAAOA,EAAQR,UAAW,qBAA6BD,UAAY,sBACvFH,GAAoBY,OAAOA,EAAQR,UAAW,QAA6BD,WAAa,aAAc,iBACtGH,GAAoBY,OAAOA,EAAQR,UAAW,qBAA6BD,UAAY,qBACvFH,GAAoBY,OAAOA,EAAQR,UAAW,cAA6BD,UAAY,eACvFH,GAAoBY,OAAOA,EAAQR,UAAW,YAA6BD,UAAY,aACvFH,GAAoBY,OAAOA,EAAQR,UAAW,eAA6BD,UAAY,gBACvFH,GAAoBY,OAAOA,EAAQR,UAAW,mBAA6BI,YAAa,kBAAkB,wBAAwB,oBAAoB,mBAAmB,sBACzKR,GAAoBY,OAAOA,EAAQR,UAAW,uBAA6BI,YAAa,sBAAsB,4BAA4B,wBAAwB,uBAAuB,0BACzLR,GAAoBY,OAAOA,EAAQR,UAAW,iBAA6BI,YAAa,gBAAgB,sBAAsB,kBAAkB,iBAAiB,oBAC9J,UAAYlC,IACd0B,GAAoBY,OAAOA,EAAQR,UAAW,iBAAyBD,UAAY,WAIrF,QAASW,GAAc5B,EAAS6B,EAAgBC,EAAMC,GASrD,MARIF,KAAoB7B,IACjBA,IAAY8B,KACjB9E,EAAKgD,EAAW,8BAA8B+B,EAAK,sBACnD/B,EAAS6B,GAEVhF,EAAIkF,EAAK,+BAA+B/B,EAAS,MAG3CA,EAGR,QAASrC,KACRsB,GAAiB2C,EAAc3C,GAAe+C,GAAsBC,GAAU,UAG/E,QAASrE,KACRyB,GAAgBuC,EAAcvC,GAAc6C,GAAqBC,GAAS,SAG3E,QAASpE,MACH,IAASgB,GACb4C,EAAqB,OACrBS,KAGAvF,EAAI,wBAIN,QAASwF,KACRxF,EAAI,6BACJyF,IAAa,EAGd,QAASC,KACR1F,EAAI,kCACJ3B,EAAoBP,EAAQ,UAAW6H,GAGxC,QAASC,KACJ,OAASC,GAEZA,EAAaC,aAIf,QAASC,KACRjB,EAAqB,UACrBc,IACAI,cAAcC,IAGf,QAASC,KACRV,IACAE,KACI,IAASxD,GAAY6D,IAG1B,QAASlF,KACR,GAAIsF,GAAWvC,SAASwC,cAAc,MACtCD,GAASrC,MAAMuC,MAAU,OACzBF,EAASrC,MAAMwC,QAAU,QACzB1C,SAASC,KAAK0C,YAAYJ,GAG3B,QAAS/E,KAER,QAASoF,KACR,OACCC,EAAI3I,EAAO4I,cAAgB3I,EAAaD,EAAO4I,YAAc9C,SAASG,gBAAgB4C,WACtFC,EAAI9I,EAAO+I,cAAgB9I,EAAaD,EAAO+I,YAAcjD,SAASG,gBAAgB+C,WAIxF,QAASC,GAAmB9I,GAC3B,GACC+I,GAAe/I,EAAGgJ,wBAClBC,EAAeV,GAEhB,QACCC,EAAGU,SAASH,EAAWI,KAAK,IAAMD,SAASD,EAAaT,EAAE,IAC1DG,EAAGO,SAASH,EAAWK,IAAI,IAAOF,SAASD,EAAaN,EAAE,KAI5D,QAASU,GAAWhH,GACnB,QAASiH,GAAaC,GACrB,GAAIC,GAAeV,EAAmBS,EAEtCxH,GAAI,4BAA4B0H,EAAK,WAAWD,EAAahB,EAAE,OAAOgB,EAAab,GACnFe,EAAQF,EAAab,EAAGa,EAAahB,EAAG,kBAGzC,GACCiB,GAAWpH,EAASuB,MAAM,KAAK,IAAMvB,EACrCsH,EAAWC,mBAAmBH,GAC9BF,EAAW5D,SAASkE,eAAeF,IAAahE,SAASmE,kBAAkBH,GAAU,EAElF7J,KAAcyJ,EACjBD,EAAaC,IAEbxH,EAAI,kBAAoB0H,EAAO,+CAC/BC,EAAQ,EAAE,EAAE,aAAa,IAAID,IAI/B,QAASM,KACJ,KAAO1H,SAASoH,MAAQ,MAAQpH,SAASoH,MAC5CJ,EAAWhH,SAASC,MAItB,QAAS0H,KACR,QAASC,GAAUjK,GAClB,QAASkK,GAAYC,GACpBA,EAAEC,iBAGFf,EAAW9H,KAAK8I,aAAa,SAG1B,MAAQrK,EAAGqK,aAAa,SAC3BtK,EAAiBC,EAAG,QAAQkK,GAI9BzD,MAAMC,UAAU4D,QAAQC,KAAM5E,SAAS6E,iBAAkB,gBAAkBP,GAG5E,QAASQ,KACR1K,EAAiBF,EAAO,aAAakK,GAGtC,QAASW,KACRhJ,WAAWqI,EAAkBY,IAG9B,QAASC,KAELnE,MAAMC,UAAU4D,SAAW3E,SAAS6E,kBACtCzI,EAAI,qCACJiI,IACAS,IACAC,KAEAxI,EAAK,2FAUP,MANGgB,IAAYmB,OACduG,IAEA7I,EAAI,gCAIJsH,WAAWA,GAIb,QAASrG,KACRjB,EAAI,yBAEJ8I,GAAIC,cAEH7G,WAAY,SAAqB8G,GAUhC,OATI,IAASA,IAAU,IAAU9G,GAChCA,GAAW,EACXhB,MAEU,IAAU8H,IAAU,IAAS9G,IACvCA,GAAW,EACX6D,KAGM7D,GAGR+G,MAAO,WACNtB,EAAQ,EAAE,EAAE,SACZzB,KAGDgD,MAAO,WACN,MAAOnJ,KAGRoJ,YAAa,SAAsBC,GAC9B,kBAAsBA,IACzBC,GAAmBD,EACnBzB,EAAQ,EAAE,EAAE,cAEZ0B,GAAmB,aACnB1B,EAAQ,EAAE,EAAE,kBAId2B,aAAc,SAAuB5B,GACpCvG,GAAYmG,WAAWI,IAGxB6B,MAAO,WACNC,EAAY,uBAGbC,SAAU,SAAmBhD,EAAEG,GAC9Be,EAAQf,EAAEH,EAAE,aAGbiD,eAAgB,SAAmBjD,EAAEG,GACpCe,EAAQf,EAAEH,EAAE,mBAGbkD,YAAa,SAAsB9J,EAAIkD,GACtC4E,EAAQ,EAAE,EAAE,UAAUhF,KAAKC,UAAU/C,GAAKkD,IAG3C6G,2BAA4B,SAAqC5G,GAChEZ,GAAiBY,EACjBlC,KAGD+I,0BAA2B,SAAoC5G,GAC9DT,GAAgBS,EAChBlC,KAGD+I,gBAAiB,SAA0B/G,GAC1C/C,EAAI,qBAAqB+C,GACzBD,GAAsBC,GAGvBgH,KAAM,SAAeC,EAAcC,GAClC,GAAIC,GAAY,IAAIF,EAAaA,EAAa,KAAKC,EAAY,IAAIA,EAAY,GAE/E5I,GAAS,OAAO,qBAAqB6I,EAAU,IAAKF,EAAcC,KAKrE,QAASE,KACH,IAAMlI,KACVjC,EAAI,gBAAgBiC,GAAS,MAC7BgE,GAAgBmE,YAAY,WAC3B/I,EAAS,WAAW,gBAAgBY,KACnCoI,KAAKC,IAAIrI,MAKb,QAASsI,KACR,QAASC,GAAqBC,GAC7B,QAASC,GAAqBC,IACzB,IAAUA,EAAQC,WACrB5K,EAAI,uBAAyB2K,EAAQE,KACrCF,EAAQ3M,iBAAiB,OAAQ8M,GAAa,GAC9CH,EAAQ3M,iBAAiB,QAAS+M,GAAY,GAC9CC,EAASC,KAAKN,IAIM,eAAlBF,EAASvF,MAAoD,QAA3BuF,EAASS,cAC9CR,EAAqBD,EAASjD,QACF,cAAlBiD,EAASvF,MACnBR,MAAMC,UAAU4D,QAAQC,KACvBiC,EAASjD,OAAOiB,iBAAiB,OACjCiC,GAKH,QAASS,GAAgBR,GACxBK,EAASI,OAAOJ,EAASrH,QAAQgH,GAAS,GAG3C,QAASU,GAAwBV,GAChC3K,EAAI,yBAA2B2K,EAAQE,KACvCF,EAAQtM,oBAAoB,OAAQyM,GAAa,GACjDH,EAAQtM,oBAAoB,QAAS0M,GAAY,GACjDI,EAAgBR,GAGjB,QAASW,GAAoBC,EAAMrG,EAAKsG,GACvCH,EAAwBE,EAAM/D,QAC9BnG,EAAS6D,EAAMsG,EAAW,KAAOD,EAAM/D,OAAOqD,IAAK9M,EAAWA,GAG/D,QAAS+M,GAAYS,GACpBD,EAAoBC,EAAM,YAAY,gBAGvC,QAASR,GAAWQ,GACnBD,EAAoBC,EAAM,kBAAkB,qBAG7C,QAASE,GAAiBC,GACzBrK,EAAS,mBAAmB,qBAAuBqK,EAAU,GAAGlE,OAAS,IAAMkE,EAAU,GAAGxG,MAG5FwG,EAAUnD,QAAQiC,GAGnB,QAASmB,KACR,GACCnE,GAAS5D,SAASgI,cAAc,QAEhCC,GACCC,YAAwB,EACxBC,mBAAwB,EACxBC,eAAwB,EACxBC,uBAAwB,EACxBC,WAAwB,EACxBC,SAAwB,EAQ1B,OALAC,GAAW,GAAIC,GAAiBZ,GAEhCzL,EAAI,gCACJoM,EAASE,QAAQ9E,EAAQqE,GAElBO,EAGR,GACCpB,MACAqB,EAAmBvO,EAAOuO,kBAAoBvO,EAAOyO,uBACrDH,EAAmBT,GAEpB,QACC7F,WAAY,WACP,cAAgBsG,KACnBpM,EAAI,oCACJoM,EAAStG,aACTkF,EAASzC,QAAQ8C,MAMrB,QAAS9F,KACR,GAAIiH,GAAqB,EAAIvK,EAGzBnE,GAAOuO,kBAAoBvO,EAAOyO,uBACjCC,EACHrC,IAEAtE,EAAe0E,KAGhBvK,EAAI,mDACJmK,KAOF,QAASsC,GAAiBC,EAAKzO,GAE9B,QAAS0O,GAAuBjJ,GAC/B,GAAIkJ,GAAQ,aAEZ,IAAIA,EAAMC,KAAKnJ,GACd,MAAOyD,UAASzD,EAAMoJ,EAGvB,IACChJ,GAAQ7F,EAAG6F,MAAMsD,KACjB2F,EAAe9O,EAAG8O,aAAa3F,IAQhC,OANAnJ,GAAG8O,aAAa3F,KAAOnJ,EAAG+O,aAAa5F,KACvCnJ,EAAG6F,MAAMsD,KAAO1D,GAAS,EACzBA,EAAQzF,EAAG6F,MAAMmJ,UACjBhP,EAAG6F,MAAMsD,KAAOtD,EAChB7F,EAAG8O,aAAa3F,KAAO2F,EAEhBrJ,EAGR,GAAIwJ,GAAS,CAWb,OAVAjP,GAAMA,GAAM2F,SAASC,KAGhB,eAAiBD,WAAc,oBAAsBA,UAASuJ,aAClED,EAAStJ,SAASuJ,YAAYV,iBAAiBxO,EAAI,MACnDiP,EAAU,OAASA,EAAUA,EAAOR,GAAQ,GAE5CQ,EAAUP,EAAuB1O,EAAG+O,aAAaN,IAG3CvF,SAAS+F,EAAOJ,GAGxB,QAASM,GAAgBC,GACrBA,EAAQ9N,GAAe,IACzBA,GAAiB,EAAE8N,EACnBrN,EAAI,+BAAiCT,GAAiB,OAKxD,QAAS+N,GAAcC,EAAKvC,GAQ3B,IAAK,GANJwC,GAAiBxC,EAASyC,OAC1BC,EAAiB,EACjBC,EAAiB,EACjBC,EAAiBrP,EAAsBgP,GACvCF,EAAiBlO,KAET0O,EAAI,EAAOL,EAAJK,EAAoBA,IACnCH,EAAQ1C,EAAS6C,GAAG5G,wBAAwBsG,GAAQd,EAAiB,SAASmB,EAAK5C,EAAS6C,IACxFH,EAAQC,IACXA,EAASD,EAWX,OAPAL,GAAQlO,KAAWkO,EAEnBrN,EAAI,UAAUwN,EAAe,kBAC7BxN,EAAI,kCAAoCqN,EAAQ,MAEhDD,EAAgBC,GAETM,EAGR,QAASG,GAAmBC,GAC3B,OACCA,EAAUC,aACVD,EAAUE,aACVF,EAAUG,wBACVH,EAAUI,yBAIZ,QAASC,GAAkBb,EAAKc,GAC/B,QAASC,KAER,MADAnO,GAAK,uBAAuBkO,EAAI,mBACzBrK,GAGR,GAAIgH,GAAWpH,SAAS6E,iBAAiB,IAAI4F,EAAI,IAEjD,OAAO,KAAMrD,EAASyC,OAAUa,IAA0BhB,EAAcC,EAAKvC,GAG9E,QAASuD,KACR,MAAO3K,UAAS6E,iBAAiB,UA6FlC,QAAS+F,GAAWC,EAAcC,EAAkB1E,EAAcC,GAEjE,QAAS0E,KACR3K,GAAS4K,EACTC,GAASC,EAETnH,EAAQ3D,GAAO6K,GAAMJ,GAGtB,QAASM,KACR,QAASC,GAAeC,EAAEC,GACzB,GAAIhC,GAAS7C,KAAKC,IAAI2E,EAAEC,IAAM7M,EAC9B,QAAQ6K,EAMT,MAHA0B,GAAiB7Q,IAAciM,EAAiBA,EAAe5E,GAAUhD,MACzE0M,EAAiB/Q,IAAckM,EAAiBA,EAAe3E,GAAS9C,MAEjEwM,EAAehL,GAAO4K,IAAmB5M,IAAkBgN,EAAeH,GAAMC,GAGxF,QAASK,KACR,QAASV,KAAiBrO,KAAO,EAAE6B,SAAW,EAAE8H,KAAO,IAGxD,QAASqF,KACR,MAAQhN,MAAkBiN,KAA0BrN,IAAkBQ,KAAiB6M,IAGxF,QAASC,KACRtP,EAAI,8BAGL,QAASuP,KACJJ,KAA2BC,IAC9B5F,EAAYkF,GACAD,KAAiBxM,SAAW,IACxCqN,IAIF,GAAIV,GAAcE,CAEdC,MAA0B,SAAWN,GACxCe,IACAb,KAEAY,IAMF,QAASlO,GAASoN,EAAcC,EAAkB1E,EAAcC,GAC/D,QAASwF,KACFhB,KAAiBlF,MAAQ,EAAEmG,UAAY,EAAEtP,KAAO,IACrDJ,EAAK,kBAAoB0O,GAI3B,QAASiB,KACR,MAAQC,KAAkBnB,IAAgBoB,IAGtCF,IAIJ3P,EAAI,4BAA4ByO,IAHhCgB,IACAK,GAAoBrB,EAAcC,EAAkB1E,EAAcC,IAMpE,QAASuF,KACHI,KACJA,IAAgB,EAChB5P,EAAI,0BAELN,aAAaqQ,IACbA,GAAqBpQ,WAAW,WAC/BiQ,IAAgB,EAChB5P,EAAI,0BACJA,EAAI,OACH4I,IAGH,QAASoH,GAAavB,GACrBzK,GAASoB,GAAUhD,MACnByM,GAASvJ,GAAS9C,MAElBmF,EAAQ3D,GAAO6K,GAAMJ,GAGtB,QAASjF,GAAYkF,GACpB,GAAIuB,GAAM7N,EACVA,IAAiB+C,GAEjBnF,EAAI,wBAA0B0O,GAC9Bc,IACAQ,EAAa,SAEb5N,GAAiB6N,EAGlB,QAAStI,GAAQ3D,EAAO6K,EAAMJ,EAAa5O,EAAIkD,GAC9C,QAAS+G,KACJ/L,IAAcgF,EACjBA,EAAeD,GAEf9C,EAAI,yBAAyB+C,GAI/B,QAASmN,KACR,GACCnG,GAAQ/F,EAAS,IAAM6K,EACvBsB,EAAUpQ,GAAO,IAAOgK,EAAO,IAAM0E,GAAgB1Q,IAAc8B,EAAM,IAAMA,EAAM,GAEtFG,GAAI,iCAAmCmQ,EAAU,KACjD3I,GAAO4I,YAAatQ,GAAQqQ,EAASpN,IAGnC,IAAS0C,KACXqE,IACAoG,KAIF,QAASvK,GAAS4F,GACjB,QAAS8E,KACR,MAAOvQ,OAAW,GAAGyL,EAAM9J,MAAME,OAAO,EAAEC,IAG3C,QAAS0O,KACR,QAASC,KACR7O,GAAU6J,EAAM9J,KAChB+F,GAAU+D,EAAMiF,OAEhBpQ,IACAqQ,IAAW,EACX9Q,WAAW,WAAY+Q,IAAW,GAAQ9H,IAGvChF,SAASC,KACZ0M,KAEAvQ,EAAI,0BACJhC,EAAiBF,EAAO,mBAAmBwS,IAI7C,QAASK,KACHD,GAIJ1Q,EAAI,+BAHJA,EAAI,gCACJgQ,EAAa,cAMf,QAASY,KACRvP,EAAS,eAAe,sCAGzB,QAASiI,KACR,GAAIuH,GAASC,GACb3P,IAAYmG,WAAWuJ,GAGxB,QAASE,KACR,MAAOxF,GAAM9J,KAAKI,MAAM,KAAK,GAAGA,MAAM,KAAK,GAG5C,QAASiP,KACR,MAAOvF,GAAM9J,KAAKE,OAAO4J,EAAM9J,KAAKkC,QAAQ,KAAK,GAGlD,QAASqN,KACR,MAAQ,gBAAkBlT,GAG3B,QAASmT,KACR,GAAIC,GAAUJ,GAEd9Q,GAAI,uCAAyCkR,GAC7CrO,GAAgBF,KAAKwO,MAAMD,IAC3BlR,EAAI,OAGL,QAASoR,KACR,GAAIF,GAAUJ,GACd9Q,GAAI,0CAA4CkR,GAChD7H,GAAiB1G,KAAKwO,MAAMD,IAC5BlR,EAAI,OAGL,QAASqR,KAGR,MAAO9F,GAAM9J,KAAKI,MAAM,KAAK,KAAOyP,OAAO,EAAEC,QAAQ,GAGtD,QAASC,KACR,OAAQT,KACR,IAAK,QACJJ,GACA,MACD,KAAK,SACJC,GACA,MACD,KAAK,aACL,IAAK,eACJtH,GACA,MACD,KAAK,UACJ2H,GACA,MACD,KAAK,WACJG,GACA,MACD,SACMJ,KAAmBK,KACvBlR,EAAK,uBAAuBoL,EAAM9J,KAAK,MAK1C,QAASgQ,MACJ,IAAUhB,GACbe,IACUH,IACVf,IAEAtQ,EAAI,4BAA8B+Q,IAAmB,sCAInDV,KACHoB,IAMF,QAASC,KACL,YAAc9N,SAAS+N,YACzB7T,EAAO8T,OAAOxB,YAAY,4BAA4B,KA3jCxD,GACClO,IAAwB,EACxB4K,EAAwB,GACxBnM,EAAwB,GACxBmB,EAAwB,EACxBK,EAAwB,GACxB0D,EAAwB,KACxBjF,EAAwB,GACxBoB,IAAwB,EACxB6N,IAAyB7G,OAAS,EAAE6I,MAAQ,GAC5CjJ,GAAwB,IACxB6H,IAAwB,EACxBzM,GAAwB,EACxBmB,GAAwB,aACxB/C,GAAwB+C,GACxBuL,IAAwB,EACxBhP,GAAwB,GACxBP,MACAc,GAAwB,GACxBgE,GAAwB,KACxBhG,IAAwB,EACxBH,GAAwB,gBACxB8B,GAAwB9B,GAAM2N,OAC9B1N,GAAwB,GAExBsP,IAAyByC,IAAI,EAAEC,IAAI,EAAE9D,WAAW,EAAEE,sBAAsB,GACxE5L,GAAwB,QACxBkD,IAAwB,EACxB+B,GAAwB1J,EAAO8T,OAC/B9O,GAAwB,IACxBT,GAAwB,EACxBuN,IAAwB,EACxBG,GAAwB,KACxBxQ,GAAwB,GACxBsP,GAAwB,EACxBxJ,GAAwB,SACxB7C,GAAwB6C,GACxByD,GAAwBhL,EACxB+E,GAAwB,WAAY1C,EAAK,yCACzCmB,GAAwB,aACxB+H,GAAwB,aACxBhG,IACCW,OAAQ,WAEP,MADA7D,GAAK,kDACEyD,SAASG,gBAAgBiO,cAEjCnD,MAAO,WAEN,MADA1O,GAAK,iDACEyD,SAASC,KAAKoO,cA2EpB9S,GAAS+S,KAAK7S,KAAO,WAExB,OAAO,GAAI6S,OAAOC,WAgnBlB/M,IACC4I,WAAY,WACX,MAAQpK,UAASC,KAAKmO,aAAevF,EAAiB,aAAeA,EAAiB,iBAGvF2F,OAAQ,WACP,MAAOhN,IAAU4I,cAGlBC,WAAY,WACX,MAAOrK,UAASC,KAAKwO,cAGtBC,OAAQ,WACP,MAAOjP,IAAkBW,UAG1BkK,sBAAuB,WACtB,MAAOtK,UAASG,gBAAgBiO,cAGjC7D,sBAAuB,WACtB,MAAOvK,UAASG,gBAAgBsO,cAGjCP,IAAK,WACJ,MAAOzH,MAAKyH,IAAI1S,MAAM,KAAK0O,EAAmB1I,MAG/C2M,IAAK,WACJ,MAAO1H,MAAK0H,IAAI3S,MAAM,KAAK0O,EAAmB1I,MAG/CmN,KAAM,WACL,MAAOnN,IAAU0M,OAGlBU,cAAe,WACd,MAAOnI,MAAKyH,IAAI1M,GAAU4I,aAAcV,EAAc,SAASiB,OAGhEkE,cAAe,WACd,MAAOrE,GAAkB,SAAS,wBAIpC9I,IACC2I,WAAY,WACX,MAAOrK,UAASC,KAAKoO,aAGtBjE,WAAY,WACX,MAAOpK,UAASC,KAAK6O,aAGtBJ,OAAQ,WACP,MAAOjP,IAAkBwL,SAG1BV,sBAAuB,WACtB,MAAOvK,UAASG,gBAAgBkO,aAGjC/D,sBAAuB,WACtB,MAAOtK,UAASG,gBAAgB2O,aAGjCC,OAAQ,WACP,MAAOtI,MAAKyH,IAAIxM,GAAS2I,aAAc3I,GAAS6I,0BAGjD2D,IAAK,WACJ,MAAOzH,MAAKyH,IAAI1S,MAAM,KAAK0O,EAAmBxI,MAG/CyM,IAAK,WACJ,MAAO1H,MAAK0H,IAAI3S,MAAM,KAAK0O,EAAmBxI,MAG/CsN,iBAAkB,WACjB,MAAOtF,GAAc,QAASiB,MAG/BkE,cAAe,WACd,MAAOrE,GAAkB,QAAS,uBAwDjC0B,GAAsBlR,EAAS4P,EAsMnCxQ,GAAiBF,EAAQ,UAAW6H,GACpC+L,KAIE5T","sourcesContent":["/*\n * File: iframeResizer.contentWindow.js\n * Desc: Include this file in any page being loaded into an iframe\n * to force the iframe to resize to the content size.\n * Requires: iframeResizer.js on host page.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Ian Caunce - ian@hallnet.co.uk\n */\n\n\n;(function(window, undefined) {\n\t'use strict';\n\n\tvar\n\t\tautoResize = true,\n\t\tbase = 10,\n\t\tbodyBackground = '',\n\t\tbodyMargin = 0,\n\t\tbodyMarginStr = '',\n\t\tbodyObserver = null,\n\t\tbodyPadding = '',\n\t\tcalculateWidth = false,\n\t\tdoubleEventList = {'resize':1,'click':1},\n\t\teventCancelTimer = 128,\n\t\tfirstRun = true,\n\t\theight = 1,\n\t\theightCalcModeDefault = 'bodyOffset',\n\t\theightCalcMode = heightCalcModeDefault,\n\t\tinitLock = true,\n\t\tinitMsg = '',\n\t\tinPageLinks = {},\n\t\tinterval = 32,\n\t\tintervalTimer = null,\n\t\tlogging = false,\n\t\tmsgID = '[iFrameSizer]', //Must match host page msg ID\n\t\tmsgIdLen = msgID.length,\n\t\tmyID = '',\n\t\tobserver = null,\n\t\tresetRequiredMethods = {max:1,min:1,bodyScroll:1,documentElementScroll:1},\n\t\tresizeFrom = 'child',\n\t\tsendPermit = true,\n\t\ttarget = window.parent,\n\t\ttargetOriginDefault = '*',\n\t\ttolerance = 0,\n\t\ttriggerLocked = false,\n\t\ttriggerLockedTimer = null,\n\t\tthrottledTimer = 16,\n\t\twidth = 1,\n\t\twidthCalcModeDefault = 'scroll',\n\t\twidthCalcMode = widthCalcModeDefault,\n\t\twin = window,\n\t\tmessageCallback = function(){ warn('MessageCallback function not defined'); },\n\t\treadyCallback = function(){},\n\t\tpageInfoCallback = function(){},\n\t\tcustomCalcMethods = {\n\t\t\theight: function(){\n\t\t\t\twarn('Custom height calculation function not defined');\n\t\t\t\treturn document.documentElement.offsetHeight;\n\t\t\t}, \n\t\t\twidth: function(){\n\t\t\t\twarn('Custom width calculation function not defined');\n\t\t\t\treturn document.body.scrollWidth;\n\t\t\t}\n\t\t};\n\n\n\tfunction addEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('addEventListener' in window){\n\t\t\tel.addEventListener(evt,func, false);\n\t\t} else if ('attachEvent' in window){ //IE\n\t\t\tel.attachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction removeEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('removeEventListener' in window){\n\t\t\tel.removeEventListener(evt,func, false);\n\t\t} else if ('detachEvent' in window){ //IE\n\t\t\tel.detachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction capitalizeFirstLetter(string) {\n\t\treturn string.charAt(0).toUpperCase() + string.slice(1);\n\t}\n\n\t//Based on underscore.js\n\tfunction throttle(func) {\n\t\tvar\n\t\t\tcontext, args, result,\n\t\t\ttimeout = null,\n\t\t\tprevious = 0,\n\t\t\tlater = function() {\n\t\t\t\tprevious = getNow();\n\t\t\t\ttimeout = null;\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t\tif (!timeout) {\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn function() {\n\t\t\tvar now = getNow();\n\n\t\t\tif (!previous) {\n\t\t\t\tprevious = now;\n\t\t\t}\n\n\t\t\tvar remaining = throttledTimer - (now - previous);\n\n\t\t\tcontext = this;\n\t\t\targs = arguments;\n\n\t\t\tif (remaining <= 0 || remaining > throttledTimer) {\n\t\t\t\tif (timeout) {\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\ttimeout = null;\n\t\t\t\t}\n\n\t\t\t\tprevious = now;\n\t\t\t\tresult = func.apply(context, args);\n\n\t\t\t\tif (!timeout) {\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\n\t\t\t} else if (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, remaining);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tvar getNow = Date.now || function() {\n\t\t/* istanbul ignore next */ // Not testable in PhantonJS\n\t\treturn new Date().getTime();\n\t};\n\n\tfunction formatLogMsg(msg){\n\t\treturn msgID + '[' + myID + ']' + ' ' + msg;\n\t}\n\n\tfunction log(msg){\n\t\tif (logging && ('object' === typeof window.console)){\n\t\t\tconsole.log(formatLogMsg(msg));\n\t\t}\n\t}\n\n\tfunction warn(msg){\n\t\tif ('object' === typeof window.console){\n\t\t\tconsole.warn(formatLogMsg(msg));\n\t\t}\n\t}\n\n\n\tfunction init(){\n\t\treadDataFromParent();\n\t\tlog('Initialising iFrame ('+location.href+')');\n\t\treadDataFromPage();\n\t\tsetMargin();\n\t\tsetBodyStyle('background',bodyBackground);\n\t\tsetBodyStyle('padding',bodyPadding);\n\t\tinjectClearFixIntoBodyElement();\n\t\tcheckHeightMode();\n\t\tcheckWidthMode();\n\t\tstopInfiniteResizingOfIFrame();\n\t\tsetupPublicMethods();\n\t\tstartEventListeners();\n\t\tinPageLinks = setupInPageLinks();\n\t\tsendSize('init','Init message from host page');\n\t\treadyCallback();\n\t}\n\n\tfunction readDataFromParent(){\n\n\t\tfunction strBool(str){\n\t\t\treturn 'true' === str ? true : false;\n\t\t}\n\n\t\tvar data = initMsg.substr(msgIdLen).split(':');\n\n\t\tmyID = data[0];\n\t\tbodyMargin = (undefined !== data[1]) ? Number(data[1]) : bodyMargin; //For V1 compatibility\n\t\tcalculateWidth = (undefined !== data[2]) ? strBool(data[2]) : calculateWidth;\n\t\tlogging = (undefined !== data[3]) ? strBool(data[3]) : logging;\n\t\tinterval = (undefined !== data[4]) ? Number(data[4]) : interval;\n\t\tautoResize = (undefined !== data[6]) ? strBool(data[6]) : autoResize;\n\t\tbodyMarginStr = data[7];\n\t\theightCalcMode = (undefined !== data[8]) ? data[8] : heightCalcMode;\n\t\tbodyBackground = data[9];\n\t\tbodyPadding = data[10];\n\t\ttolerance = (undefined !== data[11]) ? Number(data[11]) : tolerance;\n\t\tinPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;\n\t\tresizeFrom = (undefined !== data[13]) ? data[13] : resizeFrom;\n\t\twidthCalcMode = (undefined !== data[14]) ? data[14] : widthCalcMode;\n\t}\n\n\tfunction readDataFromPage(){\n\t\tfunction readData(){\n\t\t\tvar data = window.iFrameResizer;\n\n\t\t\tlog('Reading data from page: ' + JSON.stringify(data));\n\n\t\t\tmessageCallback = ('messageCallback' in data) ? data.messageCallback : messageCallback;\n\t\t\treadyCallback = ('readyCallback' in data) ? data.readyCallback : readyCallback;\n\t\t\ttargetOriginDefault = ('targetOrigin' in data) ? data.targetOrigin : targetOriginDefault;\n\t\t\theightCalcMode = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;\n\t\t\twidthCalcMode = ('widthCalculationMethod' in data) ? data.widthCalculationMethod : widthCalcMode;\n\t\t}\n\n\t\tfunction setupCustomCalcMethods(calcMode, calcFunc){\n\t\t\tif ('function' === typeof calcMode) {\n\t\t\t\tlog('Setup custom ' + calcFunc + 'CalcMethod');\n\t\t\t\tcustomCalcMethods[calcFunc] = calcMode;\n\t\t\t\tcalcMode = 'custom';\n\t\t\t}\n\n\t\t\treturn calcMode;\n\t\t}\n\n\t\tif(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {\n\t\t\treadData();\n\t\t\theightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');\n\t\t\twidthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');\n\t\t}\n\n\t\tlog('TargetOrigin for parent set to: ' + targetOriginDefault);\n\t}\n\n\n\tfunction chkCSS(attr,value){\n\t\tif (-1 !== value.indexOf('-')){\n\t\t\twarn('Negative CSS value ignored for '+attr);\n\t\t\tvalue='';\n\t\t}\n\t\treturn value;\n\t}\n\n\tfunction setBodyStyle(attr,value){\n\t\tif ((undefined !== value) && ('' !== value) && ('null' !== value)){\n\t\t\tdocument.body.style[attr] = value;\n\t\t\tlog('Body '+attr+' set to \"'+value+'\"');\n\t\t}\n\t}\n\n\tfunction setMargin(){\n\t\t//If called via V1 script, convert bodyMargin from int to str\n\t\tif (undefined === bodyMarginStr){\n\t\t\tbodyMarginStr = bodyMargin+'px';\n\t\t}\n\n\t\tsetBodyStyle('margin',chkCSS('margin',bodyMarginStr));\n\t}\n\n\tfunction stopInfiniteResizingOfIFrame(){\n\t\tdocument.documentElement.style.height = '';\n\t\tdocument.body.style.height = '';\n\t\tlog('HTML & body height set to \"auto\"');\n\t}\n\n\n\tfunction manageTriggerEvent(options){\n\t\tfunction handleEvent(){\n\t\t\tsendSize(options.eventName,options.eventType);\n\t\t}\n\n\t\tvar listener = {\n\t\t\tadd: function(eventName){\n\t\t\t\taddEventListener(window,eventName,handleEvent);\n\t\t\t},\n\t\t\tremove: function(eventName){\n\t\t\t\tremoveEventListener(window,eventName,handleEvent);\n\t\t\t}\n\t\t};\n\n\t\tif(options.eventNames && Array.prototype.map){\n\t\t\toptions.eventName = options.eventNames[0];\n\t\t\toptions.eventNames.map(listener[options.method]);\n\t\t} else {\n\t\t\tlistener[options.method](options.eventName);\n\t\t}\n\n\t\tlog(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);\n\t}\n\n\tfunction manageEventListeners(method){\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Input', eventName: 'input' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Mouse Up', eventName: 'mouseup' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Mouse Down', eventName: 'mousedown' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Orientation Change', eventName: 'orientationchange' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Print', eventName: ['afterprint', 'beforeprint'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Ready State Change', eventName: 'readystatechange' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch Start', eventName: 'touchstart' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch End', eventName: 'touchend' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Touch Cancel', eventName: 'touchcancel' });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition Start', eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition Iteration', eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });\n\t\tmanageTriggerEvent({method:method, eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });\n\t\tif('child' === resizeFrom){\n\t\t\tmanageTriggerEvent({method:method, eventType: 'IFrame Resized', eventName: 'resize' });\n\t\t}\n\t}\n\n\tfunction checkCalcMode(calcMode,calcModeDefault,modes,type){\n\t\tif (calcModeDefault !== calcMode){\n\t\t\tif (!(calcMode in modes)){\n\t\t\t\twarn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');\n\t\t\t\tcalcMode=calcModeDefault;\n\t\t\t}\n\t\t\tlog(type+' calculation method set to \"'+calcMode+'\"');\n\t\t}\n\n\t\treturn calcMode;\n\t}\n\n\tfunction checkHeightMode(){\n\t\theightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');\n\t}\n\n\tfunction checkWidthMode(){\n\t\twidthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');\n\t}\n\n\tfunction startEventListeners(){\n\t\tif ( true === autoResize ) {\n\t\t\tmanageEventListeners('add');\n\t\t\tsetupMutationObserver();\n\t\t}\n\t\telse {\n\t\t\tlog('Auto Resize disabled');\n\t\t}\n\t}\n\n\tfunction stopMsgsToParent(){\n\t\tlog('Disable outgoing messages');\n\t\tsendPermit = false;\n\t}\n\n\tfunction removeMsgListener(){\n\t\tlog('Remove event listener: Message');\n\t\tremoveEventListener(window, 'message', receiver);\n\t}\n\n\tfunction disconnectMutationObserver(){\n\t\tif (null !== bodyObserver){\n\t\t\t/* istanbul ignore next */ // Not testable in PhantonJS\n\t\t\tbodyObserver.disconnect();\n\t\t}\n\t}\n\n\tfunction stopEventListeners(){\n\t\tmanageEventListeners('remove');\n\t\tdisconnectMutationObserver();\n\t\tclearInterval(intervalTimer);\n\t}\n\n\tfunction teardown(){\n\t\tstopMsgsToParent();\n\t\tremoveMsgListener();\n\t\tif (true === autoResize) stopEventListeners();\n\t}\n\n\tfunction injectClearFixIntoBodyElement(){\n\t\tvar clearFix = document.createElement('div');\n\t\tclearFix.style.clear = 'both';\n\t\tclearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.\n\t\tdocument.body.appendChild(clearFix);\n\t}\n\n\tfunction setupInPageLinks(){\n\n\t\tfunction getPagePosition (){\n\t\t\treturn {\n\t\t\t\tx: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,\n\t\t\t\ty: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop\n\t\t\t};\n\t\t}\n\n\t\tfunction getElementPosition(el){\n\t\t\tvar\n\t\t\t\telPosition = el.getBoundingClientRect(),\n\t\t\t\tpagePosition = getPagePosition();\n\n\t\t\treturn {\n\t\t\t\tx: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),\n\t\t\t\ty: parseInt(elPosition.top,10) + parseInt(pagePosition.y,10)\n\t\t\t};\n\t\t}\n\n\t\tfunction findTarget(location){\n\t\t\tfunction jumpToTarget(target){\n\t\t\t\tvar jumpPosition = getElementPosition(target);\n\n\t\t\t\tlog('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);\n\t\t\t\tsendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\thash = location.split('#')[1] || location, //Remove # if present\n\t\t\t\thashData = decodeURIComponent(hash),\n\t\t\t\ttarget = document.getElementById(hashData) || document.getElementsByName(hashData)[0];\n\n\t\t\tif (undefined !== target){\n\t\t\t\tjumpToTarget(target);\n\t\t\t} else {\n\t\t\t\tlog('In page link (#' + hash + ') not found in iFrame, so sending to parent');\n\t\t\t\tsendMsg(0,0,'inPageLink','#'+hash);\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLocationHash(){\n\t\t\tif ('' !== location.hash && '#' !== location.hash){\n\t\t\t\tfindTarget(location.href);\n\t\t\t}\n\t\t}\n\n\t\tfunction bindAnchors(){\n\t\t\tfunction setupLink(el){\n\t\t\t\tfunction linkClicked(e){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t/*jshint validthis:true */\n\t\t\t\t\tfindTarget(this.getAttribute('href'));\n\t\t\t\t}\n\n\t\t\t\tif ('#' !== el.getAttribute('href')){\n\t\t\t\t\taddEventListener(el,'click',linkClicked);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tArray.prototype.forEach.call( document.querySelectorAll( 'a[href^=\"#\"]' ), setupLink );\n\t\t}\n\n\t\tfunction bindLocationHash(){\n\t\t\taddEventListener(window,'hashchange',checkLocationHash);\n\t\t}\n\n\t\tfunction initCheck(){ //check if page loaded with location hash after init resize\n\t\t\tsetTimeout(checkLocationHash,eventCancelTimer);\n\t\t}\n\n\t\tfunction enableInPageLinks(){\n\t\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\t\tif(Array.prototype.forEach && document.querySelectorAll){\n\t\t\t\tlog('Setting up location.hash handlers');\n\t\t\t\tbindAnchors();\n\t\t\t\tbindLocationHash();\n\t\t\t\tinitCheck();\n\t\t\t} else {\n\t\t\t\twarn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');\n\t\t\t}\n\t\t}\n\n\t\tif(inPageLinks.enable){\n\t\t\tenableInPageLinks();\n\t\t} else {\n\t\t\tlog('In page linking not enabled');\n\t\t}\n\n\t\treturn {\n\t\t\tfindTarget:findTarget\n\t\t};\n\t}\n\n\tfunction setupPublicMethods(){\n\t\tlog('Enable public methods');\n\n\t\twin.parentIFrame = {\n\n\t\t\tautoResize: function autoResizeF(resize){\n\t\t\t\tif (true === resize && false === autoResize) {\n\t\t\t\t\tautoResize=true;\n\t\t\t\t\tstartEventListeners();\n\t\t\t\t\t//sendSize('autoResize','Auto Resize enabled');\n\t\t\t\t} else if (false === resize && true === autoResize) {\n\t\t\t\t\tautoResize=false;\n\t\t\t\t\tstopEventListeners();\n\t\t\t\t}\n\n\t\t\t\treturn autoResize;\n\t\t\t},\n\n\t\t\tclose: function closeF(){\n\t\t\t\tsendMsg(0,0,'close');\n\t\t\t\tteardown();\n\t\t\t},\n\n\t\t\tgetId: function getIdF(){\n\t\t\t\treturn myID;\n\t\t\t},\n\n\t\t\tgetPageInfo: function getPageInfoF(callback){\n\t\t\t\tif ('function' === typeof callback){\n\t\t\t\t\tpageInfoCallback = callback;\n\t\t\t\t\tsendMsg(0,0,'pageInfo');\n\t\t\t\t} else {\n\t\t\t\t\tpageInfoCallback = function(){};\n\t\t\t\t\tsendMsg(0,0,'pageInfoStop');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmoveToAnchor: function moveToAnchorF(hash){\n\t\t\t\tinPageLinks.findTarget(hash);\n\t\t\t},\n\n\t\t\treset: function resetF(){\n\t\t\t\tresetIFrame('parentIFrame.reset');\n\t\t\t},\n\n\t\t\tscrollTo: function scrollToF(x,y){\n\t\t\t\tsendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width\n\t\t\t},\n\n\t\t\tscrollToOffset: function scrollToF(x,y){\n\t\t\t\tsendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width\n\t\t\t},\n\n\t\t\tsendMessage: function sendMessageF(msg,targetOrigin){\n\t\t\t\tsendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);\n\t\t\t},\n\n\t\t\tsetHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){\n\t\t\t\theightCalcMode = heightCalculationMethod;\n\t\t\t\tcheckHeightMode();\n\t\t\t},\n\n\t\t\tsetWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){\n\t\t\t\twidthCalcMode = widthCalculationMethod;\n\t\t\t\tcheckWidthMode();\n\t\t\t},\n\n\t\t\tsetTargetOrigin: function setTargetOriginF(targetOrigin){\n\t\t\t\tlog('Set targetOrigin: '+targetOrigin);\n\t\t\t\ttargetOriginDefault = targetOrigin;\n\t\t\t},\n\n\t\t\tsize: function sizeF(customHeight, customWidth){\n\t\t\t\tvar valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');\n\t\t\t\t//lockTrigger();\n\t\t\t\tsendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction initInterval(){\n\t\tif ( 0 !== interval ){\n\t\t\tlog('setInterval: '+interval+'ms');\n\t\t\tintervalTimer = setInterval(function(){\n\t\t\t\tsendSize('interval','setInterval: '+interval);\n\t\t\t},Math.abs(interval));\n\t\t}\n\t}\n\n\t/* istanbul ignore next */ //Not testable in PhantomJS\n\tfunction setupBodyMutationObserver(){\n\t\tfunction addImageLoadListners(mutation) {\n\t\t\tfunction addImageLoadListener(element){\n\t\t\t\tif (false === element.complete) {\n\t\t\t\t\tlog('Attach listeners to ' + element.src);\n\t\t\t\t\telement.addEventListener('load', imageLoaded, false);\n\t\t\t\t\telement.addEventListener('error', imageError, false);\n\t\t\t\t\telements.push(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mutation.type === 'attributes' && mutation.attributeName === 'src'){\n\t\t\t\taddImageLoadListener(mutation.target);\n\t\t\t} else if (mutation.type === 'childList'){\n\t\t\t\tArray.prototype.forEach.call(\n\t\t\t\t\tmutation.target.querySelectorAll('img'),\n\t\t\t\t\taddImageLoadListener\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfunction removeFromArray(element){\n\t\t\telements.splice(elements.indexOf(element),1);\n\t\t}\n\n\t\tfunction removeImageLoadListener(element){\n\t\t\tlog('Remove listeners from ' + element.src);\n\t\t\telement.removeEventListener('load', imageLoaded, false);\n\t\t\telement.removeEventListener('error', imageError, false);\n\t\t\tremoveFromArray(element);\n\t\t}\n\n\t\tfunction imageEventTriggered(event,type,typeDesc){\n\t\t\tremoveImageLoadListener(event.target);\n\t\t\tsendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);\n\t\t}\n\n\t\tfunction imageLoaded(event) {\n\t\t\timageEventTriggered(event,'imageLoad','Image loaded');\n\t\t}\n\n\t\tfunction imageError(event) {\n\t\t\timageEventTriggered(event,'imageLoadFailed','Image load failed');\n\t\t}\n\n\t\tfunction mutationObserved(mutations) {\n\t\t\tsendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);\n\n\t\t\t//Deal with WebKit asyncing image loading when tags are injected into the page\n\t\t\tmutations.forEach(addImageLoadListners);\n\t\t}\n\n\t\tfunction createMutationObserver(){\n\t\t\tvar\n\t\t\t\ttarget = document.querySelector('body'),\n\n\t\t\t\tconfig = {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tattributeOldValue : false,\n\t\t\t\t\tcharacterData : true,\n\t\t\t\t\tcharacterDataOldValue : false,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tsubtree : true\n\t\t\t\t};\n\n\t\t\tobserver = new MutationObserver(mutationObserved);\n\n\t\t\tlog('Create body MutationObserver');\n\t\t\tobserver.observe(target, config);\n\n\t\t\treturn observer;\n\t\t}\n\n\t\tvar\n\t\t\telements = [],\n\t\t\tMutationObserver = window.MutationObserver || window.WebKitMutationObserver,\n\t\t\tobserver = createMutationObserver();\n\n\t\treturn {\n\t\t\tdisconnect: function (){\n\t\t\t\tif ('disconnect' in observer){\n\t\t\t\t\tlog('Disconnect body MutationObserver');\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\telements.forEach(removeImageLoadListener);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction setupMutationObserver(){\n\t\tvar\tforceIntervalTimer = 0 > interval;\n\n\t\t/* istanbul ignore if */ // Not testable in PhantomJS\n\t\tif (window.MutationObserver || window.WebKitMutationObserver){\n\t\t\tif (forceIntervalTimer) {\n\t\t\t\tinitInterval();\n\t\t\t} else {\n\t\t\t\tbodyObserver = setupBodyMutationObserver();\n\t\t\t}\n\t\t} else {\n\t\t\tlog('MutationObserver not supported in this browser!');\n\t\t\tinitInterval();\n\t\t}\n\t}\n\n\n\t// document.documentElement.offsetHeight is not reliable, so\n\t// we have to jump through hoops to get a better value.\n\tfunction getComputedStyle(prop,el) {\n\t\t/* istanbul ignore next */ //Not testable in PhantomJS\n\t\tfunction convertUnitsToPxForIE8(value) {\n\t\t\tvar PIXEL = /^\\d+(px)?$/i;\n\n\t\t\tif (PIXEL.test(value)) {\n\t\t\t\treturn parseInt(value,base);\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\tstyle = el.style.left,\n\t\t\t\truntimeStyle = el.runtimeStyle.left;\n\n\t\t\tel.runtimeStyle.left = el.currentStyle.left;\n\t\t\tel.style.left = value || 0;\n\t\t\tvalue = el.style.pixelLeft;\n\t\t\tel.style.left = style;\n\t\t\tel.runtimeStyle.left = runtimeStyle;\n\n\t\t\treturn value;\n\t\t}\n\n\t\tvar retVal = 0;\n\t\tel = el || document.body;\n\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {\n\t\t\tretVal = document.defaultView.getComputedStyle(el, null);\n\t\t\tretVal = (null !== retVal) ? retVal[prop] : 0;\n\t\t} else {//IE8\n\t\t\tretVal = convertUnitsToPxForIE8(el.currentStyle[prop]);\n\t\t}\n\n\t\treturn parseInt(retVal,base);\n\t}\n\n\tfunction chkEventThottle(timer){\n\t\tif(timer > throttledTimer/2){\n\t\t\tthrottledTimer = 2*timer;\n\t\t\tlog('Event throttle increased to ' + throttledTimer + 'ms');\n\t\t}\n\t}\n\n\t//Idea from https://github.com/guardian/iframe-messenger\n\tfunction getMaxElement(side,elements) {\n\t\tvar\n\t\t\telementsLength = elements.length,\n\t\t\telVal = 0,\n\t\t\tmaxVal = 0,\n\t\t\tSide = capitalizeFirstLetter(side),\n\t\t\ttimer = getNow();\n\n\t\tfor (var i = 0; i < elementsLength; i++) {\n\t\t\telVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);\n\t\t\tif (elVal > maxVal) {\n\t\t\t\tmaxVal = elVal;\n\t\t\t}\n\t\t}\n\n\t\ttimer = getNow() - timer;\n\n\t\tlog('Parsed '+elementsLength+' HTML elements');\n\t\tlog('Element position calculated in ' + timer + 'ms');\n\n\t\tchkEventThottle(timer);\n\n\t\treturn maxVal;\n\t}\n\n\tfunction getAllMeasurements(dimention){\n\t\treturn [\n\t\t\tdimention.bodyOffset(),\n\t\t\tdimention.bodyScroll(),\n\t\t\tdimention.documentElementOffset(),\n\t\t\tdimention.documentElementScroll()\n\t\t];\n\t}\n\n\tfunction getTaggedElements(side,tag){\n\t\tfunction noTaggedElementsFound(){\n\t\t\twarn('No tagged elements ('+tag+') found on page');\n\t\t\treturn height; //current height\n\t\t}\n\n\t\tvar elements = document.querySelectorAll('['+tag+']');\n\n\t\treturn 0 === elements.length ? noTaggedElementsFound() : getMaxElement(side,elements);\n\t}\n\n\tfunction getAllElements(){\n\t\treturn document.querySelectorAll('body *');\n\t}\n\n\tvar\n\t\tgetHeight = {\n\t\t\tbodyOffset: function getBodyOffsetHeight(){\n\t\t\t\treturn document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');\n\t\t\t},\n\n\t\t\toffset: function(){\n\t\t\t\treturn getHeight.bodyOffset(); //Backwards compatability\n\t\t\t},\n\n\t\t\tbodyScroll: function getBodyScrollHeight(){\n\t\t\t\treturn document.body.scrollHeight;\n\t\t\t},\n\n\t\t\tcustom: function getCustomWidth(){\n\t\t\t\treturn customCalcMethods.height();\n\t\t\t},\n\n\t\t\tdocumentElementOffset: function getDEOffsetHeight(){\n\t\t\t\treturn document.documentElement.offsetHeight;\n\t\t\t},\n\n\t\t\tdocumentElementScroll: function getDEScrollHeight(){\n\t\t\t\treturn document.documentElement.scrollHeight;\n\t\t\t},\n\n\t\t\tmax: function getMaxHeight(){\n\t\t\t\treturn Math.max.apply(null,getAllMeasurements(getHeight));\n\t\t\t},\n\n\t\t\tmin: function getMinHeight(){\n\t\t\t\treturn Math.min.apply(null,getAllMeasurements(getHeight));\n\t\t\t},\n\n\t\t\tgrow: function growHeight(){\n\t\t\t\treturn getHeight.max(); //Run max without the forced downsizing\n\t\t\t},\n\n\t\t\tlowestElement: function getBestHeight(){\n\t\t\t\treturn Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));\n\t\t\t},\n\n\t\t\ttaggedElement: function getTaggedElementsHeight(){\n\t\t\t\treturn getTaggedElements('bottom','data-iframe-height');\n\t\t\t}\n\t\t},\n\n\t\tgetWidth = {\n\t\t\tbodyScroll: function getBodyScrollWidth(){\n\t\t\t\treturn document.body.scrollWidth;\n\t\t\t},\n\n\t\t\tbodyOffset: function getBodyOffsetWidth(){\n\t\t\t\treturn document.body.offsetWidth;\n\t\t\t},\n\n\t\t\tcustom: function getCustomWidth(){\n\t\t\t\treturn customCalcMethods.width();\n\t\t\t},\n\n\t\t\tdocumentElementScroll: function getDEScrollWidth(){\n\t\t\t\treturn document.documentElement.scrollWidth;\n\t\t\t},\n\n\t\t\tdocumentElementOffset: function getDEOffsetWidth(){\n\t\t\t\treturn document.documentElement.offsetWidth;\n\t\t\t},\n\n\t\t\tscroll: function getMaxWidth(){\n\t\t\t\treturn Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());\n\t\t\t},\n\n\t\t\tmax: function getMaxWidth(){\n\t\t\t\treturn Math.max.apply(null,getAllMeasurements(getWidth));\n\t\t\t},\n\n\t\t\tmin: function getMinWidth(){\n\t\t\t\treturn Math.min.apply(null,getAllMeasurements(getWidth));\n\t\t\t},\n\n\t\t\trightMostElement: function rightMostElement(){\n\t\t\t\treturn getMaxElement('right', getAllElements());\n\t\t\t},\n\n\t\t\ttaggedElement: function getTaggedElementsWidth(){\n\t\t\t\treturn getTaggedElements('right', 'data-iframe-width');\n\t\t\t}\n\t\t};\n\n\n\tfunction sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){\n\n\t\tfunction resizeIFrame(){\n\t\t\theight = currentHeight;\n\t\t\twidth = currentWidth;\n\n\t\t\tsendMsg(height,width,triggerEvent);\n\t\t}\n\n\t\tfunction isSizeChangeDetected(){\n\t\t\tfunction checkTolarance(a,b){\n\t\t\t\tvar retVal = Math.abs(a-b) <= tolerance;\n\t\t\t\treturn !retVal;\n\t\t\t}\n\n\t\t\tcurrentHeight = (undefined !== customHeight) ? customHeight : getHeight[heightCalcMode]();\n\t\t\tcurrentWidth = (undefined !== customWidth ) ? customWidth : getWidth[widthCalcMode]();\n\n\t\t\treturn\tcheckTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));\n\t\t}\n\n\t\tfunction isForceResizableEvent(){\n\t\t\treturn !(triggerEvent in {'init':1,'interval':1,'size':1});\n\t\t}\n\n\t\tfunction isForceResizableCalcMode(){\n\t\t\treturn (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);\n\t\t}\n\n\t\tfunction logIgnored(){\n\t\t\tlog('No change in size detected');\n\t\t}\n\n\t\tfunction checkDownSizing(){\n\t\t\tif (isForceResizableEvent() && isForceResizableCalcMode()){\n\t\t\t\tresetIFrame(triggerEventDesc);\n\t\t\t} else if (!(triggerEvent in {'interval':1})){\n\t\t\t\tlogIgnored();\n\t\t\t}\n\t\t}\n\n\t\tvar\tcurrentHeight,currentWidth;\n\n\t\tif (isSizeChangeDetected() || 'init' === triggerEvent){\n\t\t\tlockTrigger();\n\t\t\tresizeIFrame();\n\t\t} else {\n\t\t\tcheckDownSizing();\n\t\t}\n\t}\n\n\tvar sizeIFrameThrottled = throttle(sizeIFrame);\n\n\tfunction sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){\n\t\tfunction recordTrigger(){\n\t\t\tif (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){\n\t\t\t\tlog( 'Trigger event: ' + triggerEventDesc );\n\t\t\t}\n\t\t}\n\n\t\tfunction isDoubleFiredEvent(){\n\t\t\treturn triggerLocked && (triggerEvent in doubleEventList);\n\t\t}\n\n\t\tif (!isDoubleFiredEvent()){\n\t\t\trecordTrigger();\n\t\t\tsizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);\n\t\t} else {\n\t\t\tlog('Trigger event cancelled: '+triggerEvent);\n\t\t}\n\t}\n\n\tfunction lockTrigger(){\n\t\tif (!triggerLocked){\n\t\t\ttriggerLocked = true;\n\t\t\tlog('Trigger event lock on');\n\t\t}\n\t\tclearTimeout(triggerLockedTimer);\n\t\ttriggerLockedTimer = setTimeout(function(){\n\t\t\ttriggerLocked = false;\n\t\t\tlog('Trigger event lock off');\n\t\t\tlog('--');\n\t\t},eventCancelTimer);\n\t}\n\n\tfunction triggerReset(triggerEvent){\n\t\theight = getHeight[heightCalcMode]();\n\t\twidth = getWidth[widthCalcMode]();\n\n\t\tsendMsg(height,width,triggerEvent);\n\t}\n\n\tfunction resetIFrame(triggerEventDesc){\n\t\tvar hcm = heightCalcMode;\n\t\theightCalcMode = heightCalcModeDefault;\n\n\t\tlog('Reset trigger event: ' + triggerEventDesc);\n\t\tlockTrigger();\n\t\ttriggerReset('reset');\n\n\t\theightCalcMode = hcm;\n\t}\n\n\tfunction sendMsg(height,width,triggerEvent,msg,targetOrigin){\n\t\tfunction setTargetOrigin(){\n\t\t\tif (undefined === targetOrigin){\n\t\t\t\ttargetOrigin = targetOriginDefault;\n\t\t\t} else {\n\t\t\t\tlog('Message targetOrigin: '+targetOrigin);\n\t\t\t}\n\t\t}\n\n\t\tfunction sendToParent(){\n\t\t\tvar\n\t\t\t\tsize = height + ':' + width,\n\t\t\t\tmessage = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');\n\n\t\t\tlog('Sending message to host page (' + message + ')');\n\t\t\ttarget.postMessage( msgID + message, targetOrigin);\n\t\t}\n\n\t\tif(true === sendPermit){\n\t\t\tsetTargetOrigin();\n\t\t\tsendToParent();\n\t\t}\n\t}\n\n\tfunction receiver(event) {\n\t\tfunction isMessageForUs(){\n\t\t\treturn msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages\n\t\t}\n\n\t\tfunction initFromParent(){\n\t\t\tfunction fireInit(){\n\t\t\t\tinitMsg = event.data;\n\t\t\t\ttarget = event.source;\n\n\t\t\t\tinit();\n\t\t\t\tfirstRun = false;\n\t\t\t\tsetTimeout(function(){ initLock = false;},eventCancelTimer);\n\t\t\t}\n\n\t\t\tif (document.body){\n\t\t\t\tfireInit();\n\t\t\t} else {\n\t\t\t\tlog('Waiting for page ready');\n\t\t\t\taddEventListener(window,'readystatechange',initFromParent);\n\t\t\t}\n\t\t}\n\n\t\tfunction resetFromParent(){\n\t\t\tif (!initLock){\n\t\t\t\tlog('Page size reset by host page');\n\t\t\t\ttriggerReset('resetPage');\n\t\t\t} else {\n\t\t\t\tlog('Page reset ignored by init');\n\t\t\t}\n\t\t}\n\n\t\tfunction resizeFromParent(){\n\t\t\tsendSize('resizeParent','Parent window requested size check');\n\t\t}\n\n\t\tfunction moveToAnchor(){\n\t\t\tvar anchor = getData();\n\t\t\tinPageLinks.findTarget(anchor);\n\t\t}\n\n\t\tfunction getMessageType(){\n\t\t\treturn event.data.split(']')[1].split(':')[0];\n\t\t}\n\n\t\tfunction getData(){\n\t\t\treturn event.data.substr(event.data.indexOf(':')+1);\n\t\t}\n\n\t\tfunction isMiddleTier(){\n\t\t\treturn ('iFrameResize' in window);\n\t\t}\n\n\t\tfunction messageFromParent(){\n\t\t\tvar msgBody = getData();\n\n\t\t\tlog('MessageCallback called from parent: ' + msgBody );\n\t\t\tmessageCallback(JSON.parse(msgBody));\n\t\t\tlog(' --');\n\t\t}\n\n\t\tfunction pageInfoFromParent(){\n\t\t\tvar msgBody = getData();\n\t\t\tlog('PageInfoFromParent called from parent: ' + msgBody );\n\t\t\tpageInfoCallback(JSON.parse(msgBody));\n\t\t\tlog(' --');\n\t\t}\n\n\t\tfunction isInitMsg(){\n\t\t\t//Test if this message is from a child below us. This is an ugly test, however, updating\n\t\t\t//the message format would break backwards compatibity.\n\t\t\treturn event.data.split(':')[2] in {'true':1,'false':1};\n\t\t}\n\n\t\tfunction callFromParent(){\n\t\t\tswitch (getMessageType()){\n\t\t\tcase 'reset':\n\t\t\t\tresetFromParent();\n\t\t\t\tbreak;\n\t\t\tcase 'resize':\n\t\t\t\tresizeFromParent();\n\t\t\t\tbreak;\n\t\t\tcase 'inPageLink':\n\t\t\tcase 'moveToAnchor':\n\t\t\t\tmoveToAnchor();\n\t\t\t\tbreak;\n\t\t\tcase 'message':\n\t\t\t\tmessageFromParent();\n\t\t\t\tbreak;\n\t\t\tcase 'pageInfo':\n\t\t\t\tpageInfoFromParent();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (!isMiddleTier() && !isInitMsg()){\n\t\t\t\t\twarn('Unexpected message ('+event.data+')');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction processMessage(){\n\t\t\tif (false === firstRun) {\n\t\t\t\tcallFromParent();\n\t\t\t} else if (isInitMsg()) {\n\t\t\t\tinitFromParent();\n\t\t\t} else {\n\t\t\t\tlog('Ignored message of type \"' + getMessageType() + '\". Received before initialization.');\n\t\t\t}\n\t\t}\n\n\t\tif (isMessageForUs()){\n\t\t\tprocessMessage();\n\t\t}\n\t}\n\n\t//Normally the parent kicks things off when it detects the iFrame has loaded.\n\t//If this script is async-loaded, then tell parent page to retry init.\n\tfunction chkLateLoaded(){\n\t\tif('loading' !== document.readyState){\n\t\t\twindow.parent.postMessage('[iFrameResizerChild]Ready','*');\n\t\t}\n\t}\n\n\taddEventListener(window, 'message', receiver);\n\tchkLateLoaded();\n\n\t\n\n})(window || {});\n"]} \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js
new file mode 100644
index 0000000000..5cfd4e276b
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js
@@ -0,0 +1,10 @@
+/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v3.5.5 - 2016-06-16
+ * Desc: Include this file in any page being loaded into an iframe
+ * to force the iframe to resize to the content size.
+ * Requires: iframeResizer.min.js on host page.
+ * Copyright: (c) 2016 David J. Bradshaw - dave@bradshaw.net
+ * License: MIT
+ */
+
+!function(a,b){"use strict";function c(b,c,d){"addEventListener"in a?b.addEventListener(c,d,!1):"attachEvent"in a&&b.attachEvent("on"+c,d)}function d(b,c,d){"removeEventListener"in a?b.removeEventListener(c,d,!1):"detachEvent"in a&&b.detachEvent("on"+c,d)}function e(a){return a.charAt(0).toUpperCase()+a.slice(1)}function f(a){var b,c,d,e=null,f=0,g=function(){f=Ha(),e=null,d=a.apply(b,c),e||(b=c=null)};return function(){var h=Ha();f||(f=h);var i=ya-(h-f);return b=this,c=arguments,0>=i||i>ya?(e&&(clearTimeout(e),e=null),f=h,d=a.apply(b,c),e||(b=c=null)):e||(e=setTimeout(g,i)),d}}function g(a){return na+"["+pa+"] "+a}function h(b){ma&&"object"==typeof a.console&&console.log(g(b))}function i(b){"object"==typeof a.console&&console.warn(g(b))}function j(){k(),h("Initialising iFrame ("+location.href+")"),l(),o(),n("background",X),n("padding",_),B(),t(),u(),p(),D(),v(),ja=C(),O("init","Init message from host page"),Ea()}function k(){function a(a){return"true"===a?!0:!1}var c=ia.substr(oa).split(":");pa=c[0],Y=b!==c[1]?Number(c[1]):Y,aa=b!==c[2]?a(c[2]):aa,ma=b!==c[3]?a(c[3]):ma,ka=b!==c[4]?Number(c[4]):ka,V=b!==c[6]?a(c[6]):V,Z=c[7],ga=b!==c[8]?c[8]:ga,X=c[9],_=c[10],va=b!==c[11]?Number(c[11]):va,ja.enable=b!==c[12]?a(c[12]):!1,ra=b!==c[13]?c[13]:ra,Ba=b!==c[14]?c[14]:Ba}function l(){function b(){var b=a.iFrameResizer;h("Reading data from page: "+JSON.stringify(b)),Da="messageCallback"in b?b.messageCallback:Da,Ea="readyCallback"in b?b.readyCallback:Ea,ua="targetOrigin"in b?b.targetOrigin:ua,ga="heightCalculationMethod"in b?b.heightCalculationMethod:ga,Ba="widthCalculationMethod"in b?b.widthCalculationMethod:Ba}function c(a,b){return"function"==typeof a&&(h("Setup custom "+b+"CalcMethod"),Ga[b]=a,a="custom"),a}"iFrameResizer"in a&&Object===a.iFrameResizer.constructor&&(b(),ga=c(ga,"height"),Ba=c(Ba,"width")),h("TargetOrigin for parent set to: "+ua)}function m(a,b){return-1!==b.indexOf("-")&&(i("Negative CSS value ignored for "+a),b=""),b}function n(a,c){b!==c&&""!==c&&"null"!==c&&(document.body.style[a]=c,h("Body "+a+' set to "'+c+'"'))}function o(){b===Z&&(Z=Y+"px"),n("margin",m("margin",Z))}function p(){document.documentElement.style.height="",document.body.style.height="",h('HTML & body height set to "auto"')}function q(b){function f(){O(b.eventName,b.eventType)}var g={add:function(b){c(a,b,f)},remove:function(b){d(a,b,f)}};b.eventNames&&Array.prototype.map?(b.eventName=b.eventNames[0],b.eventNames.map(g[b.method])):g[b.method](b.eventName),h(e(b.method)+" event listener: "+b.eventType)}function r(a){q({method:a,eventType:"Animation Start",eventNames:["animationstart","webkitAnimationStart"]}),q({method:a,eventType:"Animation Iteration",eventNames:["animationiteration","webkitAnimationIteration"]}),q({method:a,eventType:"Animation End",eventNames:["animationend","webkitAnimationEnd"]}),q({method:a,eventType:"Input",eventName:"input"}),q({method:a,eventType:"Mouse Up",eventName:"mouseup"}),q({method:a,eventType:"Mouse Down",eventName:"mousedown"}),q({method:a,eventType:"Orientation Change",eventName:"orientationchange"}),q({method:a,eventType:"Print",eventName:["afterprint","beforeprint"]}),q({method:a,eventType:"Ready State Change",eventName:"readystatechange"}),q({method:a,eventType:"Touch Start",eventName:"touchstart"}),q({method:a,eventType:"Touch End",eventName:"touchend"}),q({method:a,eventType:"Touch Cancel",eventName:"touchcancel"}),q({method:a,eventType:"Transition Start",eventNames:["transitionstart","webkitTransitionStart","MSTransitionStart","oTransitionStart","otransitionstart"]}),q({method:a,eventType:"Transition Iteration",eventNames:["transitioniteration","webkitTransitionIteration","MSTransitionIteration","oTransitionIteration","otransitioniteration"]}),q({method:a,eventType:"Transition End",eventNames:["transitionend","webkitTransitionEnd","MSTransitionEnd","oTransitionEnd","otransitionend"]}),"child"===ra&&q({method:a,eventType:"IFrame Resized",eventName:"resize"})}function s(a,b,c,d){return b!==a&&(a in c||(i(a+" is not a valid option for "+d+"CalculationMethod."),a=b),h(d+' calculation method set to "'+a+'"')),a}function t(){ga=s(ga,fa,Ia,"height")}function u(){Ba=s(Ba,Aa,Ja,"width")}function v(){!0===V?(r("add"),G()):h("Auto Resize disabled")}function w(){h("Disable outgoing messages"),sa=!1}function x(){h("Remove event listener: Message"),d(a,"message",T)}function y(){null!==$&&$.disconnect()}function z(){r("remove"),y(),clearInterval(la)}function A(){w(),x(),!0===V&&z()}function B(){var a=document.createElement("div");a.style.clear="both",a.style.display="block",document.body.appendChild(a)}function C(){function d(){return{x:a.pageXOffset!==b?a.pageXOffset:document.documentElement.scrollLeft,y:a.pageYOffset!==b?a.pageYOffset:document.documentElement.scrollTop}}function e(a){var b=a.getBoundingClientRect(),c=d();return{x:parseInt(b.left,10)+parseInt(c.x,10),y:parseInt(b.top,10)+parseInt(c.y,10)}}function f(a){function c(a){var b=e(a);h("Moving to in page link (#"+d+") at x: "+b.x+" y: "+b.y),S(b.y,b.x,"scrollToOffset")}var d=a.split("#")[1]||a,f=decodeURIComponent(d),g=document.getElementById(f)||document.getElementsByName(f)[0];b!==g?c(g):(h("In page link (#"+d+") not found in iFrame, so sending to parent"),S(0,0,"inPageLink","#"+d))}function g(){""!==location.hash&&"#"!==location.hash&&f(location.href)}function j(){function a(a){function b(a){a.preventDefault(),f(this.getAttribute("href"))}"#"!==a.getAttribute("href")&&c(a,"click",b)}Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'),a)}function k(){c(a,"hashchange",g)}function l(){setTimeout(g,ca)}function m(){Array.prototype.forEach&&document.querySelectorAll?(h("Setting up location.hash handlers"),j(),k(),l()):i("In page linking not fully supported in this browser! (See README.md for IE8 workaround)")}return ja.enable?m():h("In page linking not enabled"),{findTarget:f}}function D(){h("Enable public methods"),Ca.parentIFrame={autoResize:function(a){return!0===a&&!1===V?(V=!0,v()):!1===a&&!0===V&&(V=!1,z()),V},close:function(){S(0,0,"close"),A()},getId:function(){return pa},getPageInfo:function(a){"function"==typeof a?(Fa=a,S(0,0,"pageInfo")):(Fa=function(){},S(0,0,"pageInfoStop"))},moveToAnchor:function(a){ja.findTarget(a)},reset:function(){R("parentIFrame.reset")},scrollTo:function(a,b){S(b,a,"scrollTo")},scrollToOffset:function(a,b){S(b,a,"scrollToOffset")},sendMessage:function(a,b){S(0,0,"message",JSON.stringify(a),b)},setHeightCalculationMethod:function(a){ga=a,t()},setWidthCalculationMethod:function(a){Ba=a,u()},setTargetOrigin:function(a){h("Set targetOrigin: "+a),ua=a},size:function(a,b){var c=""+(a?a:"")+(b?","+b:"");O("size","parentIFrame.size("+c+")",a,b)}}}function E(){0!==ka&&(h("setInterval: "+ka+"ms"),la=setInterval(function(){O("interval","setInterval: "+ka)},Math.abs(ka)))}function F(){function c(a){function b(a){!1===a.complete&&(h("Attach listeners to "+a.src),a.addEventListener("load",g,!1),a.addEventListener("error",i,!1),l.push(a))}"attributes"===a.type&&"src"===a.attributeName?b(a.target):"childList"===a.type&&Array.prototype.forEach.call(a.target.querySelectorAll("img"),b)}function d(a){l.splice(l.indexOf(a),1)}function e(a){h("Remove listeners from "+a.src),a.removeEventListener("load",g,!1),a.removeEventListener("error",i,!1),d(a)}function f(a,c,d){e(a.target),O(c,d+": "+a.target.src,b,b)}function g(a){f(a,"imageLoad","Image loaded")}function i(a){f(a,"imageLoadFailed","Image load failed")}function j(a){O("mutationObserver","mutationObserver: "+a[0].target+" "+a[0].type),a.forEach(c)}function k(){var a=document.querySelector("body"),b={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0};return n=new m(j),h("Create body MutationObserver"),n.observe(a,b),n}var l=[],m=a.MutationObserver||a.WebKitMutationObserver,n=k();return{disconnect:function(){"disconnect"in n&&(h("Disconnect body MutationObserver"),n.disconnect(),l.forEach(e))}}}function G(){var b=0>ka;a.MutationObserver||a.WebKitMutationObserver?b?E():$=F():(h("MutationObserver not supported in this browser!"),E())}function H(a,b){function c(a){var c=/^\d+(px)?$/i;if(c.test(a))return parseInt(a,W);var d=b.style.left,e=b.runtimeStyle.left;return b.runtimeStyle.left=b.currentStyle.left,b.style.left=a||0,a=b.style.pixelLeft,b.style.left=d,b.runtimeStyle.left=e,a}var d=0;return b=b||document.body,"defaultView"in document&&"getComputedStyle"in document.defaultView?(d=document.defaultView.getComputedStyle(b,null),d=null!==d?d[a]:0):d=c(b.currentStyle[a]),parseInt(d,W)}function I(a){a>ya/2&&(ya=2*a,h("Event throttle increased to "+ya+"ms"))}function J(a,b){for(var c=b.length,d=0,f=0,g=e(a),i=Ha(),j=0;c>j;j++)d=b[j].getBoundingClientRect()[a]+H("margin"+g,b[j]),d>f&&(f=d);return i=Ha()-i,h("Parsed "+c+" HTML elements"),h("Element position calculated in "+i+"ms"),I(i),f}function K(a){return[a.bodyOffset(),a.bodyScroll(),a.documentElementOffset(),a.documentElementScroll()]}function L(a,b){function c(){return i("No tagged elements ("+b+") found on page"),ea}var d=document.querySelectorAll("["+b+"]");return 0===d.length?c():J(a,d)}function M(){return document.querySelectorAll("body *")}function N(a,c,d,e){function f(){ea=m,za=n,S(ea,za,a)}function g(){function a(a,b){var c=Math.abs(a-b)<=va;return!c}return m=b!==d?d:Ia[ga](),n=b!==e?e:Ja[Ba](),a(ea,m)||aa&&a(za,n)}function i(){return!(a in{init:1,interval:1,size:1})}function j(){return ga in qa||aa&&Ba in qa}function k(){h("No change in size detected")}function l(){i()&&j()?R(c):a in{interval:1}||k()}var m,n;g()||"init"===a?(P(),f()):l()}function O(a,b,c,d){function e(){a in{reset:1,resetPage:1,init:1}||h("Trigger event: "+b)}function f(){return wa&&a in ba}f()?h("Trigger event cancelled: "+a):(e(),Ka(a,b,c,d))}function P(){wa||(wa=!0,h("Trigger event lock on")),clearTimeout(xa),xa=setTimeout(function(){wa=!1,h("Trigger event lock off"),h("--")},ca)}function Q(a){ea=Ia[ga](),za=Ja[Ba](),S(ea,za,a)}function R(a){var b=ga;ga=fa,h("Reset trigger event: "+a),P(),Q("reset"),ga=b}function S(a,c,d,e,f){function g(){b===f?f=ua:h("Message targetOrigin: "+f)}function i(){var g=a+":"+c,i=pa+":"+g+":"+d+(b!==e?":"+e:"");h("Sending message to host page ("+i+")"),ta.postMessage(na+i,f)}!0===sa&&(g(),i())}function T(b){function d(){return na===(""+b.data).substr(0,oa)}function e(){function d(){ia=b.data,ta=b.source,j(),da=!1,setTimeout(function(){ha=!1},ca)}document.body?d():(h("Waiting for page ready"),c(a,"readystatechange",e))}function f(){ha?h("Page reset ignored by init"):(h("Page size reset by host page"),Q("resetPage"))}function g(){O("resizeParent","Parent window requested size check")}function k(){var a=m();ja.findTarget(a)}function l(){return b.data.split("]")[1].split(":")[0]}function m(){return b.data.substr(b.data.indexOf(":")+1)}function n(){return"iFrameResize"in a}function o(){var a=m();h("MessageCallback called from parent: "+a),Da(JSON.parse(a)),h(" --")}function p(){var a=m();h("PageInfoFromParent called from parent: "+a),Fa(JSON.parse(a)),h(" --")}function q(){return b.data.split(":")[2]in{"true":1,"false":1}}function r(){switch(l()){case"reset":f();break;case"resize":g();break;case"inPageLink":case"moveToAnchor":k();break;case"message":o();break;case"pageInfo":p();break;default:n()||q()||i("Unexpected message ("+b.data+")")}}function s(){!1===da?r():q()?e():h('Ignored message of type "'+l()+'". Received before initialization.')}d()&&s()}function U(){"loading"!==document.readyState&&a.parent.postMessage("[iFrameResizerChild]Ready","*")}var V=!0,W=10,X="",Y=0,Z="",$=null,_="",aa=!1,ba={resize:1,click:1},ca=128,da=!0,ea=1,fa="bodyOffset",ga=fa,ha=!0,ia="",ja={},ka=32,la=null,ma=!1,na="[iFrameSizer]",oa=na.length,pa="",qa={max:1,min:1,bodyScroll:1,documentElementScroll:1},ra="child",sa=!0,ta=a.parent,ua="*",va=0,wa=!1,xa=null,ya=16,za=1,Aa="scroll",Ba=Aa,Ca=a,Da=function(){i("MessageCallback function not defined")},Ea=function(){},Fa=function(){},Ga={height:function(){return i("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return i("Custom width calculation function not defined"),document.body.scrollWidth}},Ha=Date.now||function(){return(new Date).getTime()},Ia={bodyOffset:function(){return document.body.offsetHeight+H("marginTop")+H("marginBottom")},offset:function(){return Ia.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return Ga.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,K(Ia))},min:function(){return Math.min.apply(null,K(Ia))},grow:function(){return Ia.max()},lowestElement:function(){return Math.max(Ia.bodyOffset(),J("bottom",M()))},taggedElement:function(){return L("bottom","data-iframe-height")}},Ja={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return Ga.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max(Ja.bodyScroll(),Ja.documentElementScroll())},max:function(){return Math.max.apply(null,K(Ja))},min:function(){return Math.min.apply(null,K(Ja))},rightMostElement:function(){return J("right",M())},taggedElement:function(){return L("right","data-iframe-width")}},Ka=f(N);c(a,"message",T),U()}(window||{});
+//# sourceMappingURL=iframeResizer.contentWindow.map \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.js b/libs/bower_components/iframe-resizer/js/iframeResizer.js
new file mode 100644
index 0000000000..897a632ce4
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.js
@@ -0,0 +1,1002 @@
+/*
+ * File: iframeResizer.js
+ * Desc: Force iframes to size to content.
+ * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Reed Dadoune - reed@dadoune.com
+ */
+
+
+;(function(window) {
+ 'use strict';
+
+ var
+ count = 0,
+ logEnabled = false,
+ hiddenCheckEnabled = false,
+ msgHeader = 'message',
+ msgHeaderLen = msgHeader.length,
+ msgId = '[iFrameSizer]', //Must match iframe msg ID
+ msgIdLen = msgId.length,
+ pagePosition = null,
+ requestAnimationFrame = window.requestAnimationFrame,
+ resetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
+ settings = {},
+ timer = null,
+ logId = 'Host Page',
+
+ defaults = {
+ autoResize : true,
+ bodyBackground : null,
+ bodyMargin : null,
+ bodyMarginV1 : 8,
+ bodyPadding : null,
+ checkOrigin : true,
+ inPageLinks : false,
+ enablePublicMethods : true,
+ heightCalculationMethod : 'bodyOffset',
+ id : 'iFrameResizer',
+ interval : 32,
+ log : false,
+ maxHeight : Infinity,
+ maxWidth : Infinity,
+ minHeight : 0,
+ minWidth : 0,
+ resizeFrom : 'parent',
+ scrolling : false,
+ sizeHeight : true,
+ sizeWidth : false,
+ tolerance : 0,
+ widthCalculationMethod : 'scroll',
+ closedCallback : function(){},
+ initCallback : function(){},
+ messageCallback : function(){warn('MessageCallback function not defined');},
+ resizedCallback : function(){},
+ scrollCallback : function(){return true;}
+ };
+
+ function addEventListener(obj,evt,func){
+ /* istanbul ignore else */ // Not testable in PhantonJS
+ if ('addEventListener' in window){
+ obj.addEventListener(evt,func, false);
+ } else if ('attachEvent' in window){//IE
+ obj.attachEvent('on'+evt,func);
+ }
+ }
+
+ function removeEventListener(el,evt,func){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if ('removeEventListener' in window){
+ el.removeEventListener(evt,func, false);
+ } else if ('detachEvent' in window){ //IE
+ el.detachEvent('on'+evt,func);
+ }
+ }
+
+ function setupRequestAnimationFrame(){
+ var
+ vendors = ['moz', 'webkit', 'o', 'ms'],
+ x;
+
+ // Remove vendor prefixing if prefixed and break early if not
+ for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
+ requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+ }
+
+ if (!(requestAnimationFrame)){
+ log('setup','RequestAnimationFrame not supported');
+ }
+ }
+
+ function getMyID(iframeId){
+ var retStr = 'Host page: '+iframeId;
+
+ if (window.top!==window.self){
+ if (window.parentIFrame && window.parentIFrame.getId){
+ retStr = window.parentIFrame.getId()+': '+iframeId;
+ } else {
+ retStr = 'Nested host page: '+iframeId;
+ }
+ }
+
+ return retStr;
+ }
+
+ function formatLogHeader(iframeId){
+ return msgId + '[' + getMyID(iframeId) + ']';
+ }
+
+ function isLogEnabled(iframeId){
+ return settings[iframeId] ? settings[iframeId].log : logEnabled;
+ }
+
+ function log(iframeId,msg){
+ output('log',iframeId,msg,isLogEnabled(iframeId));
+ }
+
+ function info(iframeId,msg){
+ output('info',iframeId,msg,isLogEnabled(iframeId));
+ }
+
+ function warn(iframeId,msg){
+ output('warn',iframeId,msg,true);
+ }
+
+ function output(type,iframeId,msg,enabled){
+ if (true === enabled && 'object' === typeof window.console){
+ console[type](formatLogHeader(iframeId),msg);
+ }
+ }
+
+ function iFrameListener(event){
+ function resizeIFrame(){
+ function resize(){
+ setSize(messageData);
+ setPagePosition(iframeId);
+ }
+
+ ensureInRange('Height');
+ ensureInRange('Width');
+
+ syncResize(resize,messageData,'init');
+ }
+
+ function processMsg(){
+ var data = msg.substr(msgIdLen).split(':');
+
+ return {
+ iframe: settings[data[0]].iframe,
+ id: data[0],
+ height: data[1],
+ width: data[2],
+ type: data[3]
+ };
+ }
+
+ function ensureInRange(Dimension){
+ var
+ max = Number(settings[iframeId]['max' + Dimension]),
+ min = Number(settings[iframeId]['min' + Dimension]),
+ dimension = Dimension.toLowerCase(),
+ size = Number(messageData[dimension]);
+
+ log(iframeId,'Checking ' + dimension + ' is in range ' + min + '-' + max);
+
+ if (size<min) {
+ size=min;
+ log(iframeId,'Set ' + dimension + ' to min value');
+ }
+
+ if (size>max) {
+ size=max;
+ log(iframeId,'Set ' + dimension + ' to max value');
+ }
+
+ messageData[dimension] = '' + size;
+ }
+
+
+ function isMessageFromIFrame(){
+ function checkAllowedOrigin(){
+ function checkList(){
+ var
+ i = 0,
+ retCode = false;
+
+ log(iframeId,'Checking connection is from allowed list of origins: ' + checkOrigin);
+
+ for (; i < checkOrigin.length; i++) {
+ if (checkOrigin[i] === origin) {
+ retCode = true;
+ break;
+ }
+ }
+ return retCode;
+ }
+
+ function checkSingle(){
+ var remoteHost = settings[iframeId].remoteHost;
+ log(iframeId,'Checking connection is from: '+remoteHost);
+ return origin === remoteHost;
+ }
+
+ return checkOrigin.constructor === Array ? checkList() : checkSingle();
+ }
+
+ var
+ origin = event.origin,
+ checkOrigin = settings[iframeId].checkOrigin;
+
+ if (checkOrigin && (''+origin !== 'null') && !checkAllowedOrigin()) {
+ throw new Error(
+ 'Unexpected message received from: ' + origin +
+ ' for ' + messageData.iframe.id +
+ '. Message was: ' + event.data +
+ '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
+ );
+ }
+
+ return true;
+ }
+
+ function isMessageForUs(){
+ return msgId === (('' + msg).substr(0,msgIdLen)) && (msg.substr(msgIdLen).split(':')[0] in settings); //''+Protects against non-string msg
+ }
+
+ function isMessageFromMetaParent(){
+ //Test if this message is from a parent above us. This is an ugly test, however, updating
+ //the message format would break backwards compatibity.
+ var retCode = messageData.type in {'true':1,'false':1,'undefined':1};
+
+ if (retCode){
+ log(iframeId,'Ignoring init message from meta parent page');
+ }
+
+ return retCode;
+ }
+
+ function getMsgBody(offset){
+ return msg.substr(msg.indexOf(':')+msgHeaderLen+offset);
+ }
+
+ function forwardMsgFromIFrame(msgBody){
+ log(iframeId,'MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');
+ callback('messageCallback',{
+ iframe: messageData.iframe,
+ message: JSON.parse(msgBody)
+ });
+ log(iframeId,'--');
+ }
+
+ function getPageInfo(){
+ var
+ bodyPosition = document.body.getBoundingClientRect(),
+ iFramePosition = messageData.iframe.getBoundingClientRect();
+
+ return JSON.stringify({
+ iframeHeight: iFramePosition.height,
+ iframeWidth: iFramePosition.width,
+ clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
+ clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
+ offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),
+ offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),
+ scrollTop: window.pageYOffset,
+ scrollLeft: window.pageXOffset
+ });
+ }
+
+ function sendPageInfoToIframe(iframe,iframeId){
+ function debouncedTrigger(){
+ trigger(
+ 'Send Page Info',
+ 'pageInfo:' + getPageInfo(),
+ iframe,
+ iframeId
+ );
+ }
+
+ debouce(debouncedTrigger,32);
+ }
+
+
+ function startPageInfoMonitor(){
+ function setListener(type,func){
+ function sendPageInfo(){
+ if (settings[id]){
+ sendPageInfoToIframe(settings[id].iframe,id);
+ } else {
+ stop();
+ }
+ }
+
+ ['scroll','resize'].forEach(function(evt){
+ log(id, type + evt + ' listener for sendPageInfo');
+ func(window,evt,sendPageInfo);
+ });
+ }
+
+ function stop(){
+ setListener('Remove ', removeEventListener);
+ }
+
+ function start(){
+ setListener('Add ', addEventListener);
+ }
+
+ var id = iframeId; //Create locally scoped copy of iFrame ID
+
+ start();
+
+ settings[id].stopPageInfo = stop;
+ }
+
+ function stopPageInfoMonitor(){
+ if (settings[iframeId] && settings[iframeId].stopPageInfo){
+ settings[iframeId].stopPageInfo();
+ delete settings[iframeId].stopPageInfo;
+ }
+ }
+
+ function checkIFrameExists(){
+ var retBool = true;
+
+ if (null === messageData.iframe) {
+ warn(iframeId,'IFrame ('+messageData.id+') not found');
+ retBool = false;
+ }
+ return retBool;
+ }
+
+ function getElementPosition(target){
+ var iFramePosition = target.getBoundingClientRect();
+
+ getPagePosition(iframeId);
+
+ return {
+ x: Math.floor( Number(iFramePosition.left) + Number(pagePosition.x) ),
+ y: Math.floor( Number(iFramePosition.top) + Number(pagePosition.y) )
+ };
+ }
+
+ function scrollRequestFromChild(addOffset){
+ /* istanbul ignore next */ //Not testable in Karma
+ function reposition(){
+ pagePosition = newPosition;
+ scrollTo();
+ log(iframeId,'--');
+ }
+
+ function calcOffset(){
+ return {
+ x: Number(messageData.width) + offset.x,
+ y: Number(messageData.height) + offset.y
+ };
+ }
+
+ function scrollParent(){
+ if (window.parentIFrame){
+ window.parentIFrame['scrollTo'+(addOffset?'Offset':'')](newPosition.x,newPosition.y);
+ } else {
+ warn(iframeId,'Unable to scroll to requested position, window.parentIFrame not found');
+ }
+ }
+
+ var
+ offset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},
+ newPosition = calcOffset();
+
+ log(iframeId,'Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');
+
+ if(window.top!==window.self){
+ scrollParent();
+ } else {
+ reposition();
+ }
+ }
+
+ function scrollTo(){
+ if (false !== callback('scrollCallback',pagePosition)){
+ setPagePosition(iframeId);
+ } else {
+ unsetPagePosition();
+ }
+ }
+
+ function findTarget(location){
+ function jumpToTarget(){
+ var jumpPosition = getElementPosition(target);
+
+ log(iframeId,'Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+ pagePosition = {
+ x: jumpPosition.x,
+ y: jumpPosition.y
+ };
+
+ scrollTo();
+ log(iframeId,'--');
+ }
+
+ function jumpToParent(){
+ if (window.parentIFrame){
+ window.parentIFrame.moveToAnchor(hash);
+ } else {
+ log(iframeId,'In page link #'+hash+' not found and window.parentIFrame not found');
+ }
+ }
+
+ var
+ hash = location.split('#')[1] || '',
+ hashData = decodeURIComponent(hash),
+ target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+ if (target){
+ jumpToTarget();
+ } else if(window.top!==window.self){
+ jumpToParent();
+ } else {
+ log(iframeId,'In page link #'+hash+' not found');
+ }
+ }
+
+ function callback(funcName,val){
+ return chkCallback(iframeId,funcName,val);
+ }
+
+ function actionMsg(){
+
+ if(settings[iframeId].firstRun) firstRun();
+
+ switch(messageData.type){
+ case 'close':
+ closeIFrame(messageData.iframe);
+ break;
+ case 'message':
+ forwardMsgFromIFrame(getMsgBody(6));
+ break;
+ case 'scrollTo':
+ scrollRequestFromChild(false);
+ break;
+ case 'scrollToOffset':
+ scrollRequestFromChild(true);
+ break;
+ case 'pageInfo':
+ sendPageInfoToIframe(settings[iframeId].iframe,iframeId);
+ startPageInfoMonitor();
+ break;
+ case 'pageInfoStop':
+ stopPageInfoMonitor();
+ break;
+ case 'inPageLink':
+ findTarget(getMsgBody(9));
+ break;
+ case 'reset':
+ resetIFrame(messageData);
+ break;
+ case 'init':
+ resizeIFrame();
+ callback('initCallback',messageData.iframe);
+ callback('resizedCallback',messageData);
+ break;
+ default:
+ resizeIFrame();
+ callback('resizedCallback',messageData);
+ }
+ }
+
+ function hasSettings(iframeId){
+ var retBool = true;
+
+ if (!settings[iframeId]){
+ retBool = false;
+ warn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);
+ }
+
+ return retBool;
+ }
+
+ function iFrameReadyMsgReceived(){
+ for (var iframeId in settings){
+ trigger('iFrame requested init',createOutgoingMsg(iframeId),document.getElementById(iframeId),iframeId);
+ }
+ }
+
+ function firstRun() {
+ settings[iframeId].firstRun = false;
+ }
+
+ var
+ msg = event.data,
+ messageData = {},
+ iframeId = null;
+
+ if('[iFrameResizerChild]Ready' === msg){
+ iFrameReadyMsgReceived();
+ } else if (isMessageForUs()){
+ messageData = processMsg();
+ iframeId = logId = messageData.id;
+
+ if (!isMessageFromMetaParent() && hasSettings(iframeId)){
+ log(iframeId,'Received: '+msg);
+
+ if ( checkIFrameExists() && isMessageFromIFrame() ){
+ actionMsg();
+ }
+ }
+ } else {
+ info(iframeId,'Ignored: '+msg);
+ }
+
+ }
+
+
+ function chkCallback(iframeId,funcName,val){
+ var
+ func = null,
+ retVal = null;
+
+ if(settings[iframeId]){
+ func = settings[iframeId][funcName];
+
+ if( 'function' === typeof func){
+ retVal = func(val);
+ } else {
+ throw new TypeError(funcName+' on iFrame['+iframeId+'] is not a function');
+ }
+ }
+
+ return retVal;
+ }
+
+ function closeIFrame(iframe){
+ var iframeId = iframe.id;
+
+ log(iframeId,'Removing iFrame: '+iframeId);
+ iframe.parentNode.removeChild(iframe);
+ chkCallback(iframeId,'closedCallback',iframeId);
+ log(iframeId,'--');
+ delete settings[iframeId];
+ }
+
+ function getPagePosition(iframeId){
+ if(null === pagePosition){
+ pagePosition = {
+ x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+ y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+ };
+ log(iframeId,'Get page position: '+pagePosition.x+','+pagePosition.y);
+ }
+ }
+
+ function setPagePosition(iframeId){
+ if(null !== pagePosition){
+ window.scrollTo(pagePosition.x,pagePosition.y);
+ log(iframeId,'Set page position: '+pagePosition.x+','+pagePosition.y);
+ unsetPagePosition();
+ }
+ }
+
+ function unsetPagePosition(){
+ pagePosition = null;
+ }
+
+ function resetIFrame(messageData){
+ function reset(){
+ setSize(messageData);
+ trigger('reset','reset',messageData.iframe,messageData.id);
+ }
+
+ log(messageData.id,'Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));
+ getPagePosition(messageData.id);
+ syncResize(reset,messageData,'reset');
+ }
+
+ function setSize(messageData){
+ function setDimension(dimension){
+ messageData.iframe.style[dimension] = messageData[dimension] + 'px';
+ log(
+ messageData.id,
+ 'IFrame (' + iframeId +
+ ') ' + dimension +
+ ' set to ' + messageData[dimension] + 'px'
+ );
+ }
+
+ function chkZero(dimension){
+ //FireFox sets dimension of hidden iFrames to zero.
+ //So if we detect that set up an event to check for
+ //when iFrame becomes visible.
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ if (!hiddenCheckEnabled && '0' === messageData[dimension]){
+ hiddenCheckEnabled = true;
+ log(iframeId,'Hidden iFrame detected, creating visibility listener');
+ fixHiddenIFrames();
+ }
+ }
+
+ function processDimension(dimension){
+ setDimension(dimension);
+ chkZero(dimension);
+ }
+
+ var iframeId = messageData.iframe.id;
+
+ if(settings[iframeId]){
+ if( settings[iframeId].sizeHeight) { processDimension('height'); }
+ if( settings[iframeId].sizeWidth ) { processDimension('width'); }
+ }
+ }
+
+ function syncResize(func,messageData,doNotSync){
+ /* istanbul ignore if */ //Not testable in PhantomJS
+ if(doNotSync!==messageData.type && requestAnimationFrame){
+ log(messageData.id,'Requesting animation frame');
+ requestAnimationFrame(func);
+ } else {
+ func();
+ }
+ }
+
+ function trigger(calleeMsg,msg,iframe,id){
+ function postMessageToIFrame(){
+ var target = settings[id].targetOrigin;
+ log(id,'[' + calleeMsg + '] Sending msg to iframe['+id+'] ('+msg+') targetOrigin: '+target);
+ iframe.contentWindow.postMessage( msgId + msg, target );
+ }
+
+ function iFrameNotFound(){
+ info(id,'[' + calleeMsg + '] IFrame('+id+') not found');
+ if(settings[id]) {
+ delete settings[id];
+ }
+ }
+
+ function chkAndSend(){
+ if(iframe && 'contentWindow' in iframe && (null !== iframe.contentWindow)){ //Null test for PhantomJS
+ postMessageToIFrame();
+ } else {
+ iFrameNotFound();
+ }
+ }
+
+ id = id || iframe.id;
+
+ if(settings[id]) {
+ chkAndSend();
+ }
+
+ }
+
+ function createOutgoingMsg(iframeId){
+ return iframeId +
+ ':' + settings[iframeId].bodyMarginV1 +
+ ':' + settings[iframeId].sizeWidth +
+ ':' + settings[iframeId].log +
+ ':' + settings[iframeId].interval +
+ ':' + settings[iframeId].enablePublicMethods +
+ ':' + settings[iframeId].autoResize +
+ ':' + settings[iframeId].bodyMargin +
+ ':' + settings[iframeId].heightCalculationMethod +
+ ':' + settings[iframeId].bodyBackground +
+ ':' + settings[iframeId].bodyPadding +
+ ':' + settings[iframeId].tolerance +
+ ':' + settings[iframeId].inPageLinks +
+ ':' + settings[iframeId].resizeFrom +
+ ':' + settings[iframeId].widthCalculationMethod;
+ }
+
+ function setupIFrame(iframe,options){
+ function setLimits(){
+ function addStyle(style){
+ if ((Infinity !== settings[iframeId][style]) && (0 !== settings[iframeId][style])){
+ iframe.style[style] = settings[iframeId][style] + 'px';
+ log(iframeId,'Set '+style+' = '+settings[iframeId][style]+'px');
+ }
+ }
+
+ function chkMinMax(dimension){
+ if (settings[iframeId]['min'+dimension]>settings[iframeId]['max'+dimension]){
+ throw new Error('Value for min'+dimension+' can not be greater than max'+dimension);
+ }
+ }
+
+ chkMinMax('Height');
+ chkMinMax('Width');
+
+ addStyle('maxHeight');
+ addStyle('minHeight');
+ addStyle('maxWidth');
+ addStyle('minWidth');
+ }
+
+ function newId(){
+ var id = ((options && options.id) || defaults.id + count++);
+ if (null!==document.getElementById(id)){
+ id = id + count++;
+ }
+ return id;
+ }
+
+ function ensureHasId(iframeId){
+ logId=iframeId;
+ if (''===iframeId){
+ iframe.id = iframeId = newId();
+ logEnabled = (options || {}).log;
+ logId=iframeId;
+ log(iframeId,'Added missing iframe ID: '+ iframeId +' (' + iframe.src + ')');
+ }
+
+
+ return iframeId;
+ }
+
+ function setScrolling(){
+ log(iframeId,'IFrame scrolling ' + (settings[iframeId].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId);
+ iframe.style.overflow = false === settings[iframeId].scrolling ? 'hidden' : 'auto';
+ iframe.scrolling = false === settings[iframeId].scrolling ? 'no' : 'yes';
+ }
+
+ //The V1 iFrame script expects an int, where as in V2 expects a CSS
+ //string value such as '1px 3em', so if we have an int for V2, set V1=V2
+ //and then convert V2 to a string PX value.
+ function setupBodyMarginValues(){
+ if (('number'===typeof(settings[iframeId].bodyMargin)) || ('0'===settings[iframeId].bodyMargin)){
+ settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;
+ settings[iframeId].bodyMargin = '' + settings[iframeId].bodyMargin + 'px';
+ }
+ }
+
+ function checkReset(){
+ // Reduce scope of firstRun to function, because IE8's JS execution
+ // context stack is borked and this value gets externally
+ // changed midway through running this function!!!
+ var
+ firstRun = settings[iframeId].firstRun,
+ resetRequertMethod = settings[iframeId].heightCalculationMethod in resetRequiredMethods;
+
+ if (!firstRun && resetRequertMethod){
+ resetIFrame({iframe:iframe, height:0, width:0, type:'init'});
+ }
+ }
+
+ function setupIFrameObject(){
+ if(Function.prototype.bind){ //Ignore unpolyfilled IE8.
+ settings[iframeId].iframe.iFrameResizer = {
+
+ close : closeIFrame.bind(null,settings[iframeId].iframe),
+
+ resize : trigger.bind(null,'Window resize', 'resize', settings[iframeId].iframe),
+
+ moveToAnchor : function(anchor){
+ trigger('Move to anchor','moveToAnchor:'+anchor, settings[iframeId].iframe,iframeId);
+ },
+
+ sendMessage : function(message){
+ message = JSON.stringify(message);
+ trigger('Send Message','message:'+message, settings[iframeId].iframe,iframeId);
+ }
+ };
+ }
+ }
+
+ //We have to call trigger twice, as we can not be sure if all
+ //iframes have completed loading when this code runs. The
+ //event listener also catches the page changing in the iFrame.
+ function init(msg){
+ function iFrameLoaded(){
+ trigger('iFrame.onload',msg,iframe);
+ checkReset();
+ }
+
+ addEventListener(iframe,'load',iFrameLoaded);
+ trigger('init',msg,iframe);
+ }
+
+ function checkOptions(options){
+ if ('object' !== typeof options){
+ throw new TypeError('Options is not an object');
+ }
+ }
+
+ function copyOptions(options){
+ for (var option in defaults) {
+ if (defaults.hasOwnProperty(option)){
+ settings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];
+ }
+ }
+ }
+
+ function getTargetOrigin (remoteHost){
+ return ('' === remoteHost || 'file://' === remoteHost) ? '*' : remoteHost;
+ }
+
+ function processOptions(options){
+ options = options || {};
+ settings[iframeId] = {
+ firstRun : true,
+ iframe : iframe,
+ remoteHost : iframe.src.split('/').slice(0,3).join('/')
+ };
+
+ checkOptions(options);
+ copyOptions(options);
+
+ settings[iframeId].targetOrigin = true === settings[iframeId].checkOrigin ? getTargetOrigin(settings[iframeId].remoteHost) : '*';
+ }
+
+ function beenHere(){
+ return (iframeId in settings && 'iFrameResizer' in iframe);
+ }
+
+ var iframeId = ensureHasId(iframe.id);
+
+ if (!beenHere()){
+ processOptions(options);
+ setScrolling();
+ setLimits();
+ setupBodyMarginValues();
+ init(createOutgoingMsg(iframeId));
+ setupIFrameObject();
+ } else {
+ warn(iframeId,'Ignored iFrame, already setup.');
+ }
+ }
+
+ function debouce(fn,time){
+ if (null === timer){
+ timer = setTimeout(function(){
+ timer = null;
+ fn();
+ }, time);
+ }
+ }
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function fixHiddenIFrames(){
+ function checkIFrames(){
+ function checkIFrame(settingId){
+ function chkDimension(dimension){
+ return '0px' === settings[settingId].iframe.style[dimension];
+ }
+
+ function isVisible(el) {
+ return (null !== el.offsetParent);
+ }
+
+ if (isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))){
+ trigger('Visibility change', 'resize', settings[settingId].iframe,settingId);
+ }
+ }
+
+ for (var settingId in settings){
+ checkIFrame(settingId);
+ }
+ }
+
+ function mutationObserved(mutations){
+ log('window','Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);
+ debouce(checkIFrames,16);
+ }
+
+ function createMutationObserver(){
+ var
+ target = document.querySelector('body'),
+
+ config = {
+ attributes : true,
+ attributeOldValue : false,
+ characterData : true,
+ characterDataOldValue : false,
+ childList : true,
+ subtree : true
+ },
+
+ observer = new MutationObserver(mutationObserved);
+
+ observer.observe(target, config);
+ }
+
+ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+ if (MutationObserver) createMutationObserver();
+ }
+
+
+ function resizeIFrames(event){
+ function resize(){
+ sendTriggerMsg('Window '+event,'resize');
+ }
+
+ log('window','Trigger event: '+event);
+ debouce(resize,16);
+ }
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function tabVisible() {
+ function resize(){
+ sendTriggerMsg('Tab Visable','resize');
+ }
+
+ if('hidden' !== document.visibilityState) {
+ log('document','Trigger event: Visiblity change');
+ debouce(resize,16);
+ }
+ }
+
+ function sendTriggerMsg(eventName,event){
+ function isIFrameResizeEnabled(iframeId) {
+ return 'parent' === settings[iframeId].resizeFrom &&
+ settings[iframeId].autoResize &&
+ !settings[iframeId].firstRun;
+ }
+
+ for (var iframeId in settings){
+ if(isIFrameResizeEnabled(iframeId)){
+ trigger(eventName,event,document.getElementById(iframeId),iframeId);
+ }
+ }
+ }
+
+ function setupEventListeners(){
+ addEventListener(window,'message',iFrameListener);
+
+ addEventListener(window,'resize', function(){resizeIFrames('resize');});
+
+ addEventListener(document,'visibilitychange',tabVisible);
+ addEventListener(document,'-webkit-visibilitychange',tabVisible); //Andriod 4.4
+ addEventListener(window,'focusin',function(){resizeIFrames('focus');}); //IE8-9
+ addEventListener(window,'focus',function(){resizeIFrames('focus');});
+ }
+
+
+ function factory(){
+ function init(options,element){
+ function chkType(){
+ if(!element.tagName) {
+ throw new TypeError('Object is not a valid DOM element');
+ } else if ('IFRAME' !== element.tagName.toUpperCase()) {
+ throw new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>');
+ }
+ }
+
+ if(element) {
+ chkType();
+ setupIFrame(element, options);
+ iFrames.push(element);
+ }
+ }
+
+ var iFrames;
+
+ setupRequestAnimationFrame();
+ setupEventListeners();
+
+ return function iFrameResizeF(options,target){
+ iFrames = []; //Only return iFrames past in on this call
+
+ switch (typeof(target)){
+ case 'undefined':
+ case 'string':
+ Array.prototype.forEach.call(
+ document.querySelectorAll( target || 'iframe' ),
+ init.bind(undefined, options)
+ );
+ break;
+ case 'object':
+ init(options,target);
+ break;
+ default:
+ throw new TypeError('Unexpected data type ('+typeof(target)+')');
+ }
+
+ return iFrames;
+ };
+ }
+
+ function createJQueryPublicMethod($){
+ if (!$.fn) {
+ info('','Unable to bind to jQuery, it is not fully loaded.');
+ } else {
+ $.fn.iFrameResize = function $iFrameResizeF(options) {
+ function init(index, element) {
+ setupIFrame(element, options);
+ }
+
+ return this.filter('iframe').each(init).end();
+ };
+ }
+ }
+
+ if (window.jQuery) { createJQueryPublicMethod(jQuery); }
+
+ if (typeof define === 'function' && define.amd) {
+ define([],factory);
+ } else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy
+ module.exports = factory();
+ } else {
+ window.iFrameResize = window.iFrameResize || factory();
+ }
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.map b/libs/bower_components/iframe-resizer/js/iframeResizer.map
new file mode 100644
index 0000000000..c26b45efb4
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.map
@@ -0,0 +1 @@
+{"version":3,"file":"iframeResizer.min.js","sources":["iframeResizer.js"],"names":["window","addEventListener","obj","evt","func","attachEvent","removeEventListener","el","detachEvent","setupRequestAnimationFrame","x","vendors","length","requestAnimationFrame","log","getMyID","iframeId","retStr","top","self","parentIFrame","getId","formatLogHeader","msgId","isLogEnabled","settings","logEnabled","msg","output","info","warn","type","enabled","console","iFrameListener","event","resizeIFrame","resize","setSize","messageData","setPagePosition","ensureInRange","syncResize","processMsg","data","substr","msgIdLen","split","iframe","id","height","width","Dimension","max","Number","min","dimension","toLowerCase","size","isMessageFromIFrame","checkAllowedOrigin","checkList","i","retCode","checkOrigin","origin","checkSingle","remoteHost","constructor","Array","Error","isMessageForUs","isMessageFromMetaParent","true","false","undefined","getMsgBody","offset","indexOf","msgHeaderLen","forwardMsgFromIFrame","msgBody","callback","message","JSON","parse","getPageInfo","bodyPosition","document","body","getBoundingClientRect","iFramePosition","stringify","iframeHeight","iframeWidth","clientHeight","Math","documentElement","innerHeight","clientWidth","innerWidth","offsetTop","parseInt","offsetLeft","left","scrollTop","pageYOffset","scrollLeft","pageXOffset","sendPageInfoToIframe","debouncedTrigger","trigger","debouce","startPageInfoMonitor","setListener","sendPageInfo","stop","forEach","start","stopPageInfo","stopPageInfoMonitor","checkIFrameExists","retBool","getElementPosition","target","getPagePosition","floor","pagePosition","y","scrollRequestFromChild","addOffset","reposition","newPosition","scrollTo","calcOffset","scrollParent","unsetPagePosition","findTarget","location","jumpToTarget","jumpPosition","hash","jumpToParent","moveToAnchor","hashData","decodeURIComponent","getElementById","getElementsByName","funcName","val","chkCallback","actionMsg","firstRun","closeIFrame","resetIFrame","hasSettings","iFrameReadyMsgReceived","createOutgoingMsg","logId","retVal","TypeError","parentNode","removeChild","reset","setDimension","style","chkZero","hiddenCheckEnabled","fixHiddenIFrames","processDimension","sizeHeight","sizeWidth","doNotSync","calleeMsg","postMessageToIFrame","targetOrigin","contentWindow","postMessage","iFrameNotFound","chkAndSend","bodyMarginV1","interval","enablePublicMethods","autoResize","bodyMargin","heightCalculationMethod","bodyBackground","bodyPadding","tolerance","inPageLinks","resizeFrom","widthCalculationMethod","setupIFrame","options","setLimits","addStyle","Infinity","chkMinMax","newId","defaults","count","ensureHasId","src","setScrolling","scrolling","overflow","setupBodyMarginValues","checkReset","resetRequertMethod","resetRequiredMethods","setupIFrameObject","Function","prototype","bind","iFrameResizer","close","anchor","sendMessage","init","iFrameLoaded","checkOptions","copyOptions","option","hasOwnProperty","getTargetOrigin","processOptions","slice","join","beenHere","fn","time","timer","setTimeout","checkIFrames","checkIFrame","settingId","chkDimension","isVisible","offsetParent","mutationObserved","mutations","createMutationObserver","querySelector","config","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","observer","MutationObserver","observe","WebKitMutationObserver","resizeIFrames","sendTriggerMsg","tabVisible","visibilityState","eventName","isIFrameResizeEnabled","setupEventListeners","factory","element","chkType","tagName","toUpperCase","iFrames","push","call","querySelectorAll","createJQueryPublicMethod","$","iFrameResize","index","this","filter","each","end","msgHeader","scroll","bodyScroll","documentElementScroll","maxHeight","maxWidth","minHeight","minWidth","closedCallback","initCallback","messageCallback","resizedCallback","scrollCallback","jQuery","define","amd","module","exports"],"mappings":";;;;;;;CAWC,SAAUA,GACV,YA+CA,SAASC,GAAiBC,EAAIC,EAAIC,GAE7B,oBAAsBJ,GACzBE,EAAID,iBAAiBE,EAAIC,GAAM,GACrB,eAAiBJ,IAC3BE,EAAIG,YAAY,KAAKF,EAAIC,GAI3B,QAASE,GAAoBC,EAAGJ,EAAIC,GAE/B,uBAAyBJ,GAC5BO,EAAGD,oBAAoBH,EAAIC,GAAM,GACvB,eAAiBJ,IAC3BO,EAAGC,YAAY,KAAKL,EAAIC,GAI1B,QAASK,KACR,GAECC,GADAC,GAAW,MAAO,SAAU,IAAK,KAIlC,KAAKD,EAAI,EAAGA,EAAIC,EAAQC,SAAWC,EAAuBH,GAAK,EAC9DG,EAAwBb,EAAOW,EAAQD,GAAK,wBAGxC,IACJI,EAAI,QAAQ,uCAId,QAASC,GAAQC,GAChB,GAAIC,GAAS,cAAcD,CAU3B,OARIhB,GAAOkB,MAAMlB,EAAOmB,OAEtBF,EADGjB,EAAOoB,cAAgBpB,EAAOoB,aAAaC,MACrCrB,EAAOoB,aAAaC,QAAQ,KAAKL,EAEjC,qBAAqBA,GAIzBC,EAGR,QAASK,GAAgBN,GACxB,MAAOO,GAAQ,IAAMR,EAAQC,GAAY,IAG1C,QAASQ,GAAaR,GACrB,MAAOS,GAAST,GAAYS,EAAST,GAAUF,IAAMY,EAGtD,QAASZ,GAAIE,EAASW,GACrBC,EAAO,MAAMZ,EAASW,EAAIH,EAAaR,IAGxC,QAASa,GAAKb,EAASW,GACtBC,EAAO,OAAOZ,EAASW,EAAIH,EAAaR,IAGzC,QAASc,GAAKd,EAASW,GACtBC,EAAO,OAAOZ,EAASW,GAAI,GAG5B,QAASC,GAAOG,EAAKf,EAASW,EAAIK,IAC7B,IAASA,GAAW,gBAAoBhC,GAAOiC,SAClDA,QAAQF,GAAMT,EAAgBN,GAAUW,GAI1C,QAASO,GAAeC,GACvB,QAASC,KACR,QAASC,KACRC,EAAQC,GACRC,EAAgBxB,GAGjByB,EAAc,UACdA,EAAc,SAEdC,EAAWL,EAAOE,EAAY,QAG/B,QAASI,KACR,GAAIC,GAAOjB,EAAIkB,OAAOC,GAAUC,MAAM,IAEtC,QACCC,OAAQvB,EAASmB,EAAK,IAAII,OAC1BC,GAAQL,EAAK,GACbM,OAAQN,EAAK,GACbO,MAAQP,EAAK,GACbb,KAAQa,EAAK,IAIf,QAASH,GAAcW,GACtB,GACCC,GAAOC,OAAO7B,EAAST,GAAU,MAAQoC,IACzCG,EAAOD,OAAO7B,EAAST,GAAU,MAAQoC,IACzCI,EAAYJ,EAAUK,cACtBC,EAAOJ,OAAOf,EAAYiB,GAE3B1C,GAAIE,EAAS,YAAcwC,EAAY,gBAAkBD,EAAM,IAAMF,GAE5DE,EAALG,IACHA,EAAKH,EACLzC,EAAIE,EAAS,OAASwC,EAAY,kBAG/BE,EAAKL,IACRK,EAAKL,EACLvC,EAAIE,EAAS,OAASwC,EAAY,kBAGnCjB,EAAYiB,GAAa,GAAKE,EAI/B,QAASC,KACR,QAASC,KACR,QAASC,KACR,GACCC,GAAI,EACJC,GAAU,CAIX,KAFAjD,EAAIE,EAAS,wDAA0DgD,GAEhEF,EAAIE,EAAYpD,OAAQkD,IAC9B,GAAIE,EAAYF,KAAOG,EAAQ,CAC9BF,GAAU,CACV,OAGF,MAAOA,GAGR,QAASG,KACR,GAAIC,GAAc1C,EAAST,GAAUmD,UAErC,OADArD,GAAIE,EAAS,gCAAgCmD,GACtCF,IAAWE,EAGnB,MAAOH,GAAYI,cAAgBC,MAAQR,IAAcK,IAG1D,GACCD,GAAc9B,EAAM8B,OACpBD,EAAcvC,EAAST,GAAUgD,WAElC,IAAIA,GAAgB,GAAGC,GAAW,SAAYL,IAC7C,KAAM,IAAIU,OACT,qCAAuCL,EACvC,QAAU1B,EAAYS,OAAOC,GAC7B,kBAAoBd,EAAMS,KAC1B,qHAIF,QAAO,EAGR,QAAS2B,KACR,MAAOhD,MAAY,GAAKI,GAAKkB,OAAO,EAAEC,IAAenB,EAAIkB,OAAOC,GAAUC,MAAM,KAAK,IAAMtB,GAG5F,QAAS+C,KAGR,GAAIT,GAAUxB,EAAYR,QAAS0C,OAAO,EAAEC,QAAQ,EAAEC,UAAY,EAMlE,OAJIZ,IACHjD,EAAIE,EAAS,+CAGP+C,EAGR,QAASa,GAAWC,GACnB,MAAOlD,GAAIkB,OAAOlB,EAAImD,QAAQ,KAAKC,EAAaF,GAGjD,QAASG,GAAqBC,GAC7BnE,EAAIE,EAAS,oCAAqCuB,EAAYS,OAAOC,GAAK,cAAgBgC,EAAU,KACpGC,EAAS,mBACRlC,OAAQT,EAAYS,OACpBmC,QAASC,KAAKC,MAAMJ,KAErBnE,EAAIE,EAAS,MAGd,QAASsE,KACR,GACCC,GAAiBC,SAASC,KAAKC,wBAC/BC,EAAiBpD,EAAYS,OAAO0C,uBAErC,OAAON,MAAKQ,WACXC,aAAcF,EAAezC,OAC7B4C,YAAcH,EAAexC,MAC7B4C,aAAcC,KAAK3C,IAAImC,SAASS,gBAAgBF,aAAc/F,EAAOkG,aAAe,GACpFC,YAAcH,KAAK3C,IAAImC,SAASS,gBAAgBE,YAAcnG,EAAOoG,YAAe,GACpFC,UAAcC,SAASX,EAAezE,IAAOqE,EAAarE,IAAM,IAChEqF,WAAcD,SAASX,EAAea,KAAOjB,EAAaiB,KAAM,IAChEC,UAAczG,EAAO0G,YACrBC,WAAc3G,EAAO4G,cAIvB,QAASC,GAAqB7D,EAAOhC,GACpC,QAAS8F,KACRC,EACC,iBACA,YAAczB,IACdtC,EACAhC,GAIFgG,EAAQF,EAAiB,IAI1B,QAASG,KACR,QAASC,GAAYnF,EAAK3B,GACzB,QAAS+G,KACJ1F,EAASwB,GACZ4D,EAAqBpF,EAASwB,GAAID,OAAOC,GAEzCmE,KAID,SAAS,UAAUC,QAAQ,SAASlH,GACpCW,EAAImC,EAAIlB,EAAQ5B,EAAM,8BACtBC,EAAKJ,EAAOG,EAAIgH,KAIlB,QAASC,KACRF,EAAY,UAAW5G,GAGxB,QAASgH,KACRJ,EAAY,OAAQjH,GAGrB,GAAIgD,GAAKjC,CAETsG,KAEA7F,EAASwB,GAAIsE,aAAeH,EAG7B,QAASI,KACJ/F,EAAST,IAAaS,EAAST,GAAUuG,eAC5C9F,EAAST,GAAUuG,qBACZ9F,GAAST,GAAUuG,cAI5B,QAASE,KACR,GAAIC,IAAU,CAMd,OAJI,QAASnF,EAAYS,SACxBlB,EAAKd,EAAS,WAAWuB,EAAYU,GAAG,eACxCyE,GAAU,GAEJA,EAGR,QAASC,GAAmBC,GAC3B,GAAIjC,GAAiBiC,EAAOlC,uBAI5B,OAFAmC,GAAgB7G,IAGfN,EAAGsF,KAAK8B,MAAOxE,OAAOqC,EAAea,MAAQlD,OAAOyE,EAAarH,IACjEsH,EAAGhC,KAAK8B,MAAOxE,OAAOqC,EAAezE,KAAQoC,OAAOyE,EAAaC,KAInE,QAASC,GAAuBC,GAE/B,QAASC,KACRJ,EAAeK,EACfC,IACAvH,EAAIE,EAAS,MAGd,QAASsH,KACR,OACC5H,EAAG4C,OAAOf,EAAYY,OAAS0B,EAAOnE,EACtCsH,EAAG1E,OAAOf,EAAYW,QAAU2B,EAAOmD,GAIzC,QAASO,KACJvI,EAAOoB,aACVpB,EAAOoB,aAAa,YAAY8G,EAAU,SAAS,KAAKE,EAAY1H,EAAE0H,EAAYJ,GAElFlG,EAAKd,EAAS,yEAIhB,GACC6D,GAASqD,EAAYP,EAAmBpF,EAAYS,SAAWtC,EAAE,EAAEsH,EAAE,GACrEI,EAAcE,GAEfxH,GAAIE,EAAS,8CAA8C6D,EAAOnE,EAAE,MAAMmE,EAAOmD,EAAE,KAEhFhI,EAAOkB,MAAMlB,EAAOmB,KACtBoH,IAEAJ,IAIF,QAASE,MACJ,IAAUnD,EAAS,iBAAiB6C,GACvCvF,EAAgBxB,GAEhBwH,IAIF,QAASC,GAAWC,GACnB,QAASC,KACR,GAAIC,GAAejB,EAAmBC,EAEtC9G,GAAIE,EAAS,4BAA4B6H,EAAK,WAAWD,EAAalI,EAAE,OAAOkI,EAAaZ,GAC5FD,GACCrH,EAAGkI,EAAalI,EAChBsH,EAAGY,EAAaZ,GAGjBK,IACAvH,EAAIE,EAAS,MAGd,QAAS8H,KACJ9I,EAAOoB,aACVpB,EAAOoB,aAAa2H,aAAaF,GAEjC/H,EAAIE,EAAS,iBAAiB6H,EAAK,gDAIrC,GACCA,GAAWH,EAAS3F,MAAM,KAAK,IAAM,GACrCiG,EAAWC,mBAAmBJ,GAC9BjB,EAAWpC,SAAS0D,eAAeF,IAAaxD,SAAS2D,kBAAkBH,GAAU,EAElFpB,GACHe,IACS3I,EAAOkB,MAAMlB,EAAOmB,KAC7B2H,IAEAhI,EAAIE,EAAS,iBAAiB6H,EAAK,cAIrC,QAAS3D,GAASkE,EAASC,GAC1B,MAAOC,GAAYtI,EAASoI,EAASC,GAGtC,QAASE,KAIR,OAFG9H,EAAST,GAAUwI,UAAUA,IAEzBjH,EAAYR,MACnB,IAAK,QACJ0H,EAAYlH,EAAYS,OACxB,MACD,KAAK,UACJgC,EAAqBJ,EAAW,GAChC,MACD,KAAK,WACJqD,GAAuB,EACvB,MACD,KAAK,iBACJA,GAAuB,EACvB,MACD,KAAK,WACJpB,EAAqBpF,EAAST,GAAUgC,OAAOhC,GAC/CiG,GACA,MACD,KAAK,eACJO,GACA,MACD,KAAK,aACJiB,EAAW7D,EAAW,GACtB,MACD,KAAK,QACJ8E,EAAYnH,EACZ,MACD,KAAK,OACJH,IACA8C,EAAS,eAAe3C,EAAYS,QACpCkC,EAAS,kBAAkB3C,EAC3B,MACD,SACCH,IACA8C,EAAS,kBAAkB3C,IAI7B,QAASoH,GAAY3I,GACpB,GAAI0G,IAAU,CAOd,OALKjG,GAAST,KACb0G,GAAU,EACV5F,EAAKS,EAAYR,KAAO,oBAAsBf,EAAW,kBAAoBW,IAGvE+F,EAGR,QAASkC,KACR,IAAK,GAAI5I,KAAYS,GACpBsF,EAAQ,wBAAwB8C,EAAkB7I,GAAUwE,SAAS0D,eAAelI,GAAUA,GAIhG,QAASwI,KACR/H,EAAST,GAAUwI,UAAW,EAG/B,GACC7H,GAAMQ,EAAMS,KACZL,KACAvB,EAAW,IAET,+BAAgCW,EAClCiI,IACUrF,KACVhC,EAAcI,IACd3B,EAAc8I,EAAQvH,EAAYU,IAE7BuB,KAA6BmF,EAAY3I,KAC7CF,EAAIE,EAAS,aAAaW,GAErB8F,KAAuB9D,KAC3B4F,MAIF1H,EAAKb,EAAS,YAAYW,GAM5B,QAAS2H,GAAYtI,EAASoI,EAASC,GACtC,GACCjJ,GAAO,KACP2J,EAAS,IAEV,IAAGtI,EAAST,GAAU,CAGrB,GAFAZ,EAAOqB,EAAST,GAAUoI,GAEtB,kBAAsBhJ,GAGzB,KAAM,IAAI4J,WAAUZ,EAAS,cAAcpI,EAAS,sBAFpD+I,GAAS3J,EAAKiJ,GAMhB,MAAOU,GAGR,QAASN,GAAYzG,GACpB,GAAIhC,GAAWgC,EAAOC,EAEtBnC,GAAIE,EAAS,oBAAoBA,GACjCgC,EAAOiH,WAAWC,YAAYlH,GAC9BsG,EAAYtI,EAAS,iBAAiBA,GACtCF,EAAIE,EAAS,YACNS,GAAST,GAGjB,QAAS6G,GAAgB7G,GACrB,OAAS+G,IACXA,GACCrH,EAA2BiE,SAAvB3E,EAAO4G,YAA6B5G,EAAO4G,YAAcpB,SAASS,gBAAgBU,WACtFqB,EAA2BrD,SAAvB3E,EAAO0G,YAA6B1G,EAAO0G,YAAclB,SAASS,gBAAgBQ,WAEvF3F,EAAIE,EAAS,sBAAsB+G,EAAarH,EAAE,IAAIqH,EAAaC,IAIrE,QAASxF,GAAgBxB,GACrB,OAAS+G,IACX/H,EAAOqI,SAASN,EAAarH,EAAEqH,EAAaC,GAC5ClH,EAAIE,EAAS,sBAAsB+G,EAAarH,EAAE,IAAIqH,EAAaC,GACnEQ,KAIF,QAASA,KACRT,EAAe,KAGhB,QAAS2B,GAAYnH,GACpB,QAAS4H,KACR7H,EAAQC,GACRwE,EAAQ,QAAQ,QAAQxE,EAAYS,OAAOT,EAAYU,IAGxDnC,EAAIyB,EAAYU,GAAG,4BAA4B,SAASV,EAAYR,KAAK,YAAY,WACrF8F,EAAgBtF,EAAYU,IAC5BP,EAAWyH,EAAM5H,EAAY,SAG9B,QAASD,GAAQC,GAChB,QAAS6H,GAAa5G,GACrBjB,EAAYS,OAAOqH,MAAM7G,GAAajB,EAAYiB,GAAa,KAC/D1C,EACCyB,EAAYU,GACZ,WAAajC,EACb,KAAOwC,EACP,WAAajB,EAAYiB,GAAa,MAIxC,QAAS8G,GAAQ9G,GAMX+G,GAAsB,MAAQhI,EAAYiB,KAC9C+G,GAAqB,EACrBzJ,EAAIE,EAAS,wDACbwJ,KAIF,QAASC,GAAiBjH,GACzB4G,EAAa5G,GACb8G,EAAQ9G,GAGT,GAAIxC,GAAWuB,EAAYS,OAAOC,EAE/BxB,GAAST,KACPS,EAAST,GAAU0J,YAAcD,EAAiB,UAClDhJ,EAAST,GAAU2J,WAAcF,EAAiB,UAIxD,QAAS/H,GAAWtC,EAAKmC,EAAYqI,GAEjCA,IAAYrI,EAAYR,MAAQlB,GAClCC,EAAIyB,EAAYU,GAAG,8BACnBpC,EAAsBT,IAEtBA,IAIF,QAAS2G,GAAQ8D,EAAUlJ,EAAIqB,EAAOC,GACrC,QAAS6H,KACR,GAAIlD,GAASnG,EAASwB,GAAI8H,YAC1BjK,GAAImC,EAAG,IAAM4H,EAAY,2BAA2B5H,EAAG,MAAMtB,EAAI,mBAAmBiG,GACpF5E,EAAOgI,cAAcC,YAAa1J,EAAQI,EAAKiG,GAGhD,QAASsD,KACRrJ,EAAKoB,EAAG,IAAM4H,EAAY,YAAY5H,EAAG,eACtCxB,EAASwB,UACJxB,GAASwB,GAIlB,QAASkI,KACLnI,GAAU,iBAAmBA,IAAW,OAASA,EAAOgI,cAC1DF,IAEAI,IAIFjI,EAAKA,GAAMD,EAAOC,GAEfxB,EAASwB,IACXkI,IAKF,QAAStB,GAAkB7I,GAC1B,MAAOA,GACN,IAAMS,EAAST,GAAUoK,aACzB,IAAM3J,EAAST,GAAU2J,UACzB,IAAMlJ,EAAST,GAAUF,IACzB,IAAMW,EAAST,GAAUqK,SACzB,IAAM5J,EAAST,GAAUsK,oBACzB,IAAM7J,EAAST,GAAUuK,WACzB,IAAM9J,EAAST,GAAUwK,WACzB,IAAM/J,EAAST,GAAUyK,wBACzB,IAAMhK,EAAST,GAAU0K,eACzB,IAAMjK,EAAST,GAAU2K,YACzB,IAAMlK,EAAST,GAAU4K,UACzB,IAAMnK,EAAST,GAAU6K,YACzB,IAAMpK,EAAST,GAAU8K,WACzB,IAAMrK,EAAST,GAAU+K,uBAG3B,QAASC,GAAYhJ,EAAOiJ,GAC3B,QAASC,KACR,QAASC,GAAS9B,GACZ+B,EAAAA,IAAa3K,EAAST,GAAUqJ,IAAY,IAAM5I,EAAST,GAAUqJ,KACzErH,EAAOqH,MAAMA,GAAS5I,EAAST,GAAUqJ,GAAS,KAClDvJ,EAAIE,EAAS,OAAOqJ,EAAM,MAAM5I,EAAST,GAAUqJ,GAAO,OAI5D,QAASgC,GAAU7I,GAClB,GAAI/B,EAAST,GAAU,MAAMwC,GAAW/B,EAAST,GAAU,MAAMwC,GAChE,KAAM,IAAIc,OAAM,gBAAgBd,EAAU,+BAA+BA,GAI3E6I,EAAU,UACVA,EAAU,SAEVF,EAAS,aACTA,EAAS,aACTA,EAAS,YACTA,EAAS,YAGV,QAASG,KACR,GAAIrJ,GAAOgJ,GAAWA,EAAQhJ,IAAOsJ,EAAStJ,GAAKuJ,GAInD,OAHK,QAAOhH,SAAS0D,eAAejG,KACnCA,GAAUuJ,KAEJvJ,EAGR,QAASwJ,GAAYzL,GAUpB,MATA8I,GAAM9I,EACF,KAAKA,IACRgC,EAAOC,GAAKjC,EAAYsL,IACxB5K,GAAcuK,OAAenL,IAC7BgJ,EAAM9I,EACNF,EAAIE,EAAS,4BAA6BA,EAAU,KAAOgC,EAAO0J,IAAM,MAIlE1L,EAGR,QAAS2L,KACR7L,EAAIE,EAAS,qBAAuBS,EAAST,GAAU4L,UAAY,UAAY,YAAc,QAAU5L,GACvGgC,EAAOqH,MAAMwC,UAAW,IAAUpL,EAAST,GAAU4L,UAAY,SAAW,OAC5E5J,EAAO4J,WAAiB,IAAUnL,EAAST,GAAU4L,UAAY,KAAO,MAMzE,QAASE,MACH,gBAAkBrL,GAAST,GAAoB,YAAO,MAAMS,EAAST,GAAUwK,cACnF/J,EAAST,GAAUoK,aAAe3J,EAAST,GAAUwK,WACrD/J,EAAST,GAAUwK,WAAe,GAAK/J,EAAST,GAAUwK,WAAa,MAIzE,QAASuB,KAIR,GACCvD,GAAqB/H,EAAST,GAAUwI,SACxCwD,EAAqBvL,EAAST,GAAUyK,0BAA2BwB,IAE/DzD,GAAYwD,GAChBtD,GAAa1G,OAAOA,EAAQE,OAAO,EAAGC,MAAM,EAAGpB,KAAK,SAItD,QAASmL,KACLC,SAASC,UAAUC,OACrB5L,EAAST,GAAUgC,OAAOsK,eAEzBC,MAAe9D,EAAY4D,KAAK,KAAK5L,EAAST,GAAUgC,QAExDX,OAAe0E,EAAQsG,KAAK,KAAK,gBAAiB,SAAU5L,EAAST,GAAUgC,QAE/E+F,aAAe,SAASyE,GACvBzG,EAAQ,iBAAiB,gBAAgByG,EAAQ/L,EAAST,GAAUgC,OAAOhC,IAG5EyM,YAAe,SAAStI,GACvBA,EAAUC,KAAKQ,UAAUT,GACzB4B,EAAQ,eAAe,WAAW5B,EAAS1D,EAAST,GAAUgC,OAAOhC,MASzE,QAAS0M,GAAK/L,GACb,QAASgM,KACR5G,EAAQ,gBAAgBpF,EAAIqB,GAC5B+J,IAGD9M,EAAiB+C,EAAO,OAAO2K,GAC/B5G,EAAQ,OAAOpF,EAAIqB,GAGpB,QAAS4K,GAAa3B,GACrB,GAAI,gBAAoBA,GACvB,KAAM,IAAIjC,WAAU,4BAItB,QAAS6D,GAAY5B,GACpB,IAAK,GAAI6B,KAAUvB,GACdA,EAASwB,eAAeD,KAC3BrM,EAAST,GAAU8M,GAAU7B,EAAQ8B,eAAeD,GAAU7B,EAAQ6B,GAAUvB,EAASuB,IAK5F,QAASE,GAAiB7J,GACzB,MAAQ,KAAOA,GAAc,YAAcA,EAAc,IAAMA,EAGhE,QAAS8J,GAAehC,GACvBA,EAAUA,MACVxK,EAAST,IACRwI,UAAW,EACXxG,OAAUA,EACVmB,WAAanB,EAAO0J,IAAI3J,MAAM,KAAKmL,MAAM,EAAE,GAAGC,KAAK,MAGpDP,EAAa3B,GACb4B,EAAY5B,GAEZxK,EAAST,GAAU+J,cAAe,IAAStJ,EAAST,GAAUgD,YAAcgK,EAAgBvM,EAAST,GAAUmD,YAAc,IAG9H,QAASiK,KACR,MAAQpN,KAAYS,IAAY,iBAAmBuB,GAGpD,GAAIhC,GAAWyL,EAAYzJ,EAAOC,GAE7BmL,KAQJtM,EAAKd,EAAS,mCAPdiN,EAAehC,GACfU,IACAT,IACAY,IACAY,EAAK7D,EAAkB7I,IACvBkM,KAMF,QAASlG,GAAQqH,EAAGC,GACf,OAASC,IACZA,EAAQC,WAAW,WAClBD,EAAQ,KACRF,KACEC,IAKL,QAAS9D,KACR,QAASiE,KACR,QAASC,GAAYC,GACpB,QAASC,GAAapL,GACrB,MAAO,QAAU/B,EAASkN,GAAW3L,OAAOqH,MAAM7G,GAGnD,QAASqL,GAAUtO,GAClB,MAAQ,QAASA,EAAGuO,aAGjBD,EAAUpN,EAASkN,GAAW3L,UAAY4L,EAAa,WAAaA,EAAa,WACpF7H,EAAQ,oBAAqB,SAAUtF,EAASkN,GAAW3L,OAAO2L,GAIpE,IAAK,GAAIA,KAAalN,GACrBiN,EAAYC,GAId,QAASI,GAAiBC,GACzBlO,EAAI,SAAS,sBAAwBkO,EAAU,GAAGpH,OAAS,IAAMoH,EAAU,GAAGjN,MAC9EiF,EAAQyH,EAAa,IAGtB,QAASQ,KACR,GACCrH,GAASpC,SAAS0J,cAAc,QAEhCC,GACCC,YAAwB,EACxBC,mBAAwB,EACxBC,eAAwB,EACxBC,uBAAwB,EACxBC,WAAwB,EACxBC,SAAwB,GAGzBC,EAAW,GAAIC,GAAiBZ,EAEjCW,GAASE,QAAQhI,EAAQuH,GAG1B,GAAIQ,GAAmB3P,EAAO2P,kBAAoB3P,EAAO6P,sBAErDF,IAAkBV,IAIvB,QAASa,GAAc3N,GACtB,QAASE,KACR0N,EAAe,UAAU5N,EAAM,UAGhCrB,EAAI,SAAS,kBAAkBqB,GAC/B6E,EAAQ3E,EAAO,IAIhB,QAAS2N,KACR,QAAS3N,KACR0N,EAAe,cAAc,UAG3B,WAAavK,SAASyK,kBACxBnP,EAAI,WAAW,mCACfkG,EAAQ3E,EAAO,KAIjB,QAAS0N,GAAeG,EAAU/N,GACjC,QAASgO,GAAsBnP,GAC9B,MAAO,WAAaS,EAAST,GAAU8K,YACrCrK,EAAST,GAAUuK,aAClB9J,EAAST,GAAUwI,SAGvB,IAAK,GAAIxI,KAAYS,GACjB0O,EAAsBnP,IACxB+F,EAAQmJ,EAAU/N,EAAMqD,SAAS0D,eAAelI,GAAUA,GAK7D,QAASoP,KACRnQ,EAAiBD,EAAO,UAAUkC,GAElCjC,EAAiBD,EAAO,SAAU,WAAW8P,EAAc,YAE3D7P,EAAiBuF,SAAS,mBAAmBwK,GAC7C/P,EAAiBuF,SAAS,2BAA2BwK,GACrD/P,EAAiBD,EAAO,UAAU,WAAW8P,EAAc,WAC3D7P,EAAiBD,EAAO,QAAQ,WAAW8P,EAAc,WAI1D,QAASO,KACR,QAAS3C,GAAKzB,EAAQqE,GACrB,QAASC,KACR,IAAID,EAAQE,QACX,KAAM,IAAIxG,WAAU,oCACd,IAAI,WAAasG,EAAQE,QAAQC,cACvC,KAAM,IAAIzG,WAAU,iCAAiCsG,EAAQE,QAAQ,KAIpEF,IACFC,IACAvE,EAAYsE,EAASrE,GACrByE,EAAQC,KAAKL,IAIf,GAAII,EAKJ,OAHAjQ,KACA2P,IAEO,SAAuBnE,EAAQrE,GAGrC,OAFA8I,WAEc,IACd,IAAK,YACL,IAAK,SACJrM,MAAM+I,UAAU/F,QAAQuJ,KACvBpL,SAASqL,iBAAkBjJ,GAAU,UACrC8F,EAAKL,KAAK1I,OAAWsH,GAEtB,MACD,KAAK,SACJyB,EAAKzB,EAAQrE,EACb,MACD,SACC,KAAM,IAAIoC,WAAU,+BAA+B,GAAS,KAG7D,MAAO0G,IAIT,QAASI,GAAyBC,GAC5BA,EAAE1C,GAGN0C,EAAE1C,GAAG2C,aAAe,SAAwB/E,GAC3C,QAASyB,GAAKuD,EAAOX,GACpBtE,EAAYsE,EAASrE,GAGtB,MAAOiF,MAAKC,OAAO,UAAUC,KAAK1D,GAAM2D,OAPzCxP,EAAK,GAAG,qDAr8BV,GACC2K,GAAwB,EACxB9K,GAAwB,EACxB6I,GAAwB,EACxB+G,EAAwB,UACxBvM,EAAwBuM,EAAU1Q,OAClCW,EAAwB,gBACxBuB,EAAwBvB,EAAMX,OAC9BmH,EAAwB,KACxBlH,EAAwBb,EAAOa,sBAC/BoM,GAAyB5J,IAAI,EAAEkO,OAAO,EAAEC,WAAW,EAAEC,sBAAsB,GAC3EhQ,KACA8M,EAAwB,KACxBzE,EAAwB,YAExByC,GACChB,YAA4B,EAC5BG,eAA4B,KAC5BF,WAA4B,KAC5BJ,aAA4B,EAC5BO,YAA4B,KAC5B3H,aAA4B,EAC5B6H,aAA4B,EAC5BP,qBAA4B,EAC5BG,wBAA4B,aAC5BxI,GAA4B,gBAC5BoI,SAA4B,GAC5BvK,KAA4B,EAC5B4Q,UAA4BtF,EAAAA,EAC5BuF,SAA4BvF,EAAAA,EAC5BwF,UAA4B,EAC5BC,SAA4B,EAC5B/F,WAA4B,SAC5Bc,WAA4B,EAC5BlC,YAA4B,EAC5BC,WAA4B,EAC5BiB,UAA4B,EAC5BG,uBAA4B,SAC5B+F,eAA4B,aAC5BC,aAA4B,aAC5BC,gBAA4B,WAAWlQ,EAAK,yCAC5CmQ,gBAA4B,aAC5BC,eAA4B,WAAW,OAAO,GAu6B5ClS,GAAOmS,QAAUrB,EAAyBqB,QAExB,kBAAXC,SAAyBA,OAAOC,IAC1CD,UAAU/B,GACkB,gBAAXiC,SAAiD,gBAAnBA,QAAOC,QACtDD,OAAOC,QAAUlC,IAEjBrQ,EAAOgR,aAAehR,EAAOgR,cAAgBX,KAG5CrQ","sourcesContent":["/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n\n;(function(window) {\n\t'use strict';\n\n\tvar\n\t\tcount = 0,\n\t\tlogEnabled = false,\n\t\thiddenCheckEnabled = false,\n\t\tmsgHeader = 'message',\n\t\tmsgHeaderLen = msgHeader.length,\n\t\tmsgId = '[iFrameSizer]', //Must match iframe msg ID\n\t\tmsgIdLen = msgId.length,\n\t\tpagePosition = null,\n\t\trequestAnimationFrame = window.requestAnimationFrame,\n\t\tresetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},\n\t\tsettings = {},\n\t\ttimer = null,\n\t\tlogId = 'Host Page',\n\n\t\tdefaults = {\n\t\t\tautoResize : true,\n\t\t\tbodyBackground : null,\n\t\t\tbodyMargin : null,\n\t\t\tbodyMarginV1 : 8,\n\t\t\tbodyPadding : null,\n\t\t\tcheckOrigin : true,\n\t\t\tinPageLinks : false,\n\t\t\tenablePublicMethods : true,\n\t\t\theightCalculationMethod : 'bodyOffset',\n\t\t\tid : 'iFrameResizer',\n\t\t\tinterval : 32,\n\t\t\tlog : false,\n\t\t\tmaxHeight : Infinity,\n\t\t\tmaxWidth : Infinity,\n\t\t\tminHeight : 0,\n\t\t\tminWidth : 0,\n\t\t\tresizeFrom : 'parent',\n\t\t\tscrolling : false,\n\t\t\tsizeHeight : true,\n\t\t\tsizeWidth : false,\n\t\t\ttolerance : 0,\n\t\t\twidthCalculationMethod : 'scroll',\n\t\t\tclosedCallback : function(){},\n\t\t\tinitCallback : function(){},\n\t\t\tmessageCallback : function(){warn('MessageCallback function not defined');},\n\t\t\tresizedCallback : function(){},\n\t\t\tscrollCallback : function(){return true;}\n\t\t};\n\n\tfunction addEventListener(obj,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in PhantonJS\n\t\tif ('addEventListener' in window){\n\t\t\tobj.addEventListener(evt,func, false);\n\t\t} else if ('attachEvent' in window){//IE\n\t\t\tobj.attachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction removeEventListener(el,evt,func){\n\t\t/* istanbul ignore else */ // Not testable in phantonJS\n\t\tif ('removeEventListener' in window){\n\t\t\tel.removeEventListener(evt,func, false);\n\t\t} else if ('detachEvent' in window){ //IE\n\t\t\tel.detachEvent('on'+evt,func);\n\t\t}\n\t}\n\n\tfunction setupRequestAnimationFrame(){\n\t\tvar\n\t\t\tvendors = ['moz', 'webkit', 'o', 'ms'],\n\t\t\tx;\n\n\t\t// Remove vendor prefixing if prefixed and break early if not\n\t\tfor (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n\t\t\trequestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n\t\t}\n\n\t\tif (!(requestAnimationFrame)){\n\t\t\tlog('setup','RequestAnimationFrame not supported');\n\t\t}\n\t}\n\n\tfunction getMyID(iframeId){\n\t\tvar retStr = 'Host page: '+iframeId;\n\n\t\tif (window.top!==window.self){\n\t\t\tif (window.parentIFrame && window.parentIFrame.getId){\n\t\t\t\tretStr = window.parentIFrame.getId()+': '+iframeId;\n\t\t\t} else {\n\t\t\t\tretStr = 'Nested host page: '+iframeId;\n\t\t\t}\n\t\t}\n\n\t\treturn retStr;\n\t}\n\n\tfunction formatLogHeader(iframeId){\n\t\treturn msgId + '[' + getMyID(iframeId) + ']';\n\t}\n\n\tfunction isLogEnabled(iframeId){\n\t\treturn settings[iframeId] ? settings[iframeId].log : logEnabled;\n\t}\n\n\tfunction log(iframeId,msg){\n\t\toutput('log',iframeId,msg,isLogEnabled(iframeId));\n\t}\n\n\tfunction info(iframeId,msg){\n\t\toutput('info',iframeId,msg,isLogEnabled(iframeId));\n\t}\n\n\tfunction warn(iframeId,msg){\n\t\toutput('warn',iframeId,msg,true);\n\t}\n\n\tfunction output(type,iframeId,msg,enabled){\n\t\tif (true === enabled && 'object' === typeof window.console){\n\t\t\tconsole[type](formatLogHeader(iframeId),msg);\n\t\t}\n\t}\n\n\tfunction iFrameListener(event){\n\t\tfunction resizeIFrame(){\n\t\t\tfunction resize(){\n\t\t\t\tsetSize(messageData);\n\t\t\t\tsetPagePosition(iframeId);\n\t\t\t}\n\n\t\t\tensureInRange('Height');\n\t\t\tensureInRange('Width');\n\n\t\t\tsyncResize(resize,messageData,'init');\n\t\t}\n\n\t\tfunction processMsg(){\n\t\t\tvar data = msg.substr(msgIdLen).split(':');\n\n\t\t\treturn {\n\t\t\t\tiframe: settings[data[0]].iframe,\n\t\t\t\tid: data[0],\n\t\t\t\theight: data[1],\n\t\t\t\twidth: data[2],\n\t\t\t\ttype: data[3]\n\t\t\t};\n\t\t}\n\n\t\tfunction ensureInRange(Dimension){\n\t\t\tvar\n\t\t\t\tmax = Number(settings[iframeId]['max' + Dimension]),\n\t\t\t\tmin = Number(settings[iframeId]['min' + Dimension]),\n\t\t\t\tdimension = Dimension.toLowerCase(),\n\t\t\t\tsize = Number(messageData[dimension]);\n\n\t\t\tlog(iframeId,'Checking ' + dimension + ' is in range ' + min + '-' + max);\n\n\t\t\tif (size<min) {\n\t\t\t\tsize=min;\n\t\t\t\tlog(iframeId,'Set ' + dimension + ' to min value');\n\t\t\t}\n\n\t\t\tif (size>max) {\n\t\t\t\tsize=max;\n\t\t\t\tlog(iframeId,'Set ' + dimension + ' to max value');\n\t\t\t}\n\n\t\t\tmessageData[dimension] = '' + size;\n\t\t}\n\n\n\t\tfunction isMessageFromIFrame(){\n\t\t\tfunction checkAllowedOrigin(){\n\t\t\t\tfunction checkList(){\n\t\t\t\t\tvar\n\t\t\t\t\t\ti = 0,\n\t\t\t\t\t\tretCode = false;\n\n\t\t\t\t\tlog(iframeId,'Checking connection is from allowed list of origins: ' + checkOrigin);\n\n\t\t\t\t\tfor (; i < checkOrigin.length; i++) {\n\t\t\t\t\t\tif (checkOrigin[i] === origin) {\n\t\t\t\t\t\t\tretCode = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn retCode;\n\t\t\t\t}\n\n\t\t\t\tfunction checkSingle(){\n\t\t\t\t\tvar remoteHost = settings[iframeId].remoteHost;\n\t\t\t\t\tlog(iframeId,'Checking connection is from: '+remoteHost);\n\t\t\t\t\treturn origin === remoteHost;\n\t\t\t\t}\n\n\t\t\t\treturn checkOrigin.constructor === Array ? checkList() : checkSingle();\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\torigin = event.origin,\n\t\t\t\tcheckOrigin = settings[iframeId].checkOrigin;\n\n\t\t\tif (checkOrigin && (''+origin !== 'null') && !checkAllowedOrigin()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Unexpected message received from: ' + origin +\n\t\t\t\t\t' for ' + messageData.iframe.id +\n\t\t\t\t\t'. Message was: ' + event.data +\n\t\t\t\t\t'. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction isMessageForUs(){\n\t\t\treturn msgId === (('' + msg).substr(0,msgIdLen)) && (msg.substr(msgIdLen).split(':')[0] in settings); //''+Protects against non-string msg\n\t\t}\n\n\t\tfunction isMessageFromMetaParent(){\n\t\t\t//Test if this message is from a parent above us. This is an ugly test, however, updating\n\t\t\t//the message format would break backwards compatibity.\n\t\t\tvar retCode = messageData.type in {'true':1,'false':1,'undefined':1};\n\n\t\t\tif (retCode){\n\t\t\t\tlog(iframeId,'Ignoring init message from meta parent page');\n\t\t\t}\n\n\t\t\treturn retCode;\n\t\t}\n\n\t\tfunction getMsgBody(offset){\n\t\t\treturn msg.substr(msg.indexOf(':')+msgHeaderLen+offset);\n\t\t}\n\n\t\tfunction forwardMsgFromIFrame(msgBody){\n\t\t\tlog(iframeId,'MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');\n\t\t\tcallback('messageCallback',{\n\t\t\t\tiframe: messageData.iframe,\n\t\t\t\tmessage: JSON.parse(msgBody)\n\t\t\t});\n\t\t\tlog(iframeId,'--');\n\t\t}\n\n\t\tfunction getPageInfo(){\n\t\t\tvar\n\t\t\t\tbodyPosition = document.body.getBoundingClientRect(),\n\t\t\t\tiFramePosition = messageData.iframe.getBoundingClientRect();\n\n\t\t\treturn JSON.stringify({\n\t\t\t\tiframeHeight: iFramePosition.height,\n\t\t\t\tiframeWidth: iFramePosition.width,\n\t\t\t\tclientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),\n\t\t\t\tclientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),\n\t\t\t\toffsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n\t\t\t\toffsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n\t\t\t\tscrollTop: window.pageYOffset,\n\t\t\t\tscrollLeft: window.pageXOffset\n\t\t\t});\n\t\t}\n\n\t\tfunction sendPageInfoToIframe(iframe,iframeId){\n\t\t\tfunction debouncedTrigger(){\n\t\t\t\ttrigger(\n\t\t\t\t\t'Send Page Info',\n\t\t\t\t\t'pageInfo:' + getPageInfo(), \n\t\t\t\t\tiframe, \n\t\t\t\t\tiframeId\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdebouce(debouncedTrigger,32);\n\t\t}\n\n\n\t\tfunction startPageInfoMonitor(){\n\t\t\tfunction setListener(type,func){\n\t\t\t\tfunction sendPageInfo(){\n\t\t\t\t\tif (settings[id]){\n\t\t\t\t\t\tsendPageInfoToIframe(settings[id].iframe,id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstop();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t['scroll','resize'].forEach(function(evt){\n\t\t\t\t\tlog(id, type + evt + ' listener for sendPageInfo');\n\t\t\t\t\tfunc(window,evt,sendPageInfo);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction stop(){\n\t\t\t\tsetListener('Remove ', removeEventListener);\n\t\t\t}\n\n\t\t\tfunction start(){\n\t\t\t\tsetListener('Add ', addEventListener);\n\t\t\t}\n\t\t\t\n\t\t\tvar id = iframeId; //Create locally scoped copy of iFrame ID\n\n\t\t\tstart();\n\n\t\t\tsettings[id].stopPageInfo = stop;\n\t\t}\n\n\t\tfunction stopPageInfoMonitor(){\n\t\t\tif (settings[iframeId] && settings[iframeId].stopPageInfo){\n\t\t\t\tsettings[iframeId].stopPageInfo();\n\t\t\t\tdelete settings[iframeId].stopPageInfo;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkIFrameExists(){\n\t\t\tvar retBool = true;\n\n\t\t\tif (null === messageData.iframe) {\n\t\t\t\twarn(iframeId,'IFrame ('+messageData.id+') not found');\n\t\t\t\tretBool = false;\n\t\t\t}\n\t\t\treturn retBool;\n\t\t}\n\n\t\tfunction getElementPosition(target){\n\t\t\tvar iFramePosition = target.getBoundingClientRect();\n\n\t\t\tgetPagePosition(iframeId);\n\n\t\t\treturn {\n\t\t\t\tx: Math.floor( Number(iFramePosition.left) + Number(pagePosition.x) ),\n\t\t\t\ty: Math.floor( Number(iFramePosition.top) + Number(pagePosition.y) )\n\t\t\t};\n\t\t}\n\n\t\tfunction scrollRequestFromChild(addOffset){\n\t\t\t/* istanbul ignore next */ //Not testable in Karma\n\t\t\tfunction reposition(){\n\t\t\t\tpagePosition = newPosition;\n\t\t\t\tscrollTo();\n\t\t\t\tlog(iframeId,'--');\n\t\t\t}\n\n\t\t\tfunction calcOffset(){\n\t\t\t\treturn {\n\t\t\t\t\tx: Number(messageData.width) + offset.x,\n\t\t\t\t\ty: Number(messageData.height) + offset.y\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfunction scrollParent(){\n\t\t\t\tif (window.parentIFrame){\n\t\t\t\t\twindow.parentIFrame['scrollTo'+(addOffset?'Offset':'')](newPosition.x,newPosition.y);\n\t\t\t\t} else {\n\t\t\t\t\twarn(iframeId,'Unable to scroll to requested position, window.parentIFrame not found');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\toffset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},\n\t\t\t\tnewPosition = calcOffset();\n\n\t\t\tlog(iframeId,'Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');\n\n\t\t\tif(window.top!==window.self){\n\t\t\t\tscrollParent();\n\t\t\t} else {\n\t\t\t\treposition();\n\t\t\t}\n\t\t}\n\n\t\tfunction scrollTo(){\n\t\t\tif (false !== callback('scrollCallback',pagePosition)){\n\t\t\t\tsetPagePosition(iframeId);\n\t\t\t} else {\n\t\t\t\tunsetPagePosition();\n\t\t\t}\n\t\t}\n\n\t\tfunction findTarget(location){\n\t\t\tfunction jumpToTarget(){\n\t\t\t\tvar jumpPosition = getElementPosition(target);\n\n\t\t\t\tlog(iframeId,'Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);\n\t\t\t\tpagePosition = {\n\t\t\t\t\tx: jumpPosition.x,\n\t\t\t\t\ty: jumpPosition.y\n\t\t\t\t};\n\n\t\t\t\tscrollTo();\n\t\t\t\tlog(iframeId,'--');\n\t\t\t}\n\n\t\t\tfunction jumpToParent(){\n\t\t\t\tif (window.parentIFrame){\n\t\t\t\t\twindow.parentIFrame.moveToAnchor(hash);\n\t\t\t\t} else {\n\t\t\t\t\tlog(iframeId,'In page link #'+hash+' not found and window.parentIFrame not found');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\thash = location.split('#')[1] || '',\n\t\t\t\thashData = decodeURIComponent(hash),\n\t\t\t\ttarget = document.getElementById(hashData) || document.getElementsByName(hashData)[0];\n\n\t\t\tif (target){\n\t\t\t\tjumpToTarget();\n\t\t\t} else if(window.top!==window.self){\n\t\t\t\tjumpToParent();\n\t\t\t} else {\n\t\t\t\tlog(iframeId,'In page link #'+hash+' not found');\n\t\t\t}\n\t\t}\n\n\t\tfunction callback(funcName,val){\n\t\t\treturn chkCallback(iframeId,funcName,val);\n\t\t}\n\n\t\tfunction actionMsg(){\n\n\t\t\tif(settings[iframeId].firstRun) firstRun();\n\n\t\t\tswitch(messageData.type){\n\t\t\tcase 'close':\n\t\t\t\tcloseIFrame(messageData.iframe);\n\t\t\t\tbreak;\n\t\t\tcase 'message':\n\t\t\t\tforwardMsgFromIFrame(getMsgBody(6));\n\t\t\t\tbreak;\n\t\t\tcase 'scrollTo':\n\t\t\t\tscrollRequestFromChild(false);\n\t\t\t\tbreak;\n\t\t\tcase 'scrollToOffset':\n\t\t\t\tscrollRequestFromChild(true);\n\t\t\t\tbreak;\n\t\t\tcase 'pageInfo':\n\t\t\t\tsendPageInfoToIframe(settings[iframeId].iframe,iframeId);\n\t\t\t\tstartPageInfoMonitor();\n\t\t\t\tbreak;\n\t\t\tcase 'pageInfoStop':\n\t\t\t\tstopPageInfoMonitor();\n\t\t\t\tbreak;\n\t\t\tcase 'inPageLink':\n\t\t\t\tfindTarget(getMsgBody(9));\n\t\t\t\tbreak;\n\t\t\tcase 'reset':\n\t\t\t\tresetIFrame(messageData);\n\t\t\t\tbreak;\n\t\t\tcase 'init':\n\t\t\t\tresizeIFrame();\n\t\t\t\tcallback('initCallback',messageData.iframe);\n\t\t\t\tcallback('resizedCallback',messageData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tresizeIFrame();\n\t\t\t\tcallback('resizedCallback',messageData);\n\t\t\t}\n\t\t}\n\n\t\tfunction hasSettings(iframeId){\n\t\t\tvar retBool = true;\n\n\t\t\tif (!settings[iframeId]){\n\t\t\t\tretBool = false;\n\t\t\t\twarn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);\n\t\t\t}\n\n\t\t\treturn retBool;\n\t\t}\n\n\t\tfunction iFrameReadyMsgReceived(){\n\t\t\tfor (var iframeId in settings){\n\t\t\t\ttrigger('iFrame requested init',createOutgoingMsg(iframeId),document.getElementById(iframeId),iframeId);\n\t\t\t}\n\t\t}\n\n\t\tfunction firstRun() {\n\t\t\tsettings[iframeId].firstRun = false;\n\t\t}\n\n\t\tvar\n\t\t\tmsg = event.data,\n\t\t\tmessageData = {},\n\t\t\tiframeId = null;\n\n\t\tif('[iFrameResizerChild]Ready' === msg){\n\t\t\tiFrameReadyMsgReceived();\n\t\t} else if (isMessageForUs()){\n\t\t\tmessageData = processMsg();\n\t\t\tiframeId = logId = messageData.id;\n\n\t\t\tif (!isMessageFromMetaParent() && hasSettings(iframeId)){\n\t\t\t\tlog(iframeId,'Received: '+msg);\n\n\t\t\t\tif ( checkIFrameExists() && isMessageFromIFrame() ){\n\t\t\t\t\tactionMsg();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tinfo(iframeId,'Ignored: '+msg);\n\t\t}\n\n\t}\n\n\n\tfunction chkCallback(iframeId,funcName,val){\n\t\tvar\n\t\t\tfunc = null,\n\t\t\tretVal = null;\n\n\t\tif(settings[iframeId]){\n\t\t\tfunc = settings[iframeId][funcName];\n\n\t\t\tif( 'function' === typeof func){\n\t\t\t\tretVal = func(val);\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(funcName+' on iFrame['+iframeId+'] is not a function');\n\t\t\t}\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\tfunction closeIFrame(iframe){\n\t\tvar iframeId = iframe.id;\n\n\t\tlog(iframeId,'Removing iFrame: '+iframeId);\n\t\tiframe.parentNode.removeChild(iframe);\n\t\tchkCallback(iframeId,'closedCallback',iframeId);\n\t\tlog(iframeId,'--');\n\t\tdelete settings[iframeId];\n\t}\n\n\tfunction getPagePosition(iframeId){\n\t\tif(null === pagePosition){\n\t\t\tpagePosition = {\n\t\t\t\tx: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,\n\t\t\t\ty: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop\n\t\t\t};\n\t\t\tlog(iframeId,'Get page position: '+pagePosition.x+','+pagePosition.y);\n\t\t}\n\t}\n\n\tfunction setPagePosition(iframeId){\n\t\tif(null !== pagePosition){\n\t\t\twindow.scrollTo(pagePosition.x,pagePosition.y);\n\t\t\tlog(iframeId,'Set page position: '+pagePosition.x+','+pagePosition.y);\n\t\t\tunsetPagePosition();\n\t\t}\n\t}\n\n\tfunction unsetPagePosition(){\n\t\tpagePosition = null;\n\t}\n\n\tfunction resetIFrame(messageData){\n\t\tfunction reset(){\n\t\t\tsetSize(messageData);\n\t\t\ttrigger('reset','reset',messageData.iframe,messageData.id);\n\t\t}\n\n\t\tlog(messageData.id,'Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));\n\t\tgetPagePosition(messageData.id);\n\t\tsyncResize(reset,messageData,'reset');\n\t}\n\n\tfunction setSize(messageData){\n\t\tfunction setDimension(dimension){\n\t\t\tmessageData.iframe.style[dimension] = messageData[dimension] + 'px';\n\t\t\tlog(\n\t\t\t\tmessageData.id,\n\t\t\t\t'IFrame (' + iframeId +\n\t\t\t\t') ' + dimension +\n\t\t\t\t' set to ' + messageData[dimension] + 'px'\n\t\t\t);\n\t\t}\n\n\t\tfunction chkZero(dimension){\n\t\t\t//FireFox sets dimension of hidden iFrames to zero.\n\t\t\t//So if we detect that set up an event to check for\n\t\t\t//when iFrame becomes visible.\n\n\t\t\t/* istanbul ignore next */ //Not testable in PhantomJS\n\t\t\tif (!hiddenCheckEnabled && '0' === messageData[dimension]){\n\t\t\t\thiddenCheckEnabled = true;\n\t\t\t\tlog(iframeId,'Hidden iFrame detected, creating visibility listener');\n\t\t\t\tfixHiddenIFrames();\n\t\t\t}\n\t\t}\n\n\t\tfunction processDimension(dimension){\n\t\t\tsetDimension(dimension);\n\t\t\tchkZero(dimension);\n\t\t}\n\n\t\tvar iframeId = messageData.iframe.id;\n\n\t\tif(settings[iframeId]){\n\t\t\tif( settings[iframeId].sizeHeight) { processDimension('height'); }\n\t\t\tif( settings[iframeId].sizeWidth ) { processDimension('width'); }\n\t\t}\n\t}\n\n\tfunction syncResize(func,messageData,doNotSync){\n\t\t/* istanbul ignore if */ //Not testable in PhantomJS\n\t\tif(doNotSync!==messageData.type && requestAnimationFrame){\n\t\t\tlog(messageData.id,'Requesting animation frame');\n\t\t\trequestAnimationFrame(func);\n\t\t} else {\n\t\t\tfunc();\n\t\t}\n\t}\n\n\tfunction trigger(calleeMsg,msg,iframe,id){\n\t\tfunction postMessageToIFrame(){\n\t\t\tvar target = settings[id].targetOrigin;\n\t\t\tlog(id,'[' + calleeMsg + '] Sending msg to iframe['+id+'] ('+msg+') targetOrigin: '+target);\n\t\t\tiframe.contentWindow.postMessage( msgId + msg, target );\n\t\t}\n\n\t\tfunction iFrameNotFound(){\n\t\t\tinfo(id,'[' + calleeMsg + '] IFrame('+id+') not found');\n\t\t\tif(settings[id]) {\n\t\t\t\tdelete settings[id];\n\t\t\t}\n\t\t}\n\n\t\tfunction chkAndSend(){\n\t\t\tif(iframe && 'contentWindow' in iframe && (null !== iframe.contentWindow)){ //Null test for PhantomJS\n\t\t\t\tpostMessageToIFrame();\n\t\t\t} else {\n\t\t\t\tiFrameNotFound();\n\t\t\t}\n\t\t}\n\n\t\tid = id || iframe.id;\n\n\t\tif(settings[id]) {\n\t\t\tchkAndSend();\n\t\t}\n\n\t}\n\n\tfunction createOutgoingMsg(iframeId){\n\t\treturn iframeId +\n\t\t\t':' + settings[iframeId].bodyMarginV1 +\n\t\t\t':' + settings[iframeId].sizeWidth +\n\t\t\t':' + settings[iframeId].log +\n\t\t\t':' + settings[iframeId].interval +\n\t\t\t':' + settings[iframeId].enablePublicMethods +\n\t\t\t':' + settings[iframeId].autoResize +\n\t\t\t':' + settings[iframeId].bodyMargin +\n\t\t\t':' + settings[iframeId].heightCalculationMethod +\n\t\t\t':' + settings[iframeId].bodyBackground +\n\t\t\t':' + settings[iframeId].bodyPadding +\n\t\t\t':' + settings[iframeId].tolerance +\n\t\t\t':' + settings[iframeId].inPageLinks +\n\t\t\t':' + settings[iframeId].resizeFrom +\n\t\t\t':' + settings[iframeId].widthCalculationMethod;\n\t}\n\n\tfunction setupIFrame(iframe,options){\n\t\tfunction setLimits(){\n\t\t\tfunction addStyle(style){\n\t\t\t\tif ((Infinity !== settings[iframeId][style]) && (0 !== settings[iframeId][style])){\n\t\t\t\t\tiframe.style[style] = settings[iframeId][style] + 'px';\n\t\t\t\t\tlog(iframeId,'Set '+style+' = '+settings[iframeId][style]+'px');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chkMinMax(dimension){\n\t\t\t\tif (settings[iframeId]['min'+dimension]>settings[iframeId]['max'+dimension]){\n\t\t\t\t\tthrow new Error('Value for min'+dimension+' can not be greater than max'+dimension);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchkMinMax('Height');\n\t\t\tchkMinMax('Width');\n\n\t\t\taddStyle('maxHeight');\n\t\t\taddStyle('minHeight');\n\t\t\taddStyle('maxWidth');\n\t\t\taddStyle('minWidth');\n\t\t}\n\n\t\tfunction newId(){\n\t\t\tvar id = ((options && options.id) || defaults.id + count++);\n\t\t\tif (null!==document.getElementById(id)){\n\t\t\t\tid = id + count++;\n\t\t\t}\n\t\t\treturn id;\n\t\t}\n\n\t\tfunction ensureHasId(iframeId){\n\t\t\tlogId=iframeId;\n\t\t\tif (''===iframeId){\n\t\t\t\tiframe.id = iframeId = newId();\n\t\t\t\tlogEnabled = (options || {}).log;\n\t\t\t\tlogId=iframeId;\n\t\t\t\tlog(iframeId,'Added missing iframe ID: '+ iframeId +' (' + iframe.src + ')');\n\t\t\t}\n\n\n\t\t\treturn iframeId;\n\t\t}\n\n\t\tfunction setScrolling(){\n\t\t\tlog(iframeId,'IFrame scrolling ' + (settings[iframeId].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId);\n\t\t\tiframe.style.overflow = false === settings[iframeId].scrolling ? 'hidden' : 'auto';\n\t\t\tiframe.scrolling = false === settings[iframeId].scrolling ? 'no' : 'yes';\n\t\t}\n\n\t\t//The V1 iFrame script expects an int, where as in V2 expects a CSS\n\t\t//string value such as '1px 3em', so if we have an int for V2, set V1=V2\n\t\t//and then convert V2 to a string PX value.\n\t\tfunction setupBodyMarginValues(){\n\t\t\tif (('number'===typeof(settings[iframeId].bodyMargin)) || ('0'===settings[iframeId].bodyMargin)){\n\t\t\t\tsettings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;\n\t\t\t\tsettings[iframeId].bodyMargin = '' + settings[iframeId].bodyMargin + 'px';\n\t\t\t}\n\t\t}\n\n\t\tfunction checkReset(){\n\t\t\t// Reduce scope of firstRun to function, because IE8's JS execution\n\t\t\t// context stack is borked and this value gets externally\n\t\t\t// changed midway through running this function!!!\n\t\t\tvar\n\t\t\t\tfirstRun = settings[iframeId].firstRun,\n\t\t\t\tresetRequertMethod = settings[iframeId].heightCalculationMethod in resetRequiredMethods;\n\n\t\t\tif (!firstRun && resetRequertMethod){\n\t\t\t\tresetIFrame({iframe:iframe, height:0, width:0, type:'init'});\n\t\t\t}\n\t\t}\n\n\t\tfunction setupIFrameObject(){\n\t\t\tif(Function.prototype.bind){ //Ignore unpolyfilled IE8.\n\t\t\t\tsettings[iframeId].iframe.iFrameResizer = {\n\n\t\t\t\t\tclose : closeIFrame.bind(null,settings[iframeId].iframe),\n\n\t\t\t\t\tresize : trigger.bind(null,'Window resize', 'resize', settings[iframeId].iframe),\n\n\t\t\t\t\tmoveToAnchor : function(anchor){\n\t\t\t\t\t\ttrigger('Move to anchor','moveToAnchor:'+anchor, settings[iframeId].iframe,iframeId);\n\t\t\t\t\t},\n\n\t\t\t\t\tsendMessage : function(message){\n\t\t\t\t\t\tmessage = JSON.stringify(message);\n\t\t\t\t\t\ttrigger('Send Message','message:'+message, settings[iframeId].iframe,iframeId);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t//We have to call trigger twice, as we can not be sure if all\n\t\t//iframes have completed loading when this code runs. The\n\t\t//event listener also catches the page changing in the iFrame.\n\t\tfunction init(msg){\n\t\t\tfunction iFrameLoaded(){\n\t\t\t\ttrigger('iFrame.onload',msg,iframe);\n\t\t\t\tcheckReset();\n\t\t\t}\n\n\t\t\taddEventListener(iframe,'load',iFrameLoaded);\n\t\t\ttrigger('init',msg,iframe);\n\t\t}\n\n\t\tfunction checkOptions(options){\n\t\t\tif ('object' !== typeof options){\n\t\t\t\tthrow new TypeError('Options is not an object');\n\t\t\t}\n\t\t}\n\n\t\tfunction copyOptions(options){\n\t\t\tfor (var option in defaults) {\n\t\t\t\tif (defaults.hasOwnProperty(option)){\n\t\t\t\t\tsettings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction getTargetOrigin (remoteHost){\n\t\t\treturn ('' === remoteHost || 'file://' === remoteHost) ? '*' : remoteHost;\n\t\t}\n\n\t\tfunction processOptions(options){\n\t\t\toptions = options || {};\n\t\t\tsettings[iframeId] = {\n\t\t\t\tfirstRun\t: true,\n\t\t\t\tiframe\t\t: iframe,\n\t\t\t\tremoteHost\t: iframe.src.split('/').slice(0,3).join('/')\n\t\t\t};\n\n\t\t\tcheckOptions(options);\n\t\t\tcopyOptions(options);\n\n\t\t\tsettings[iframeId].targetOrigin = true === settings[iframeId].checkOrigin ? getTargetOrigin(settings[iframeId].remoteHost) : '*';\n\t\t}\n\n\t\tfunction beenHere(){\n\t\t\treturn (iframeId in settings && 'iFrameResizer' in iframe);\n\t\t}\n\n\t\tvar iframeId = ensureHasId(iframe.id);\n\n\t\tif (!beenHere()){\n\t\t\tprocessOptions(options);\n\t\t\tsetScrolling();\n\t\t\tsetLimits();\n\t\t\tsetupBodyMarginValues();\n\t\t\tinit(createOutgoingMsg(iframeId));\n\t\t\tsetupIFrameObject();\n\t\t} else {\n\t\t\twarn(iframeId,'Ignored iFrame, already setup.');\n\t\t}\n\t}\n\n\tfunction debouce(fn,time){\n\t\tif (null === timer){\n\t\t\ttimer = setTimeout(function(){\n\t\t\t\ttimer = null;\n\t\t\t\tfn();\n\t\t\t}, time);\n\t\t}\n\t}\n\n\t/* istanbul ignore next */ //Not testable in PhantomJS\n\tfunction fixHiddenIFrames(){\n\t\tfunction checkIFrames(){\n\t\t\tfunction checkIFrame(settingId){\n\t\t\t\tfunction chkDimension(dimension){\n\t\t\t\t\treturn '0px' === settings[settingId].iframe.style[dimension];\n\t\t\t\t}\n\n\t\t\t\tfunction isVisible(el) {\n\t\t\t\t\treturn (null !== el.offsetParent);\n\t\t\t\t}\n\n\t\t\t\tif (isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))){\n\t\t\t\t\ttrigger('Visibility change', 'resize', settings[settingId].iframe,settingId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var settingId in settings){\n\t\t\t\tcheckIFrame(settingId);\n\t\t\t}\n\t\t}\n\n\t\tfunction mutationObserved(mutations){\n\t\t\tlog('window','Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);\n\t\t\tdebouce(checkIFrames,16);\n\t\t}\n\n\t\tfunction createMutationObserver(){\n\t\t\tvar\n\t\t\t\ttarget = document.querySelector('body'),\n\n\t\t\t\tconfig = {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tattributeOldValue : false,\n\t\t\t\t\tcharacterData : true,\n\t\t\t\t\tcharacterDataOldValue : false,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tsubtree : true\n\t\t\t\t},\n\n\t\t\t\tobserver = new MutationObserver(mutationObserved);\n\n\t\t\tobserver.observe(target, config);\n\t\t}\n\n\t\tvar MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n\n\t\tif (MutationObserver) createMutationObserver();\n\t}\n\n\n\tfunction resizeIFrames(event){\n\t\tfunction resize(){\n\t\t\tsendTriggerMsg('Window '+event,'resize');\n\t\t}\n\n\t\tlog('window','Trigger event: '+event);\n\t\tdebouce(resize,16);\n\t}\n\n\t/* istanbul ignore next */ //Not testable in PhantomJS\n\tfunction tabVisible() {\n\t\tfunction resize(){\n\t\t\tsendTriggerMsg('Tab Visable','resize');\n\t\t}\n\n\t\tif('hidden' !== document.visibilityState) {\n\t\t\tlog('document','Trigger event: Visiblity change');\n\t\t\tdebouce(resize,16);\n\t\t}\n\t}\n\n\tfunction sendTriggerMsg(eventName,event){\n\t\tfunction isIFrameResizeEnabled(iframeId) {\n\t\t\treturn\t'parent' === settings[iframeId].resizeFrom &&\n\t\t\t\t\tsettings[iframeId].autoResize &&\n\t\t\t\t\t!settings[iframeId].firstRun;\n\t\t}\n\n\t\tfor (var iframeId in settings){\n\t\t\tif(isIFrameResizeEnabled(iframeId)){\n\t\t\t\ttrigger(eventName,event,document.getElementById(iframeId),iframeId);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setupEventListeners(){\n\t\taddEventListener(window,'message',iFrameListener);\n\n\t\taddEventListener(window,'resize', function(){resizeIFrames('resize');});\n\n\t\taddEventListener(document,'visibilitychange',tabVisible);\n\t\taddEventListener(document,'-webkit-visibilitychange',tabVisible); //Andriod 4.4\n\t\taddEventListener(window,'focusin',function(){resizeIFrames('focus');}); //IE8-9\n\t\taddEventListener(window,'focus',function(){resizeIFrames('focus');});\n\t}\n\n\n\tfunction factory(){\n\t\tfunction init(options,element){\n\t\t\tfunction chkType(){\n\t\t\t\tif(!element.tagName) {\n\t\t\t\t\tthrow new TypeError('Object is not a valid DOM element');\n\t\t\t\t} else if ('IFRAME' !== element.tagName.toUpperCase()) {\n\t\t\t\t\tthrow new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(element) {\n\t\t\t\tchkType();\n\t\t\t\tsetupIFrame(element, options);\n\t\t\t\tiFrames.push(element);\n\t\t\t}\n\t\t}\n\n\t\tvar iFrames;\n\n\t\tsetupRequestAnimationFrame();\n\t\tsetupEventListeners();\n\n\t\treturn function iFrameResizeF(options,target){\n\t\t\tiFrames = []; //Only return iFrames past in on this call\n\n\t\t\tswitch (typeof(target)){\n\t\t\tcase 'undefined':\n\t\t\tcase 'string':\n\t\t\t\tArray.prototype.forEach.call(\n\t\t\t\t\tdocument.querySelectorAll( target || 'iframe' ),\n\t\t\t\t\tinit.bind(undefined, options)\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'object':\n\t\t\t\tinit(options,target);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new TypeError('Unexpected data type ('+typeof(target)+')');\n\t\t\t}\n\n\t\t\treturn iFrames;\n\t\t};\n\t}\n\n\tfunction createJQueryPublicMethod($){\n\t\tif (!$.fn) {\n\t\t\tinfo('','Unable to bind to jQuery, it is not fully loaded.');\n\t\t} else {\n\t\t\t$.fn.iFrameResize = function $iFrameResizeF(options) {\n\t\t\t\tfunction init(index, element) {\n\t\t\t\t\tsetupIFrame(element, options);\n\t\t\t\t}\n\n\t\t\t\treturn this.filter('iframe').each(init).end();\n\t\t\t};\n\t\t}\n\t}\n\n\tif (window.jQuery) { createJQueryPublicMethod(jQuery); }\n\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([],factory);\n\t} else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy\n\t\tmodule.exports = factory();\n\t} else {\n\t\twindow.iFrameResize = window.iFrameResize || factory();\n\t}\n\n})(window || {});\n"]} \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/iframeResizer.min.js b/libs/bower_components/iframe-resizer/js/iframeResizer.min.js
new file mode 100644
index 0000000000..40e2ec4798
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/iframeResizer.min.js
@@ -0,0 +1,9 @@
+/*! iFrame Resizer (iframeSizer.min.js ) - v3.5.5 - 2016-06-16
+ * Desc: Force cross domain iframes to size to content.
+ * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame.
+ * Copyright: (c) 2016 David J. Bradshaw - dave@bradshaw.net
+ * License: MIT
+ */
+
+!function(a){"use strict";function b(b,c,d){"addEventListener"in a?b.addEventListener(c,d,!1):"attachEvent"in a&&b.attachEvent("on"+c,d)}function c(b,c,d){"removeEventListener"in a?b.removeEventListener(c,d,!1):"detachEvent"in a&&b.detachEvent("on"+c,d)}function d(){var b,c=["moz","webkit","o","ms"];for(b=0;b<c.length&&!N;b+=1)N=a[c[b]+"RequestAnimationFrame"];N||h("setup","RequestAnimationFrame not supported")}function e(b){var c="Host page: "+b;return a.top!==a.self&&(c=a.parentIFrame&&a.parentIFrame.getId?a.parentIFrame.getId()+": "+b:"Nested host page: "+b),c}function f(a){return K+"["+e(a)+"]"}function g(a){return P[a]?P[a].log:G}function h(a,b){k("log",a,b,g(a))}function i(a,b){k("info",a,b,g(a))}function j(a,b){k("warn",a,b,!0)}function k(b,c,d,e){!0===e&&"object"==typeof a.console&&console[b](f(c),d)}function l(d){function e(){function a(){s(V),p(W)}g("Height"),g("Width"),t(a,V,"init")}function f(){var a=U.substr(L).split(":");return{iframe:P[a[0]].iframe,id:a[0],height:a[1],width:a[2],type:a[3]}}function g(a){var b=Number(P[W]["max"+a]),c=Number(P[W]["min"+a]),d=a.toLowerCase(),e=Number(V[d]);h(W,"Checking "+d+" is in range "+c+"-"+b),c>e&&(e=c,h(W,"Set "+d+" to min value")),e>b&&(e=b,h(W,"Set "+d+" to max value")),V[d]=""+e}function k(){function a(){function a(){var a=0,d=!1;for(h(W,"Checking connection is from allowed list of origins: "+c);a<c.length;a++)if(c[a]===b){d=!0;break}return d}function d(){var a=P[W].remoteHost;return h(W,"Checking connection is from: "+a),b===a}return c.constructor===Array?a():d()}var b=d.origin,c=P[W].checkOrigin;if(c&&""+b!="null"&&!a())throw new Error("Unexpected message received from: "+b+" for "+V.iframe.id+". Message was: "+d.data+". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.");return!0}function l(){return K===(""+U).substr(0,L)&&U.substr(L).split(":")[0]in P}function w(){var a=V.type in{"true":1,"false":1,undefined:1};return a&&h(W,"Ignoring init message from meta parent page"),a}function y(a){return U.substr(U.indexOf(":")+J+a)}function z(a){h(W,"MessageCallback passed: {iframe: "+V.iframe.id+", message: "+a+"}"),N("messageCallback",{iframe:V.iframe,message:JSON.parse(a)}),h(W,"--")}function A(){var b=document.body.getBoundingClientRect(),c=V.iframe.getBoundingClientRect();return JSON.stringify({iframeHeight:c.height,iframeWidth:c.width,clientHeight:Math.max(document.documentElement.clientHeight,a.innerHeight||0),clientWidth:Math.max(document.documentElement.clientWidth,a.innerWidth||0),offsetTop:parseInt(c.top-b.top,10),offsetLeft:parseInt(c.left-b.left,10),scrollTop:a.pageYOffset,scrollLeft:a.pageXOffset})}function B(a,b){function c(){u("Send Page Info","pageInfo:"+A(),a,b)}x(c,32)}function C(){function d(b,c){function d(){P[g]?B(P[g].iframe,g):e()}["scroll","resize"].forEach(function(e){h(g,b+e+" listener for sendPageInfo"),c(a,e,d)})}function e(){d("Remove ",c)}function f(){d("Add ",b)}var g=W;f(),P[g].stopPageInfo=e}function D(){P[W]&&P[W].stopPageInfo&&(P[W].stopPageInfo(),delete P[W].stopPageInfo)}function E(){var a=!0;return null===V.iframe&&(j(W,"IFrame ("+V.id+") not found"),a=!1),a}function F(a){var b=a.getBoundingClientRect();return o(W),{x:Math.floor(Number(b.left)+Number(M.x)),y:Math.floor(Number(b.top)+Number(M.y))}}function G(b){function c(){M=g,H(),h(W,"--")}function d(){return{x:Number(V.width)+f.x,y:Number(V.height)+f.y}}function e(){a.parentIFrame?a.parentIFrame["scrollTo"+(b?"Offset":"")](g.x,g.y):j(W,"Unable to scroll to requested position, window.parentIFrame not found")}var f=b?F(V.iframe):{x:0,y:0},g=d();h(W,"Reposition requested from iFrame (offset x:"+f.x+" y:"+f.y+")"),a.top!==a.self?e():c()}function H(){!1!==N("scrollCallback",M)?p(W):q()}function I(b){function c(){var a=F(g);h(W,"Moving to in page link (#"+e+") at x: "+a.x+" y: "+a.y),M={x:a.x,y:a.y},H(),h(W,"--")}function d(){a.parentIFrame?a.parentIFrame.moveToAnchor(e):h(W,"In page link #"+e+" not found and window.parentIFrame not found")}var e=b.split("#")[1]||"",f=decodeURIComponent(e),g=document.getElementById(f)||document.getElementsByName(f)[0];g?c():a.top!==a.self?d():h(W,"In page link #"+e+" not found")}function N(a,b){return m(W,a,b)}function O(){switch(P[W].firstRun&&T(),V.type){case"close":n(V.iframe);break;case"message":z(y(6));break;case"scrollTo":G(!1);break;case"scrollToOffset":G(!0);break;case"pageInfo":B(P[W].iframe,W),C();break;case"pageInfoStop":D();break;case"inPageLink":I(y(9));break;case"reset":r(V);break;case"init":e(),N("initCallback",V.iframe),N("resizedCallback",V);break;default:e(),N("resizedCallback",V)}}function Q(a){var b=!0;return P[a]||(b=!1,j(V.type+" No settings for "+a+". Message was: "+U)),b}function S(){for(var a in P)u("iFrame requested init",v(a),document.getElementById(a),a)}function T(){P[W].firstRun=!1}var U=d.data,V={},W=null;"[iFrameResizerChild]Ready"===U?S():l()?(V=f(),W=R=V.id,!w()&&Q(W)&&(h(W,"Received: "+U),E()&&k()&&O())):i(W,"Ignored: "+U)}function m(a,b,c){var d=null,e=null;if(P[a]){if(d=P[a][b],"function"!=typeof d)throw new TypeError(b+" on iFrame["+a+"] is not a function");e=d(c)}return e}function n(a){var b=a.id;h(b,"Removing iFrame: "+b),a.parentNode.removeChild(a),m(b,"closedCallback",b),h(b,"--"),delete P[b]}function o(b){null===M&&(M={x:void 0!==a.pageXOffset?a.pageXOffset:document.documentElement.scrollLeft,y:void 0!==a.pageYOffset?a.pageYOffset:document.documentElement.scrollTop},h(b,"Get page position: "+M.x+","+M.y))}function p(b){null!==M&&(a.scrollTo(M.x,M.y),h(b,"Set page position: "+M.x+","+M.y),q())}function q(){M=null}function r(a){function b(){s(a),u("reset","reset",a.iframe,a.id)}h(a.id,"Size reset requested by "+("init"===a.type?"host page":"iFrame")),o(a.id),t(b,a,"reset")}function s(a){function b(b){a.iframe.style[b]=a[b]+"px",h(a.id,"IFrame ("+e+") "+b+" set to "+a[b]+"px")}function c(b){H||"0"!==a[b]||(H=!0,h(e,"Hidden iFrame detected, creating visibility listener"),y())}function d(a){b(a),c(a)}var e=a.iframe.id;P[e]&&(P[e].sizeHeight&&d("height"),P[e].sizeWidth&&d("width"))}function t(a,b,c){c!==b.type&&N?(h(b.id,"Requesting animation frame"),N(a)):a()}function u(a,b,c,d){function e(){var e=P[d].targetOrigin;h(d,"["+a+"] Sending msg to iframe["+d+"] ("+b+") targetOrigin: "+e),c.contentWindow.postMessage(K+b,e)}function f(){i(d,"["+a+"] IFrame("+d+") not found"),P[d]&&delete P[d]}function g(){c&&"contentWindow"in c&&null!==c.contentWindow?e():f()}d=d||c.id,P[d]&&g()}function v(a){return a+":"+P[a].bodyMarginV1+":"+P[a].sizeWidth+":"+P[a].log+":"+P[a].interval+":"+P[a].enablePublicMethods+":"+P[a].autoResize+":"+P[a].bodyMargin+":"+P[a].heightCalculationMethod+":"+P[a].bodyBackground+":"+P[a].bodyPadding+":"+P[a].tolerance+":"+P[a].inPageLinks+":"+P[a].resizeFrom+":"+P[a].widthCalculationMethod}function w(a,c){function d(){function b(b){1/0!==P[w][b]&&0!==P[w][b]&&(a.style[b]=P[w][b]+"px",h(w,"Set "+b+" = "+P[w][b]+"px"))}function c(a){if(P[w]["min"+a]>P[w]["max"+a])throw new Error("Value for min"+a+" can not be greater than max"+a)}c("Height"),c("Width"),b("maxHeight"),b("minHeight"),b("maxWidth"),b("minWidth")}function e(){var a=c&&c.id||S.id+F++;return null!==document.getElementById(a)&&(a+=F++),a}function f(b){return R=b,""===b&&(a.id=b=e(),G=(c||{}).log,R=b,h(b,"Added missing iframe ID: "+b+" ("+a.src+")")),b}function g(){h(w,"IFrame scrolling "+(P[w].scrolling?"enabled":"disabled")+" for "+w),a.style.overflow=!1===P[w].scrolling?"hidden":"auto",a.scrolling=!1===P[w].scrolling?"no":"yes"}function i(){("number"==typeof P[w].bodyMargin||"0"===P[w].bodyMargin)&&(P[w].bodyMarginV1=P[w].bodyMargin,P[w].bodyMargin=""+P[w].bodyMargin+"px")}function k(){var b=P[w].firstRun,c=P[w].heightCalculationMethod in O;!b&&c&&r({iframe:a,height:0,width:0,type:"init"})}function l(){Function.prototype.bind&&(P[w].iframe.iFrameResizer={close:n.bind(null,P[w].iframe),resize:u.bind(null,"Window resize","resize",P[w].iframe),moveToAnchor:function(a){u("Move to anchor","moveToAnchor:"+a,P[w].iframe,w)},sendMessage:function(a){a=JSON.stringify(a),u("Send Message","message:"+a,P[w].iframe,w)}})}function m(c){function d(){u("iFrame.onload",c,a),k()}b(a,"load",d),u("init",c,a)}function o(a){if("object"!=typeof a)throw new TypeError("Options is not an object")}function p(a){for(var b in S)S.hasOwnProperty(b)&&(P[w][b]=a.hasOwnProperty(b)?a[b]:S[b])}function q(a){return""===a||"file://"===a?"*":a}function s(b){b=b||{},P[w]={firstRun:!0,iframe:a,remoteHost:a.src.split("/").slice(0,3).join("/")},o(b),p(b),P[w].targetOrigin=!0===P[w].checkOrigin?q(P[w].remoteHost):"*"}function t(){return w in P&&"iFrameResizer"in a}var w=f(a.id);t()?j(w,"Ignored iFrame, already setup."):(s(c),g(),d(),i(),m(v(w)),l())}function x(a,b){null===Q&&(Q=setTimeout(function(){Q=null,a()},b))}function y(){function b(){function a(a){function b(b){return"0px"===P[a].iframe.style[b]}function c(a){return null!==a.offsetParent}c(P[a].iframe)&&(b("height")||b("width"))&&u("Visibility change","resize",P[a].iframe,a)}for(var b in P)a(b)}function c(a){h("window","Mutation observed: "+a[0].target+" "+a[0].type),x(b,16)}function d(){var a=document.querySelector("body"),b={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0},d=new e(c);d.observe(a,b)}var e=a.MutationObserver||a.WebKitMutationObserver;e&&d()}function z(a){function b(){B("Window "+a,"resize")}h("window","Trigger event: "+a),x(b,16)}function A(){function a(){B("Tab Visable","resize")}"hidden"!==document.visibilityState&&(h("document","Trigger event: Visiblity change"),x(a,16))}function B(a,b){function c(a){return"parent"===P[a].resizeFrom&&P[a].autoResize&&!P[a].firstRun}for(var d in P)c(d)&&u(a,b,document.getElementById(d),d)}function C(){b(a,"message",l),b(a,"resize",function(){z("resize")}),b(document,"visibilitychange",A),b(document,"-webkit-visibilitychange",A),b(a,"focusin",function(){z("focus")}),b(a,"focus",function(){z("focus")})}function D(){function a(a,c){function d(){if(!c.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==c.tagName.toUpperCase())throw new TypeError("Expected <IFRAME> tag, found <"+c.tagName+">")}c&&(d(),w(c,a),b.push(c))}var b;return d(),C(),function(c,d){switch(b=[],typeof d){case"undefined":case"string":Array.prototype.forEach.call(document.querySelectorAll(d||"iframe"),a.bind(void 0,c));break;case"object":a(c,d);break;default:throw new TypeError("Unexpected data type ("+typeof d+")")}return b}}function E(a){a.fn?a.fn.iFrameResize=function(a){function b(b,c){w(c,a)}return this.filter("iframe").each(b).end()}:i("","Unable to bind to jQuery, it is not fully loaded.")}var F=0,G=!1,H=!1,I="message",J=I.length,K="[iFrameSizer]",L=K.length,M=null,N=a.requestAnimationFrame,O={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},P={},Q=null,R="Host Page",S={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,tolerance:0,widthCalculationMethod:"scroll",closedCallback:function(){},initCallback:function(){},messageCallback:function(){j("MessageCallback function not defined")},resizedCallback:function(){},scrollCallback:function(){return!0}};a.jQuery&&E(jQuery),"function"==typeof define&&define.amd?define([],D):"object"==typeof module&&"object"==typeof module.exports?module.exports=D():a.iFrameResize=a.iFrameResize||D()}(window||{});
+//# sourceMappingURL=iframeResizer.map \ No newline at end of file
diff --git a/libs/bower_components/iframe-resizer/js/index.js b/libs/bower_components/iframe-resizer/js/index.js
new file mode 100644
index 0000000000..a9cb2845e2
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/js/index.js
@@ -0,0 +1,2 @@
+exports.iframeResizer = require('./iframeResizer');
+exports.iframeResizerContentWindow = require('./iframeResizer.contentWindow');
diff --git a/libs/bower_components/iframe-resizer/karma.conf.js b/libs/bower_components/iframe-resizer/karma.conf.js
new file mode 100644
index 0000000000..3e558511e6
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/karma.conf.js
@@ -0,0 +1,92 @@
+// Karma configuration
+// Generated on Tue Aug 25 2015 12:11:48 GMT+0100 (BST)
+
+module.exports = function(config) {
+ config.set({
+
+ // base path that will be used to resolve all patterns (eg. files, exclude)
+ basePath: '',
+
+
+ // frameworks to use
+ // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+ frameworks: ['jasmine-jquery', 'jasmine', 'requirejs'],
+
+ // Karma will require() these plugins
+ /*
+ plugins: [
+ 'logcapture',
+ 'karma-verbose-summary-reporter',
+ 'karma-jasmine',
+ 'karma-chrome-launcher'
+ ],
+ */
+
+ // list of files / patterns to load in the browser
+ files: [
+ 'test-main.js',
+ 'spec/lib/*.js',
+ 'js/ie8.polyfils.min.js',
+ {pattern: 'js/*.js', included: false},
+ {pattern: 'src/*.js', included: false},
+ {pattern: 'example/*.html', included: false},
+ {pattern: 'spec/*Spec.js', included: false},
+ {pattern: 'spec/resources/*', included: false},
+ {pattern: 'spec/javascripts/fixtures/*.html', included: false}
+ ],
+
+
+ // list of files to exclude
+ exclude: [
+ ],
+
+
+ // preprocess matching files before serving them to the browser
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+ preprocessors: {
+ 'src/*.js': ['coverage']
+ },
+
+ coverageReporter: {
+ type : 'html',
+ dir : 'coverage/'
+ },
+
+ client: {
+ captureConsole: true
+ },
+
+
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['logcapture', 'progress', 'verbose-summary', 'coverage'],
+
+
+ // web server port
+ port: 9876,
+
+
+ // enable / disable colors in the output (reporters and logs)
+ colors: true,
+
+
+ // level of logging
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+ logLevel: config.LOG_INFO,
+
+
+ // enable / disable watching file and executing tests whenever any file changes
+ autoWatch: true,
+
+
+ // start these browsers
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+ browsers: [ ], //'Chrome', 'Firefox', 'Safari', 'PhantomJS'
+
+ // Continuous Integration mode
+ // if true, Karma captures browsers, runs the tests and exits
+ singleRun: true
+
+ })
+}
diff --git a/libs/bower_components/iframe-resizer/src/ie8.polyfils.js b/libs/bower_components/iframe-resizer/src/ie8.polyfils.js
new file mode 100644
index 0000000000..43dbb13d21
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/src/ie8.polyfils.js
@@ -0,0 +1,64 @@
+/*
+ * IE8 Polyfils for iframeResizer.js
+ *
+ * Public domain code - Mozilla Contributors
+ * https://developer.mozilla.org/
+ */
+
+ if (!Array.prototype.forEach){
+ Array.prototype.forEach = function(fun /*, thisArg */){
+ "use strict";
+ if (this === void 0 || this === null || typeof fun !== "function") throw new TypeError();
+
+ var
+ t = Object(this),
+ len = t.length >>> 0,
+ thisArg = arguments.length >= 2 ? arguments[1] : void 0;
+
+ for (var i = 0; i < len; i++)
+ if (i in t)
+ fun.call(thisArg, t[i], i, t);
+ };
+}
+
+
+if (!Function.prototype.bind) {
+ Function.prototype.bind = function(oThis) {
+ if (typeof this !== 'function') {
+ // closest thing possible to the ECMAScript 5
+ // internal IsCallable function
+ throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+ }
+
+ var aArgs = Array.prototype.slice.call(arguments, 1),
+ fToBind = this,
+ fNOP = function() {},
+ fBound = function() {
+ return fToBind.apply(this instanceof fNOP ? this : oThis,
+ aArgs.concat(Array.prototype.slice.call(arguments)));
+ };
+
+ fNOP.prototype = this.prototype;
+ fBound.prototype = new fNOP();
+
+ return fBound;
+ };
+}
+
+if (!Array.prototype.forEach) {
+ Array.prototype.forEach = function(callback, thisArg) {
+ if (this === null) throw new TypeError(' this is null or not defined');
+ if (typeof callback !== 'function') throw new TypeError(callback + ' is not a function');
+
+ var
+ O = Object(this),
+ len = O.length >>> 0;
+
+ for (var k=0 ; k < len ; k++) {
+ if (k in O)
+ callback.call(thisArg, O[k], k, O);
+ }
+ };
+}
+
+
diff --git a/libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js b/libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js
new file mode 100644
index 0000000000..02d2602d8d
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/src/iframeResizer.contentWindow.js
@@ -0,0 +1,1123 @@
+/*
+ * File: iframeResizer.contentWindow.js
+ * Desc: Include this file in any page being loaded into an iframe
+ * to force the iframe to resize to the content size.
+ * Requires: iframeResizer.js on host page.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Ian Caunce - ian@hallnet.co.uk
+ */
+
+
+;(function(window, undefined) {
+ 'use strict';
+
+ var
+ autoResize = true,
+ base = 10,
+ bodyBackground = '',
+ bodyMargin = 0,
+ bodyMarginStr = '',
+ bodyObserver = null,
+ bodyPadding = '',
+ calculateWidth = false,
+ doubleEventList = {'resize':1,'click':1},
+ eventCancelTimer = 128,
+ firstRun = true,
+ height = 1,
+ heightCalcModeDefault = 'bodyOffset',
+ heightCalcMode = heightCalcModeDefault,
+ initLock = true,
+ initMsg = '',
+ inPageLinks = {},
+ interval = 32,
+ intervalTimer = null,
+ logging = false,
+ msgID = '[iFrameSizer]', //Must match host page msg ID
+ msgIdLen = msgID.length,
+ myID = '',
+ observer = null,
+ resetRequiredMethods = {max:1,min:1,bodyScroll:1,documentElementScroll:1},
+ resizeFrom = 'child',
+ sendPermit = true,
+ target = window.parent,
+ targetOriginDefault = '*',
+ tolerance = 0,
+ triggerLocked = false,
+ triggerLockedTimer = null,
+ throttledTimer = 16,
+ width = 1,
+ widthCalcModeDefault = 'scroll',
+ widthCalcMode = widthCalcModeDefault,
+ win = window,
+ messageCallback = function(){ warn('MessageCallback function not defined'); },
+ readyCallback = function(){},
+ pageInfoCallback = function(){},
+ customCalcMethods = {
+ height: function(){
+ warn('Custom height calculation function not defined');
+ return document.documentElement.offsetHeight;
+ },
+ width: function(){
+ warn('Custom width calculation function not defined');
+ return document.body.scrollWidth;
+ }
+ };
+
+
+ function addEventListener(el,evt,func){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if ('addEventListener' in window){
+ el.addEventListener(evt,func, false);
+ } else if ('attachEvent' in window){ //IE
+ el.attachEvent('on'+evt,func);
+ }
+ }
+
+ function removeEventListener(el,evt,func){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if ('removeEventListener' in window){
+ el.removeEventListener(evt,func, false);
+ } else if ('detachEvent' in window){ //IE
+ el.detachEvent('on'+evt,func);
+ }
+ }
+
+ function capitalizeFirstLetter(string) {
+ return string.charAt(0).toUpperCase() + string.slice(1);
+ }
+
+ //Based on underscore.js
+ function throttle(func) {
+ var
+ context, args, result,
+ timeout = null,
+ previous = 0,
+ later = function() {
+ previous = getNow();
+ timeout = null;
+ result = func.apply(context, args);
+ if (!timeout) {
+ context = args = null;
+ }
+ };
+
+ return function() {
+ var now = getNow();
+
+ if (!previous) {
+ previous = now;
+ }
+
+ var remaining = throttledTimer - (now - previous);
+
+ context = this;
+ args = arguments;
+
+ if (remaining <= 0 || remaining > throttledTimer) {
+ if (timeout) {
+ clearTimeout(timeout);
+ timeout = null;
+ }
+
+ previous = now;
+ result = func.apply(context, args);
+
+ if (!timeout) {
+ context = args = null;
+ }
+
+ } else if (!timeout) {
+ timeout = setTimeout(later, remaining);
+ }
+
+ return result;
+ };
+ }
+
+ var getNow = Date.now || function() {
+ /* istanbul ignore next */ // Not testable in PhantonJS
+ return new Date().getTime();
+ };
+
+ function formatLogMsg(msg){
+ return msgID + '[' + myID + ']' + ' ' + msg;
+ }
+
+ function log(msg){
+ if (logging && ('object' === typeof window.console)){
+ console.log(formatLogMsg(msg));
+ }
+ }
+
+ function warn(msg){
+ if ('object' === typeof window.console){
+ console.warn(formatLogMsg(msg));
+ }
+ }
+
+
+ function init(){
+ readDataFromParent();
+ log('Initialising iFrame ('+location.href+')');
+ readDataFromPage();
+ setMargin();
+ setBodyStyle('background',bodyBackground);
+ setBodyStyle('padding',bodyPadding);
+ injectClearFixIntoBodyElement();
+ checkHeightMode();
+ checkWidthMode();
+ stopInfiniteResizingOfIFrame();
+ setupPublicMethods();
+ startEventListeners();
+ inPageLinks = setupInPageLinks();
+ sendSize('init','Init message from host page');
+ readyCallback();
+ }
+
+ function readDataFromParent(){
+
+ function strBool(str){
+ return 'true' === str ? true : false;
+ }
+
+ var data = initMsg.substr(msgIdLen).split(':');
+
+ myID = data[0];
+ bodyMargin = (undefined !== data[1]) ? Number(data[1]) : bodyMargin; //For V1 compatibility
+ calculateWidth = (undefined !== data[2]) ? strBool(data[2]) : calculateWidth;
+ logging = (undefined !== data[3]) ? strBool(data[3]) : logging;
+ interval = (undefined !== data[4]) ? Number(data[4]) : interval;
+ autoResize = (undefined !== data[6]) ? strBool(data[6]) : autoResize;
+ bodyMarginStr = data[7];
+ heightCalcMode = (undefined !== data[8]) ? data[8] : heightCalcMode;
+ bodyBackground = data[9];
+ bodyPadding = data[10];
+ tolerance = (undefined !== data[11]) ? Number(data[11]) : tolerance;
+ inPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;
+ resizeFrom = (undefined !== data[13]) ? data[13] : resizeFrom;
+ widthCalcMode = (undefined !== data[14]) ? data[14] : widthCalcMode;
+ }
+
+ function readDataFromPage(){
+ function readData(){
+ var data = window.iFrameResizer;
+
+ log('Reading data from page: ' + JSON.stringify(data));
+
+ messageCallback = ('messageCallback' in data) ? data.messageCallback : messageCallback;
+ readyCallback = ('readyCallback' in data) ? data.readyCallback : readyCallback;
+ targetOriginDefault = ('targetOrigin' in data) ? data.targetOrigin : targetOriginDefault;
+ heightCalcMode = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;
+ widthCalcMode = ('widthCalculationMethod' in data) ? data.widthCalculationMethod : widthCalcMode;
+ }
+
+ function setupCustomCalcMethods(calcMode, calcFunc){
+ if ('function' === typeof calcMode) {
+ log('Setup custom ' + calcFunc + 'CalcMethod');
+ customCalcMethods[calcFunc] = calcMode;
+ calcMode = 'custom';
+ }
+
+ return calcMode;
+ }
+
+ if(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {
+ readData();
+ heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
+ widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');
+ }
+
+ log('TargetOrigin for parent set to: ' + targetOriginDefault);
+ }
+
+
+ function chkCSS(attr,value){
+ if (-1 !== value.indexOf('-')){
+ warn('Negative CSS value ignored for '+attr);
+ value='';
+ }
+ return value;
+ }
+
+ function setBodyStyle(attr,value){
+ if ((undefined !== value) && ('' !== value) && ('null' !== value)){
+ document.body.style[attr] = value;
+ log('Body '+attr+' set to "'+value+'"');
+ }
+ }
+
+ function setMargin(){
+ //If called via V1 script, convert bodyMargin from int to str
+ if (undefined === bodyMarginStr){
+ bodyMarginStr = bodyMargin+'px';
+ }
+
+ setBodyStyle('margin',chkCSS('margin',bodyMarginStr));
+ }
+
+ function stopInfiniteResizingOfIFrame(){
+ document.documentElement.style.height = '';
+ document.body.style.height = '';
+ log('HTML & body height set to "auto"');
+ }
+
+
+ function manageTriggerEvent(options){
+ function handleEvent(){
+ sendSize(options.eventName,options.eventType);
+ }
+
+ var listener = {
+ add: function(eventName){
+ addEventListener(window,eventName,handleEvent);
+ },
+ remove: function(eventName){
+ removeEventListener(window,eventName,handleEvent);
+ }
+ };
+
+ if(options.eventNames && Array.prototype.map){
+ options.eventName = options.eventNames[0];
+ options.eventNames.map(listener[options.method]);
+ } else {
+ listener[options.method](options.eventName);
+ }
+
+ log(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);
+ }
+
+ function manageEventListeners(method){
+ manageTriggerEvent({method:method, eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });
+ manageTriggerEvent({method:method, eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });
+ manageTriggerEvent({method:method, eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });
+ manageTriggerEvent({method:method, eventType: 'Input', eventName: 'input' });
+ manageTriggerEvent({method:method, eventType: 'Mouse Up', eventName: 'mouseup' });
+ manageTriggerEvent({method:method, eventType: 'Mouse Down', eventName: 'mousedown' });
+ manageTriggerEvent({method:method, eventType: 'Orientation Change', eventName: 'orientationchange' });
+ manageTriggerEvent({method:method, eventType: 'Print', eventName: ['afterprint', 'beforeprint'] });
+ manageTriggerEvent({method:method, eventType: 'Ready State Change', eventName: 'readystatechange' });
+ manageTriggerEvent({method:method, eventType: 'Touch Start', eventName: 'touchstart' });
+ manageTriggerEvent({method:method, eventType: 'Touch End', eventName: 'touchend' });
+ manageTriggerEvent({method:method, eventType: 'Touch Cancel', eventName: 'touchcancel' });
+ manageTriggerEvent({method:method, eventType: 'Transition Start', eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });
+ manageTriggerEvent({method:method, eventType: 'Transition Iteration', eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });
+ manageTriggerEvent({method:method, eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
+ if('child' === resizeFrom){
+ manageTriggerEvent({method:method, eventType: 'IFrame Resized', eventName: 'resize' });
+ }
+ }
+
+ function checkCalcMode(calcMode,calcModeDefault,modes,type){
+ if (calcModeDefault !== calcMode){
+ if (!(calcMode in modes)){
+ warn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');
+ calcMode=calcModeDefault;
+ }
+ log(type+' calculation method set to "'+calcMode+'"');
+ }
+
+ return calcMode;
+ }
+
+ function checkHeightMode(){
+ heightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');
+ }
+
+ function checkWidthMode(){
+ widthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');
+ }
+
+ function startEventListeners(){
+ if ( true === autoResize ) {
+ manageEventListeners('add');
+ setupMutationObserver();
+ }
+ else {
+ log('Auto Resize disabled');
+ }
+ }
+
+ function stopMsgsToParent(){
+ log('Disable outgoing messages');
+ sendPermit = false;
+ }
+
+ function removeMsgListener(){
+ log('Remove event listener: Message');
+ removeEventListener(window, 'message', receiver);
+ }
+
+ function disconnectMutationObserver(){
+ if (null !== bodyObserver){
+ /* istanbul ignore next */ // Not testable in PhantonJS
+ bodyObserver.disconnect();
+ }
+ }
+
+ function stopEventListeners(){
+ manageEventListeners('remove');
+ disconnectMutationObserver();
+ clearInterval(intervalTimer);
+ }
+
+ function teardown(){
+ stopMsgsToParent();
+ removeMsgListener();
+ if (true === autoResize) stopEventListeners();
+ }
+
+ function injectClearFixIntoBodyElement(){
+ var clearFix = document.createElement('div');
+ clearFix.style.clear = 'both';
+ clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.
+ document.body.appendChild(clearFix);
+ }
+
+ function setupInPageLinks(){
+
+ function getPagePosition (){
+ return {
+ x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+ y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+ };
+ }
+
+ function getElementPosition(el){
+ var
+ elPosition = el.getBoundingClientRect(),
+ pagePosition = getPagePosition();
+
+ return {
+ x: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),
+ y: parseInt(elPosition.top,10) + parseInt(pagePosition.y,10)
+ };
+ }
+
+ function findTarget(location){
+ function jumpToTarget(target){
+ var jumpPosition = getElementPosition(target);
+
+ log('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+ sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+ }
+
+ var
+ hash = location.split('#')[1] || location, //Remove # if present
+ hashData = decodeURIComponent(hash),
+ target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+ if (undefined !== target){
+ jumpToTarget(target);
+ } else {
+ log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
+ sendMsg(0,0,'inPageLink','#'+hash);
+ }
+ }
+
+ function checkLocationHash(){
+ if ('' !== location.hash && '#' !== location.hash){
+ findTarget(location.href);
+ }
+ }
+
+ function bindAnchors(){
+ function setupLink(el){
+ function linkClicked(e){
+ e.preventDefault();
+
+ /*jshint validthis:true */
+ findTarget(this.getAttribute('href'));
+ }
+
+ if ('#' !== el.getAttribute('href')){
+ addEventListener(el,'click',linkClicked);
+ }
+ }
+
+ Array.prototype.forEach.call( document.querySelectorAll( 'a[href^="#"]' ), setupLink );
+ }
+
+ function bindLocationHash(){
+ addEventListener(window,'hashchange',checkLocationHash);
+ }
+
+ function initCheck(){ //check if page loaded with location hash after init resize
+ setTimeout(checkLocationHash,eventCancelTimer);
+ }
+
+ function enableInPageLinks(){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if(Array.prototype.forEach && document.querySelectorAll){
+ log('Setting up location.hash handlers');
+ bindAnchors();
+ bindLocationHash();
+ initCheck();
+ } else {
+ warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
+ }
+ }
+
+ if(inPageLinks.enable){
+ enableInPageLinks();
+ } else {
+ log('In page linking not enabled');
+ }
+
+ return {
+ findTarget:findTarget
+ };
+ }
+
+ function setupPublicMethods(){
+ log('Enable public methods');
+
+ win.parentIFrame = {
+
+ autoResize: function autoResizeF(resize){
+ if (true === resize && false === autoResize) {
+ autoResize=true;
+ startEventListeners();
+ //sendSize('autoResize','Auto Resize enabled');
+ } else if (false === resize && true === autoResize) {
+ autoResize=false;
+ stopEventListeners();
+ }
+
+ return autoResize;
+ },
+
+ close: function closeF(){
+ sendMsg(0,0,'close');
+ teardown();
+ },
+
+ getId: function getIdF(){
+ return myID;
+ },
+
+ getPageInfo: function getPageInfoF(callback){
+ if ('function' === typeof callback){
+ pageInfoCallback = callback;
+ sendMsg(0,0,'pageInfo');
+ } else {
+ pageInfoCallback = function(){};
+ sendMsg(0,0,'pageInfoStop');
+ }
+ },
+
+ moveToAnchor: function moveToAnchorF(hash){
+ inPageLinks.findTarget(hash);
+ },
+
+ reset: function resetF(){
+ resetIFrame('parentIFrame.reset');
+ },
+
+ scrollTo: function scrollToF(x,y){
+ sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
+ },
+
+ scrollToOffset: function scrollToF(x,y){
+ sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
+ },
+
+ sendMessage: function sendMessageF(msg,targetOrigin){
+ sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
+ },
+
+ setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){
+ heightCalcMode = heightCalculationMethod;
+ checkHeightMode();
+ },
+
+ setWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){
+ widthCalcMode = widthCalculationMethod;
+ checkWidthMode();
+ },
+
+ setTargetOrigin: function setTargetOriginF(targetOrigin){
+ log('Set targetOrigin: '+targetOrigin);
+ targetOriginDefault = targetOrigin;
+ },
+
+ size: function sizeF(customHeight, customWidth){
+ var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
+ //lockTrigger();
+ sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
+ }
+ };
+ }
+
+ function initInterval(){
+ if ( 0 !== interval ){
+ log('setInterval: '+interval+'ms');
+ intervalTimer = setInterval(function(){
+ sendSize('interval','setInterval: '+interval);
+ },Math.abs(interval));
+ }
+ }
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function setupBodyMutationObserver(){
+ function addImageLoadListners(mutation) {
+ function addImageLoadListener(element){
+ if (false === element.complete) {
+ log('Attach listeners to ' + element.src);
+ element.addEventListener('load', imageLoaded, false);
+ element.addEventListener('error', imageError, false);
+ elements.push(element);
+ }
+ }
+
+ if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
+ addImageLoadListener(mutation.target);
+ } else if (mutation.type === 'childList'){
+ Array.prototype.forEach.call(
+ mutation.target.querySelectorAll('img'),
+ addImageLoadListener
+ );
+ }
+ }
+
+ function removeFromArray(element){
+ elements.splice(elements.indexOf(element),1);
+ }
+
+ function removeImageLoadListener(element){
+ log('Remove listeners from ' + element.src);
+ element.removeEventListener('load', imageLoaded, false);
+ element.removeEventListener('error', imageError, false);
+ removeFromArray(element);
+ }
+
+ function imageEventTriggered(event,type,typeDesc){
+ removeImageLoadListener(event.target);
+ sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);
+ }
+
+ function imageLoaded(event) {
+ imageEventTriggered(event,'imageLoad','Image loaded');
+ }
+
+ function imageError(event) {
+ imageEventTriggered(event,'imageLoadFailed','Image load failed');
+ }
+
+ function mutationObserved(mutations) {
+ sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
+
+ //Deal with WebKit asyncing image loading when tags are injected into the page
+ mutations.forEach(addImageLoadListners);
+ }
+
+ function createMutationObserver(){
+ var
+ target = document.querySelector('body'),
+
+ config = {
+ attributes : true,
+ attributeOldValue : false,
+ characterData : true,
+ characterDataOldValue : false,
+ childList : true,
+ subtree : true
+ };
+
+ observer = new MutationObserver(mutationObserved);
+
+ log('Create body MutationObserver');
+ observer.observe(target, config);
+
+ return observer;
+ }
+
+ var
+ elements = [],
+ MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
+ observer = createMutationObserver();
+
+ return {
+ disconnect: function (){
+ if ('disconnect' in observer){
+ log('Disconnect body MutationObserver');
+ observer.disconnect();
+ elements.forEach(removeImageLoadListener);
+ }
+ }
+ };
+ }
+
+ function setupMutationObserver(){
+ var forceIntervalTimer = 0 > interval;
+
+ /* istanbul ignore if */ // Not testable in PhantomJS
+ if (window.MutationObserver || window.WebKitMutationObserver){
+ if (forceIntervalTimer) {
+ initInterval();
+ } else {
+ bodyObserver = setupBodyMutationObserver();
+ }
+ } else {
+ log('MutationObserver not supported in this browser!');
+ initInterval();
+ }
+ }
+
+
+ // document.documentElement.offsetHeight is not reliable, so
+ // we have to jump through hoops to get a better value.
+ function getComputedStyle(prop,el) {
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function convertUnitsToPxForIE8(value) {
+ var PIXEL = /^\d+(px)?$/i;
+
+ if (PIXEL.test(value)) {
+ return parseInt(value,base);
+ }
+
+ var
+ style = el.style.left,
+ runtimeStyle = el.runtimeStyle.left;
+
+ el.runtimeStyle.left = el.currentStyle.left;
+ el.style.left = value || 0;
+ value = el.style.pixelLeft;
+ el.style.left = style;
+ el.runtimeStyle.left = runtimeStyle;
+
+ return value;
+ }
+
+ var retVal = 0;
+ el = el || document.body;
+
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
+ retVal = document.defaultView.getComputedStyle(el, null);
+ retVal = (null !== retVal) ? retVal[prop] : 0;
+ } else {//IE8
+ retVal = convertUnitsToPxForIE8(el.currentStyle[prop]);
+ }
+
+ return parseInt(retVal,base);
+ }
+
+ function chkEventThottle(timer){
+ if(timer > throttledTimer/2){
+ throttledTimer = 2*timer;
+ log('Event throttle increased to ' + throttledTimer + 'ms');
+ }
+ }
+
+ //Idea from https://github.com/guardian/iframe-messenger
+ function getMaxElement(side,elements) {
+ var
+ elementsLength = elements.length,
+ elVal = 0,
+ maxVal = 0,
+ Side = capitalizeFirstLetter(side),
+ timer = getNow();
+
+ for (var i = 0; i < elementsLength; i++) {
+ elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);
+ if (elVal > maxVal) {
+ maxVal = elVal;
+ }
+ }
+
+ timer = getNow() - timer;
+
+ log('Parsed '+elementsLength+' HTML elements');
+ log('Element position calculated in ' + timer + 'ms');
+
+ chkEventThottle(timer);
+
+ return maxVal;
+ }
+
+ function getAllMeasurements(dimention){
+ return [
+ dimention.bodyOffset(),
+ dimention.bodyScroll(),
+ dimention.documentElementOffset(),
+ dimention.documentElementScroll()
+ ];
+ }
+
+ function getTaggedElements(side,tag){
+ function noTaggedElementsFound(){
+ warn('No tagged elements ('+tag+') found on page');
+ return height; //current height
+ }
+
+ var elements = document.querySelectorAll('['+tag+']');
+
+ return 0 === elements.length ? noTaggedElementsFound() : getMaxElement(side,elements);
+ }
+
+ function getAllElements(){
+ return document.querySelectorAll('body *');
+ }
+
+ var
+ getHeight = {
+ bodyOffset: function getBodyOffsetHeight(){
+ return document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
+ },
+
+ offset: function(){
+ return getHeight.bodyOffset(); //Backwards compatability
+ },
+
+ bodyScroll: function getBodyScrollHeight(){
+ return document.body.scrollHeight;
+ },
+
+ custom: function getCustomWidth(){
+ return customCalcMethods.height();
+ },
+
+ documentElementOffset: function getDEOffsetHeight(){
+ return document.documentElement.offsetHeight;
+ },
+
+ documentElementScroll: function getDEScrollHeight(){
+ return document.documentElement.scrollHeight;
+ },
+
+ max: function getMaxHeight(){
+ return Math.max.apply(null,getAllMeasurements(getHeight));
+ },
+
+ min: function getMinHeight(){
+ return Math.min.apply(null,getAllMeasurements(getHeight));
+ },
+
+ grow: function growHeight(){
+ return getHeight.max(); //Run max without the forced downsizing
+ },
+
+ lowestElement: function getBestHeight(){
+ return Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));
+ },
+
+ taggedElement: function getTaggedElementsHeight(){
+ return getTaggedElements('bottom','data-iframe-height');
+ }
+ },
+
+ getWidth = {
+ bodyScroll: function getBodyScrollWidth(){
+ return document.body.scrollWidth;
+ },
+
+ bodyOffset: function getBodyOffsetWidth(){
+ return document.body.offsetWidth;
+ },
+
+ custom: function getCustomWidth(){
+ return customCalcMethods.width();
+ },
+
+ documentElementScroll: function getDEScrollWidth(){
+ return document.documentElement.scrollWidth;
+ },
+
+ documentElementOffset: function getDEOffsetWidth(){
+ return document.documentElement.offsetWidth;
+ },
+
+ scroll: function getMaxWidth(){
+ return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());
+ },
+
+ max: function getMaxWidth(){
+ return Math.max.apply(null,getAllMeasurements(getWidth));
+ },
+
+ min: function getMinWidth(){
+ return Math.min.apply(null,getAllMeasurements(getWidth));
+ },
+
+ rightMostElement: function rightMostElement(){
+ return getMaxElement('right', getAllElements());
+ },
+
+ taggedElement: function getTaggedElementsWidth(){
+ return getTaggedElements('right', 'data-iframe-width');
+ }
+ };
+
+
+ function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){
+
+ function resizeIFrame(){
+ height = currentHeight;
+ width = currentWidth;
+
+ sendMsg(height,width,triggerEvent);
+ }
+
+ function isSizeChangeDetected(){
+ function checkTolarance(a,b){
+ var retVal = Math.abs(a-b) <= tolerance;
+ return !retVal;
+ }
+
+ currentHeight = (undefined !== customHeight) ? customHeight : getHeight[heightCalcMode]();
+ currentWidth = (undefined !== customWidth ) ? customWidth : getWidth[widthCalcMode]();
+
+ return checkTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));
+ }
+
+ function isForceResizableEvent(){
+ return !(triggerEvent in {'init':1,'interval':1,'size':1});
+ }
+
+ function isForceResizableCalcMode(){
+ return (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);
+ }
+
+ function logIgnored(){
+ log('No change in size detected');
+ }
+
+ function checkDownSizing(){
+ if (isForceResizableEvent() && isForceResizableCalcMode()){
+ resetIFrame(triggerEventDesc);
+ } else if (!(triggerEvent in {'interval':1})){
+ logIgnored();
+ }
+ }
+
+ var currentHeight,currentWidth;
+
+ if (isSizeChangeDetected() || 'init' === triggerEvent){
+ lockTrigger();
+ resizeIFrame();
+ } else {
+ checkDownSizing();
+ }
+ }
+
+ var sizeIFrameThrottled = throttle(sizeIFrame);
+
+ function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){
+ function recordTrigger(){
+ if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){
+ log( 'Trigger event: ' + triggerEventDesc );
+ }
+ }
+
+ function isDoubleFiredEvent(){
+ return triggerLocked && (triggerEvent in doubleEventList);
+ }
+
+ if (!isDoubleFiredEvent()){
+ recordTrigger();
+ sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
+ } else {
+ log('Trigger event cancelled: '+triggerEvent);
+ }
+ }
+
+ function lockTrigger(){
+ if (!triggerLocked){
+ triggerLocked = true;
+ log('Trigger event lock on');
+ }
+ clearTimeout(triggerLockedTimer);
+ triggerLockedTimer = setTimeout(function(){
+ triggerLocked = false;
+ log('Trigger event lock off');
+ log('--');
+ },eventCancelTimer);
+ }
+
+ function triggerReset(triggerEvent){
+ height = getHeight[heightCalcMode]();
+ width = getWidth[widthCalcMode]();
+
+ sendMsg(height,width,triggerEvent);
+ }
+
+ function resetIFrame(triggerEventDesc){
+ var hcm = heightCalcMode;
+ heightCalcMode = heightCalcModeDefault;
+
+ log('Reset trigger event: ' + triggerEventDesc);
+ lockTrigger();
+ triggerReset('reset');
+
+ heightCalcMode = hcm;
+ }
+
+ function sendMsg(height,width,triggerEvent,msg,targetOrigin){
+ function setTargetOrigin(){
+ if (undefined === targetOrigin){
+ targetOrigin = targetOriginDefault;
+ } else {
+ log('Message targetOrigin: '+targetOrigin);
+ }
+ }
+
+ function sendToParent(){
+ var
+ size = height + ':' + width,
+ message = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
+
+ log('Sending message to host page (' + message + ')');
+ target.postMessage( msgID + message, targetOrigin);
+ }
+
+ if(true === sendPermit){
+ setTargetOrigin();
+ sendToParent();
+ }
+ }
+
+ function receiver(event) {
+ function isMessageForUs(){
+ return msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages
+ }
+
+ function initFromParent(){
+ function fireInit(){
+ initMsg = event.data;
+ target = event.source;
+
+ init();
+ firstRun = false;
+ setTimeout(function(){ initLock = false;},eventCancelTimer);
+ }
+
+ if (document.body){
+ fireInit();
+ } else {
+ log('Waiting for page ready');
+ addEventListener(window,'readystatechange',initFromParent);
+ }
+ }
+
+ function resetFromParent(){
+ if (!initLock){
+ log('Page size reset by host page');
+ triggerReset('resetPage');
+ } else {
+ log('Page reset ignored by init');
+ }
+ }
+
+ function resizeFromParent(){
+ sendSize('resizeParent','Parent window requested size check');
+ }
+
+ function moveToAnchor(){
+ var anchor = getData();
+ inPageLinks.findTarget(anchor);
+ }
+
+ function getMessageType(){
+ return event.data.split(']')[1].split(':')[0];
+ }
+
+ function getData(){
+ return event.data.substr(event.data.indexOf(':')+1);
+ }
+
+ function isMiddleTier(){
+ return ('iFrameResize' in window);
+ }
+
+ function messageFromParent(){
+ var msgBody = getData();
+
+ log('MessageCallback called from parent: ' + msgBody );
+ messageCallback(JSON.parse(msgBody));
+ log(' --');
+ }
+
+ function pageInfoFromParent(){
+ var msgBody = getData();
+ log('PageInfoFromParent called from parent: ' + msgBody );
+ pageInfoCallback(JSON.parse(msgBody));
+ log(' --');
+ }
+
+ function isInitMsg(){
+ //Test if this message is from a child below us. This is an ugly test, however, updating
+ //the message format would break backwards compatibity.
+ return event.data.split(':')[2] in {'true':1,'false':1};
+ }
+
+ function callFromParent(){
+ switch (getMessageType()){
+ case 'reset':
+ resetFromParent();
+ break;
+ case 'resize':
+ resizeFromParent();
+ break;
+ case 'inPageLink':
+ case 'moveToAnchor':
+ moveToAnchor();
+ break;
+ case 'message':
+ messageFromParent();
+ break;
+ case 'pageInfo':
+ pageInfoFromParent();
+ break;
+ default:
+ if (!isMiddleTier() && !isInitMsg()){
+ warn('Unexpected message ('+event.data+')');
+ }
+ }
+ }
+
+ function processMessage(){
+ if (false === firstRun) {
+ callFromParent();
+ } else if (isInitMsg()) {
+ initFromParent();
+ } else {
+ log('Ignored message of type "' + getMessageType() + '". Received before initialization.');
+ }
+ }
+
+ if (isMessageForUs()){
+ processMessage();
+ }
+ }
+
+ //Normally the parent kicks things off when it detects the iFrame has loaded.
+ //If this script is async-loaded, then tell parent page to retry init.
+ function chkLateLoaded(){
+ if('loading' !== document.readyState){
+ window.parent.postMessage('[iFrameResizerChild]Ready','*');
+ }
+ }
+
+ addEventListener(window, 'message', receiver);
+ chkLateLoaded();
+
+ // TEST CODE START //
+
+ //Create test hooks
+
+ function mockMsgListener(msgObject){
+ receiver(msgObject);
+ return win;
+ }
+
+ win={};
+
+ removeEventListener(window, 'message', receiver);
+
+ define([], function() {return mockMsgListener;});
+
+ // TEST CODE END //
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/src/iframeResizer.js b/libs/bower_components/iframe-resizer/src/iframeResizer.js
new file mode 100644
index 0000000000..897a632ce4
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/src/iframeResizer.js
@@ -0,0 +1,1002 @@
+/*
+ * File: iframeResizer.js
+ * Desc: Force iframes to size to content.
+ * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Reed Dadoune - reed@dadoune.com
+ */
+
+
+;(function(window) {
+ 'use strict';
+
+ var
+ count = 0,
+ logEnabled = false,
+ hiddenCheckEnabled = false,
+ msgHeader = 'message',
+ msgHeaderLen = msgHeader.length,
+ msgId = '[iFrameSizer]', //Must match iframe msg ID
+ msgIdLen = msgId.length,
+ pagePosition = null,
+ requestAnimationFrame = window.requestAnimationFrame,
+ resetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
+ settings = {},
+ timer = null,
+ logId = 'Host Page',
+
+ defaults = {
+ autoResize : true,
+ bodyBackground : null,
+ bodyMargin : null,
+ bodyMarginV1 : 8,
+ bodyPadding : null,
+ checkOrigin : true,
+ inPageLinks : false,
+ enablePublicMethods : true,
+ heightCalculationMethod : 'bodyOffset',
+ id : 'iFrameResizer',
+ interval : 32,
+ log : false,
+ maxHeight : Infinity,
+ maxWidth : Infinity,
+ minHeight : 0,
+ minWidth : 0,
+ resizeFrom : 'parent',
+ scrolling : false,
+ sizeHeight : true,
+ sizeWidth : false,
+ tolerance : 0,
+ widthCalculationMethod : 'scroll',
+ closedCallback : function(){},
+ initCallback : function(){},
+ messageCallback : function(){warn('MessageCallback function not defined');},
+ resizedCallback : function(){},
+ scrollCallback : function(){return true;}
+ };
+
+ function addEventListener(obj,evt,func){
+ /* istanbul ignore else */ // Not testable in PhantonJS
+ if ('addEventListener' in window){
+ obj.addEventListener(evt,func, false);
+ } else if ('attachEvent' in window){//IE
+ obj.attachEvent('on'+evt,func);
+ }
+ }
+
+ function removeEventListener(el,evt,func){
+ /* istanbul ignore else */ // Not testable in phantonJS
+ if ('removeEventListener' in window){
+ el.removeEventListener(evt,func, false);
+ } else if ('detachEvent' in window){ //IE
+ el.detachEvent('on'+evt,func);
+ }
+ }
+
+ function setupRequestAnimationFrame(){
+ var
+ vendors = ['moz', 'webkit', 'o', 'ms'],
+ x;
+
+ // Remove vendor prefixing if prefixed and break early if not
+ for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
+ requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+ }
+
+ if (!(requestAnimationFrame)){
+ log('setup','RequestAnimationFrame not supported');
+ }
+ }
+
+ function getMyID(iframeId){
+ var retStr = 'Host page: '+iframeId;
+
+ if (window.top!==window.self){
+ if (window.parentIFrame && window.parentIFrame.getId){
+ retStr = window.parentIFrame.getId()+': '+iframeId;
+ } else {
+ retStr = 'Nested host page: '+iframeId;
+ }
+ }
+
+ return retStr;
+ }
+
+ function formatLogHeader(iframeId){
+ return msgId + '[' + getMyID(iframeId) + ']';
+ }
+
+ function isLogEnabled(iframeId){
+ return settings[iframeId] ? settings[iframeId].log : logEnabled;
+ }
+
+ function log(iframeId,msg){
+ output('log',iframeId,msg,isLogEnabled(iframeId));
+ }
+
+ function info(iframeId,msg){
+ output('info',iframeId,msg,isLogEnabled(iframeId));
+ }
+
+ function warn(iframeId,msg){
+ output('warn',iframeId,msg,true);
+ }
+
+ function output(type,iframeId,msg,enabled){
+ if (true === enabled && 'object' === typeof window.console){
+ console[type](formatLogHeader(iframeId),msg);
+ }
+ }
+
+ function iFrameListener(event){
+ function resizeIFrame(){
+ function resize(){
+ setSize(messageData);
+ setPagePosition(iframeId);
+ }
+
+ ensureInRange('Height');
+ ensureInRange('Width');
+
+ syncResize(resize,messageData,'init');
+ }
+
+ function processMsg(){
+ var data = msg.substr(msgIdLen).split(':');
+
+ return {
+ iframe: settings[data[0]].iframe,
+ id: data[0],
+ height: data[1],
+ width: data[2],
+ type: data[3]
+ };
+ }
+
+ function ensureInRange(Dimension){
+ var
+ max = Number(settings[iframeId]['max' + Dimension]),
+ min = Number(settings[iframeId]['min' + Dimension]),
+ dimension = Dimension.toLowerCase(),
+ size = Number(messageData[dimension]);
+
+ log(iframeId,'Checking ' + dimension + ' is in range ' + min + '-' + max);
+
+ if (size<min) {
+ size=min;
+ log(iframeId,'Set ' + dimension + ' to min value');
+ }
+
+ if (size>max) {
+ size=max;
+ log(iframeId,'Set ' + dimension + ' to max value');
+ }
+
+ messageData[dimension] = '' + size;
+ }
+
+
+ function isMessageFromIFrame(){
+ function checkAllowedOrigin(){
+ function checkList(){
+ var
+ i = 0,
+ retCode = false;
+
+ log(iframeId,'Checking connection is from allowed list of origins: ' + checkOrigin);
+
+ for (; i < checkOrigin.length; i++) {
+ if (checkOrigin[i] === origin) {
+ retCode = true;
+ break;
+ }
+ }
+ return retCode;
+ }
+
+ function checkSingle(){
+ var remoteHost = settings[iframeId].remoteHost;
+ log(iframeId,'Checking connection is from: '+remoteHost);
+ return origin === remoteHost;
+ }
+
+ return checkOrigin.constructor === Array ? checkList() : checkSingle();
+ }
+
+ var
+ origin = event.origin,
+ checkOrigin = settings[iframeId].checkOrigin;
+
+ if (checkOrigin && (''+origin !== 'null') && !checkAllowedOrigin()) {
+ throw new Error(
+ 'Unexpected message received from: ' + origin +
+ ' for ' + messageData.iframe.id +
+ '. Message was: ' + event.data +
+ '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
+ );
+ }
+
+ return true;
+ }
+
+ function isMessageForUs(){
+ return msgId === (('' + msg).substr(0,msgIdLen)) && (msg.substr(msgIdLen).split(':')[0] in settings); //''+Protects against non-string msg
+ }
+
+ function isMessageFromMetaParent(){
+ //Test if this message is from a parent above us. This is an ugly test, however, updating
+ //the message format would break backwards compatibity.
+ var retCode = messageData.type in {'true':1,'false':1,'undefined':1};
+
+ if (retCode){
+ log(iframeId,'Ignoring init message from meta parent page');
+ }
+
+ return retCode;
+ }
+
+ function getMsgBody(offset){
+ return msg.substr(msg.indexOf(':')+msgHeaderLen+offset);
+ }
+
+ function forwardMsgFromIFrame(msgBody){
+ log(iframeId,'MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');
+ callback('messageCallback',{
+ iframe: messageData.iframe,
+ message: JSON.parse(msgBody)
+ });
+ log(iframeId,'--');
+ }
+
+ function getPageInfo(){
+ var
+ bodyPosition = document.body.getBoundingClientRect(),
+ iFramePosition = messageData.iframe.getBoundingClientRect();
+
+ return JSON.stringify({
+ iframeHeight: iFramePosition.height,
+ iframeWidth: iFramePosition.width,
+ clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
+ clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
+ offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),
+ offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),
+ scrollTop: window.pageYOffset,
+ scrollLeft: window.pageXOffset
+ });
+ }
+
+ function sendPageInfoToIframe(iframe,iframeId){
+ function debouncedTrigger(){
+ trigger(
+ 'Send Page Info',
+ 'pageInfo:' + getPageInfo(),
+ iframe,
+ iframeId
+ );
+ }
+
+ debouce(debouncedTrigger,32);
+ }
+
+
+ function startPageInfoMonitor(){
+ function setListener(type,func){
+ function sendPageInfo(){
+ if (settings[id]){
+ sendPageInfoToIframe(settings[id].iframe,id);
+ } else {
+ stop();
+ }
+ }
+
+ ['scroll','resize'].forEach(function(evt){
+ log(id, type + evt + ' listener for sendPageInfo');
+ func(window,evt,sendPageInfo);
+ });
+ }
+
+ function stop(){
+ setListener('Remove ', removeEventListener);
+ }
+
+ function start(){
+ setListener('Add ', addEventListener);
+ }
+
+ var id = iframeId; //Create locally scoped copy of iFrame ID
+
+ start();
+
+ settings[id].stopPageInfo = stop;
+ }
+
+ function stopPageInfoMonitor(){
+ if (settings[iframeId] && settings[iframeId].stopPageInfo){
+ settings[iframeId].stopPageInfo();
+ delete settings[iframeId].stopPageInfo;
+ }
+ }
+
+ function checkIFrameExists(){
+ var retBool = true;
+
+ if (null === messageData.iframe) {
+ warn(iframeId,'IFrame ('+messageData.id+') not found');
+ retBool = false;
+ }
+ return retBool;
+ }
+
+ function getElementPosition(target){
+ var iFramePosition = target.getBoundingClientRect();
+
+ getPagePosition(iframeId);
+
+ return {
+ x: Math.floor( Number(iFramePosition.left) + Number(pagePosition.x) ),
+ y: Math.floor( Number(iFramePosition.top) + Number(pagePosition.y) )
+ };
+ }
+
+ function scrollRequestFromChild(addOffset){
+ /* istanbul ignore next */ //Not testable in Karma
+ function reposition(){
+ pagePosition = newPosition;
+ scrollTo();
+ log(iframeId,'--');
+ }
+
+ function calcOffset(){
+ return {
+ x: Number(messageData.width) + offset.x,
+ y: Number(messageData.height) + offset.y
+ };
+ }
+
+ function scrollParent(){
+ if (window.parentIFrame){
+ window.parentIFrame['scrollTo'+(addOffset?'Offset':'')](newPosition.x,newPosition.y);
+ } else {
+ warn(iframeId,'Unable to scroll to requested position, window.parentIFrame not found');
+ }
+ }
+
+ var
+ offset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},
+ newPosition = calcOffset();
+
+ log(iframeId,'Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');
+
+ if(window.top!==window.self){
+ scrollParent();
+ } else {
+ reposition();
+ }
+ }
+
+ function scrollTo(){
+ if (false !== callback('scrollCallback',pagePosition)){
+ setPagePosition(iframeId);
+ } else {
+ unsetPagePosition();
+ }
+ }
+
+ function findTarget(location){
+ function jumpToTarget(){
+ var jumpPosition = getElementPosition(target);
+
+ log(iframeId,'Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
+ pagePosition = {
+ x: jumpPosition.x,
+ y: jumpPosition.y
+ };
+
+ scrollTo();
+ log(iframeId,'--');
+ }
+
+ function jumpToParent(){
+ if (window.parentIFrame){
+ window.parentIFrame.moveToAnchor(hash);
+ } else {
+ log(iframeId,'In page link #'+hash+' not found and window.parentIFrame not found');
+ }
+ }
+
+ var
+ hash = location.split('#')[1] || '',
+ hashData = decodeURIComponent(hash),
+ target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
+
+ if (target){
+ jumpToTarget();
+ } else if(window.top!==window.self){
+ jumpToParent();
+ } else {
+ log(iframeId,'In page link #'+hash+' not found');
+ }
+ }
+
+ function callback(funcName,val){
+ return chkCallback(iframeId,funcName,val);
+ }
+
+ function actionMsg(){
+
+ if(settings[iframeId].firstRun) firstRun();
+
+ switch(messageData.type){
+ case 'close':
+ closeIFrame(messageData.iframe);
+ break;
+ case 'message':
+ forwardMsgFromIFrame(getMsgBody(6));
+ break;
+ case 'scrollTo':
+ scrollRequestFromChild(false);
+ break;
+ case 'scrollToOffset':
+ scrollRequestFromChild(true);
+ break;
+ case 'pageInfo':
+ sendPageInfoToIframe(settings[iframeId].iframe,iframeId);
+ startPageInfoMonitor();
+ break;
+ case 'pageInfoStop':
+ stopPageInfoMonitor();
+ break;
+ case 'inPageLink':
+ findTarget(getMsgBody(9));
+ break;
+ case 'reset':
+ resetIFrame(messageData);
+ break;
+ case 'init':
+ resizeIFrame();
+ callback('initCallback',messageData.iframe);
+ callback('resizedCallback',messageData);
+ break;
+ default:
+ resizeIFrame();
+ callback('resizedCallback',messageData);
+ }
+ }
+
+ function hasSettings(iframeId){
+ var retBool = true;
+
+ if (!settings[iframeId]){
+ retBool = false;
+ warn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);
+ }
+
+ return retBool;
+ }
+
+ function iFrameReadyMsgReceived(){
+ for (var iframeId in settings){
+ trigger('iFrame requested init',createOutgoingMsg(iframeId),document.getElementById(iframeId),iframeId);
+ }
+ }
+
+ function firstRun() {
+ settings[iframeId].firstRun = false;
+ }
+
+ var
+ msg = event.data,
+ messageData = {},
+ iframeId = null;
+
+ if('[iFrameResizerChild]Ready' === msg){
+ iFrameReadyMsgReceived();
+ } else if (isMessageForUs()){
+ messageData = processMsg();
+ iframeId = logId = messageData.id;
+
+ if (!isMessageFromMetaParent() && hasSettings(iframeId)){
+ log(iframeId,'Received: '+msg);
+
+ if ( checkIFrameExists() && isMessageFromIFrame() ){
+ actionMsg();
+ }
+ }
+ } else {
+ info(iframeId,'Ignored: '+msg);
+ }
+
+ }
+
+
+ function chkCallback(iframeId,funcName,val){
+ var
+ func = null,
+ retVal = null;
+
+ if(settings[iframeId]){
+ func = settings[iframeId][funcName];
+
+ if( 'function' === typeof func){
+ retVal = func(val);
+ } else {
+ throw new TypeError(funcName+' on iFrame['+iframeId+'] is not a function');
+ }
+ }
+
+ return retVal;
+ }
+
+ function closeIFrame(iframe){
+ var iframeId = iframe.id;
+
+ log(iframeId,'Removing iFrame: '+iframeId);
+ iframe.parentNode.removeChild(iframe);
+ chkCallback(iframeId,'closedCallback',iframeId);
+ log(iframeId,'--');
+ delete settings[iframeId];
+ }
+
+ function getPagePosition(iframeId){
+ if(null === pagePosition){
+ pagePosition = {
+ x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
+ y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
+ };
+ log(iframeId,'Get page position: '+pagePosition.x+','+pagePosition.y);
+ }
+ }
+
+ function setPagePosition(iframeId){
+ if(null !== pagePosition){
+ window.scrollTo(pagePosition.x,pagePosition.y);
+ log(iframeId,'Set page position: '+pagePosition.x+','+pagePosition.y);
+ unsetPagePosition();
+ }
+ }
+
+ function unsetPagePosition(){
+ pagePosition = null;
+ }
+
+ function resetIFrame(messageData){
+ function reset(){
+ setSize(messageData);
+ trigger('reset','reset',messageData.iframe,messageData.id);
+ }
+
+ log(messageData.id,'Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));
+ getPagePosition(messageData.id);
+ syncResize(reset,messageData,'reset');
+ }
+
+ function setSize(messageData){
+ function setDimension(dimension){
+ messageData.iframe.style[dimension] = messageData[dimension] + 'px';
+ log(
+ messageData.id,
+ 'IFrame (' + iframeId +
+ ') ' + dimension +
+ ' set to ' + messageData[dimension] + 'px'
+ );
+ }
+
+ function chkZero(dimension){
+ //FireFox sets dimension of hidden iFrames to zero.
+ //So if we detect that set up an event to check for
+ //when iFrame becomes visible.
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ if (!hiddenCheckEnabled && '0' === messageData[dimension]){
+ hiddenCheckEnabled = true;
+ log(iframeId,'Hidden iFrame detected, creating visibility listener');
+ fixHiddenIFrames();
+ }
+ }
+
+ function processDimension(dimension){
+ setDimension(dimension);
+ chkZero(dimension);
+ }
+
+ var iframeId = messageData.iframe.id;
+
+ if(settings[iframeId]){
+ if( settings[iframeId].sizeHeight) { processDimension('height'); }
+ if( settings[iframeId].sizeWidth ) { processDimension('width'); }
+ }
+ }
+
+ function syncResize(func,messageData,doNotSync){
+ /* istanbul ignore if */ //Not testable in PhantomJS
+ if(doNotSync!==messageData.type && requestAnimationFrame){
+ log(messageData.id,'Requesting animation frame');
+ requestAnimationFrame(func);
+ } else {
+ func();
+ }
+ }
+
+ function trigger(calleeMsg,msg,iframe,id){
+ function postMessageToIFrame(){
+ var target = settings[id].targetOrigin;
+ log(id,'[' + calleeMsg + '] Sending msg to iframe['+id+'] ('+msg+') targetOrigin: '+target);
+ iframe.contentWindow.postMessage( msgId + msg, target );
+ }
+
+ function iFrameNotFound(){
+ info(id,'[' + calleeMsg + '] IFrame('+id+') not found');
+ if(settings[id]) {
+ delete settings[id];
+ }
+ }
+
+ function chkAndSend(){
+ if(iframe && 'contentWindow' in iframe && (null !== iframe.contentWindow)){ //Null test for PhantomJS
+ postMessageToIFrame();
+ } else {
+ iFrameNotFound();
+ }
+ }
+
+ id = id || iframe.id;
+
+ if(settings[id]) {
+ chkAndSend();
+ }
+
+ }
+
+ function createOutgoingMsg(iframeId){
+ return iframeId +
+ ':' + settings[iframeId].bodyMarginV1 +
+ ':' + settings[iframeId].sizeWidth +
+ ':' + settings[iframeId].log +
+ ':' + settings[iframeId].interval +
+ ':' + settings[iframeId].enablePublicMethods +
+ ':' + settings[iframeId].autoResize +
+ ':' + settings[iframeId].bodyMargin +
+ ':' + settings[iframeId].heightCalculationMethod +
+ ':' + settings[iframeId].bodyBackground +
+ ':' + settings[iframeId].bodyPadding +
+ ':' + settings[iframeId].tolerance +
+ ':' + settings[iframeId].inPageLinks +
+ ':' + settings[iframeId].resizeFrom +
+ ':' + settings[iframeId].widthCalculationMethod;
+ }
+
+ function setupIFrame(iframe,options){
+ function setLimits(){
+ function addStyle(style){
+ if ((Infinity !== settings[iframeId][style]) && (0 !== settings[iframeId][style])){
+ iframe.style[style] = settings[iframeId][style] + 'px';
+ log(iframeId,'Set '+style+' = '+settings[iframeId][style]+'px');
+ }
+ }
+
+ function chkMinMax(dimension){
+ if (settings[iframeId]['min'+dimension]>settings[iframeId]['max'+dimension]){
+ throw new Error('Value for min'+dimension+' can not be greater than max'+dimension);
+ }
+ }
+
+ chkMinMax('Height');
+ chkMinMax('Width');
+
+ addStyle('maxHeight');
+ addStyle('minHeight');
+ addStyle('maxWidth');
+ addStyle('minWidth');
+ }
+
+ function newId(){
+ var id = ((options && options.id) || defaults.id + count++);
+ if (null!==document.getElementById(id)){
+ id = id + count++;
+ }
+ return id;
+ }
+
+ function ensureHasId(iframeId){
+ logId=iframeId;
+ if (''===iframeId){
+ iframe.id = iframeId = newId();
+ logEnabled = (options || {}).log;
+ logId=iframeId;
+ log(iframeId,'Added missing iframe ID: '+ iframeId +' (' + iframe.src + ')');
+ }
+
+
+ return iframeId;
+ }
+
+ function setScrolling(){
+ log(iframeId,'IFrame scrolling ' + (settings[iframeId].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId);
+ iframe.style.overflow = false === settings[iframeId].scrolling ? 'hidden' : 'auto';
+ iframe.scrolling = false === settings[iframeId].scrolling ? 'no' : 'yes';
+ }
+
+ //The V1 iFrame script expects an int, where as in V2 expects a CSS
+ //string value such as '1px 3em', so if we have an int for V2, set V1=V2
+ //and then convert V2 to a string PX value.
+ function setupBodyMarginValues(){
+ if (('number'===typeof(settings[iframeId].bodyMargin)) || ('0'===settings[iframeId].bodyMargin)){
+ settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;
+ settings[iframeId].bodyMargin = '' + settings[iframeId].bodyMargin + 'px';
+ }
+ }
+
+ function checkReset(){
+ // Reduce scope of firstRun to function, because IE8's JS execution
+ // context stack is borked and this value gets externally
+ // changed midway through running this function!!!
+ var
+ firstRun = settings[iframeId].firstRun,
+ resetRequertMethod = settings[iframeId].heightCalculationMethod in resetRequiredMethods;
+
+ if (!firstRun && resetRequertMethod){
+ resetIFrame({iframe:iframe, height:0, width:0, type:'init'});
+ }
+ }
+
+ function setupIFrameObject(){
+ if(Function.prototype.bind){ //Ignore unpolyfilled IE8.
+ settings[iframeId].iframe.iFrameResizer = {
+
+ close : closeIFrame.bind(null,settings[iframeId].iframe),
+
+ resize : trigger.bind(null,'Window resize', 'resize', settings[iframeId].iframe),
+
+ moveToAnchor : function(anchor){
+ trigger('Move to anchor','moveToAnchor:'+anchor, settings[iframeId].iframe,iframeId);
+ },
+
+ sendMessage : function(message){
+ message = JSON.stringify(message);
+ trigger('Send Message','message:'+message, settings[iframeId].iframe,iframeId);
+ }
+ };
+ }
+ }
+
+ //We have to call trigger twice, as we can not be sure if all
+ //iframes have completed loading when this code runs. The
+ //event listener also catches the page changing in the iFrame.
+ function init(msg){
+ function iFrameLoaded(){
+ trigger('iFrame.onload',msg,iframe);
+ checkReset();
+ }
+
+ addEventListener(iframe,'load',iFrameLoaded);
+ trigger('init',msg,iframe);
+ }
+
+ function checkOptions(options){
+ if ('object' !== typeof options){
+ throw new TypeError('Options is not an object');
+ }
+ }
+
+ function copyOptions(options){
+ for (var option in defaults) {
+ if (defaults.hasOwnProperty(option)){
+ settings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option];
+ }
+ }
+ }
+
+ function getTargetOrigin (remoteHost){
+ return ('' === remoteHost || 'file://' === remoteHost) ? '*' : remoteHost;
+ }
+
+ function processOptions(options){
+ options = options || {};
+ settings[iframeId] = {
+ firstRun : true,
+ iframe : iframe,
+ remoteHost : iframe.src.split('/').slice(0,3).join('/')
+ };
+
+ checkOptions(options);
+ copyOptions(options);
+
+ settings[iframeId].targetOrigin = true === settings[iframeId].checkOrigin ? getTargetOrigin(settings[iframeId].remoteHost) : '*';
+ }
+
+ function beenHere(){
+ return (iframeId in settings && 'iFrameResizer' in iframe);
+ }
+
+ var iframeId = ensureHasId(iframe.id);
+
+ if (!beenHere()){
+ processOptions(options);
+ setScrolling();
+ setLimits();
+ setupBodyMarginValues();
+ init(createOutgoingMsg(iframeId));
+ setupIFrameObject();
+ } else {
+ warn(iframeId,'Ignored iFrame, already setup.');
+ }
+ }
+
+ function debouce(fn,time){
+ if (null === timer){
+ timer = setTimeout(function(){
+ timer = null;
+ fn();
+ }, time);
+ }
+ }
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function fixHiddenIFrames(){
+ function checkIFrames(){
+ function checkIFrame(settingId){
+ function chkDimension(dimension){
+ return '0px' === settings[settingId].iframe.style[dimension];
+ }
+
+ function isVisible(el) {
+ return (null !== el.offsetParent);
+ }
+
+ if (isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))){
+ trigger('Visibility change', 'resize', settings[settingId].iframe,settingId);
+ }
+ }
+
+ for (var settingId in settings){
+ checkIFrame(settingId);
+ }
+ }
+
+ function mutationObserved(mutations){
+ log('window','Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);
+ debouce(checkIFrames,16);
+ }
+
+ function createMutationObserver(){
+ var
+ target = document.querySelector('body'),
+
+ config = {
+ attributes : true,
+ attributeOldValue : false,
+ characterData : true,
+ characterDataOldValue : false,
+ childList : true,
+ subtree : true
+ },
+
+ observer = new MutationObserver(mutationObserved);
+
+ observer.observe(target, config);
+ }
+
+ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+ if (MutationObserver) createMutationObserver();
+ }
+
+
+ function resizeIFrames(event){
+ function resize(){
+ sendTriggerMsg('Window '+event,'resize');
+ }
+
+ log('window','Trigger event: '+event);
+ debouce(resize,16);
+ }
+
+ /* istanbul ignore next */ //Not testable in PhantomJS
+ function tabVisible() {
+ function resize(){
+ sendTriggerMsg('Tab Visable','resize');
+ }
+
+ if('hidden' !== document.visibilityState) {
+ log('document','Trigger event: Visiblity change');
+ debouce(resize,16);
+ }
+ }
+
+ function sendTriggerMsg(eventName,event){
+ function isIFrameResizeEnabled(iframeId) {
+ return 'parent' === settings[iframeId].resizeFrom &&
+ settings[iframeId].autoResize &&
+ !settings[iframeId].firstRun;
+ }
+
+ for (var iframeId in settings){
+ if(isIFrameResizeEnabled(iframeId)){
+ trigger(eventName,event,document.getElementById(iframeId),iframeId);
+ }
+ }
+ }
+
+ function setupEventListeners(){
+ addEventListener(window,'message',iFrameListener);
+
+ addEventListener(window,'resize', function(){resizeIFrames('resize');});
+
+ addEventListener(document,'visibilitychange',tabVisible);
+ addEventListener(document,'-webkit-visibilitychange',tabVisible); //Andriod 4.4
+ addEventListener(window,'focusin',function(){resizeIFrames('focus');}); //IE8-9
+ addEventListener(window,'focus',function(){resizeIFrames('focus');});
+ }
+
+
+ function factory(){
+ function init(options,element){
+ function chkType(){
+ if(!element.tagName) {
+ throw new TypeError('Object is not a valid DOM element');
+ } else if ('IFRAME' !== element.tagName.toUpperCase()) {
+ throw new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>');
+ }
+ }
+
+ if(element) {
+ chkType();
+ setupIFrame(element, options);
+ iFrames.push(element);
+ }
+ }
+
+ var iFrames;
+
+ setupRequestAnimationFrame();
+ setupEventListeners();
+
+ return function iFrameResizeF(options,target){
+ iFrames = []; //Only return iFrames past in on this call
+
+ switch (typeof(target)){
+ case 'undefined':
+ case 'string':
+ Array.prototype.forEach.call(
+ document.querySelectorAll( target || 'iframe' ),
+ init.bind(undefined, options)
+ );
+ break;
+ case 'object':
+ init(options,target);
+ break;
+ default:
+ throw new TypeError('Unexpected data type ('+typeof(target)+')');
+ }
+
+ return iFrames;
+ };
+ }
+
+ function createJQueryPublicMethod($){
+ if (!$.fn) {
+ info('','Unable to bind to jQuery, it is not fully loaded.');
+ } else {
+ $.fn.iFrameResize = function $iFrameResizeF(options) {
+ function init(index, element) {
+ setupIFrame(element, options);
+ }
+
+ return this.filter('iframe').each(init).end();
+ };
+ }
+ }
+
+ if (window.jQuery) { createJQueryPublicMethod(jQuery); }
+
+ if (typeof define === 'function' && define.amd) {
+ define([],factory);
+ } else if (typeof module === 'object' && typeof module.exports === 'object') { //Node for browserfy
+ module.exports = factory();
+ } else {
+ window.iFrameResize = window.iFrameResize || factory();
+ }
+
+})(window || {});
diff --git a/libs/bower_components/iframe-resizer/test-main.js b/libs/bower_components/iframe-resizer/test-main.js
new file mode 100644
index 0000000000..1abfe13131
--- /dev/null
+++ b/libs/bower_components/iframe-resizer/test-main.js
@@ -0,0 +1,33 @@
+var allTestFiles = [];
+
+var TEST_REGEXP = /(spec|test)\.js$/i;
+
+// Get a list of all the test files to include
+Object.keys(window.__karma__.files).forEach(function(file) {
+ if (TEST_REGEXP.test(file)) {
+ // Normalize paths to RequireJS module names.
+ // If you require sub-dependencies of test files to be loaded as-is (requiring file extension)
+ // then do not normalize the paths
+ var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, '');
+ allTestFiles.push(normalizedTestModule);
+ }
+});
+
+require.config({
+ // Karma serves files under /base, which is the basePath from your config file
+ baseUrl: '/base',
+
+ paths: {
+ jquery : 'node_modules/jquery/dist/jquery',
+ iframeResizerMin : 'js/iframeResizer.min',
+ iframeResizer : 'src/iframeResizer',
+ iframeResizerContentMin : 'js/iframeResizer.contentWindow.min',
+ iframeResizerContent : 'src/iframeResizer.contentWindow'
+ },
+
+ // dynamically load all test files
+ deps: allTestFiles,
+
+ // we have to kickoff jasmine, as it is asynchronous
+ callback: window.__karma__.start
+});
diff --git a/piwik.js b/piwik.js
index 1a04b67ec5..6fa09e8deb 100644
--- a/piwik.js
+++ b/piwik.js
@@ -59,14 +59,14 @@ bg(cH,bj)}function cl(cF,cI,cH){var cG=b0("idgoal="+cF+(cI?"&revenue="+cI:""),cH
}else{if(!af){af={}}af[cF]=cG}};this.getCustomData=function(){return af};this.setCustomRequestProcessing=function(cF){bK=cF};this.appendToTrackingUrl=function(cF){cq=cF};this.getRequest=function(cF){return b0(cF)};this.addPlugin=function(cF,cG){a[cF]=cG};this.setCustomDimension=function(cF,cG){cF=parseInt(cF,10);if(cF>0){if(!D(cG)){cG=""}if(!s(cG)){cG=String(cG)}a1[cF]=cG}};this.getCustomDimension=function(cF){cF=parseInt(cF,10);if(cF>0&&Object.prototype.hasOwnProperty.call(a1,cF)){return a1[cF]}};this.deleteCustomDimension=function(cF){cF=parseInt(cF,10);if(cF>0){delete a1[cF]}};this.setCustomVariable=function(cG,cF,cJ,cH){var cI;if(!D(cH)){cH="visit"}if(!D(cF)){return}if(!D(cJ)){cJ=""}if(cG>0){cF=!s(cF)?String(cF):cF;cJ=!s(cJ)?String(cJ):cJ;cI=[cF.slice(0,a7),cJ.slice(0,a7)];if(cH==="visit"||cH===2){b9();aA[cG]=cI}else{if(cH==="page"||cH===3){bv[cG]=cI}else{if(cH==="event"){bU[cG]=cI}}}}};this.getCustomVariable=function(cG,cH){var cF;if(!D(cH)){cH="visit"}if(cH==="page"||cH===3){cF=bv[cG]
}else{if(cH==="event"){cF=bU[cG]}else{if(cH==="visit"||cH===2){b9();cF=aA[cG]}}}if(!D(cF)||(cF&&cF[0]==="")){return false}return cF};this.deleteCustomVariable=function(cF,cG){if(this.getCustomVariable(cF,cG)){this.setCustomVariable(cF,"","",cG)}};this.storeCustomVariablesInCookie=function(){bq=true};this.setLinkTrackingTimer=function(cF){bj=cF};this.setDownloadExtensions=function(cF){if(s(cF)){cF=cF.split("|")}cv=cF};this.addDownloadExtensions=function(cG){var cF;if(s(cG)){cG=cG.split("|")}for(cF=0;cF<cG.length;cF++){cv.push(cG[cF])}};this.removeDownloadExtensions=function(cH){var cG,cF=[];if(s(cH)){cH=cH.split("|")}for(cG=0;cG<cv.length;cG++){if(G(cH,cv[cG])===-1){cF.push(cv[cG])}}cv=cF};this.setDomains=function(cF){al=s(cF)?[cF]:cF;var cJ=false,cH=0,cG;for(cH;cH<al.length;cH++){cG=String(al[cH]);if(cb(cm,F(cG))){cJ=true;break}var cI=bT(cG);if(cI&&cI!=="/"&&cI!=="/*"){cJ=true;break}}if(!cJ){al.push(cm)}};this.setIgnoreClasses=function(cF){bc=s(cF)?[cF]:cF};this.setRequestMethod=function(cF){cy=cF||bR
};this.setRequestContentType=function(cF){b3=cF||au};this.setReferrerUrl=function(cF){a2=cF};this.setCustomUrl=function(cF){aN=bu(bn,cF)};this.setDocumentTitle=function(cF){aY=cF};this.setAPIUrl=function(cF){bi=cF};this.setDownloadClasses=function(cF){bl=s(cF)?[cF]:cF};this.setLinkClasses=function(cF){aQ=s(cF)?[cF]:cF};this.setCampaignNameKey=function(cF){bZ=s(cF)?[cF]:cF};this.setCampaignKeywordKey=function(cF){bh=s(cF)?[cF]:cF};this.discardHashTag=function(cF){bp=cF};this.setCookieNamePrefix=function(cF){aZ=cF;aA=bw()};this.setCookieDomain=function(cF){var cG=F(cF);if(a9(cG)){co=cG;aX()}};this.setCookiePath=function(cF){a4=cF;aX()};this.setVisitorCookieTimeout=function(cF){ce=cF*1000};this.setSessionCookieTimeout=function(cF){bX=cF*1000};this.setReferralCookieTimeout=function(cF){cu=cF*1000};this.setConversionAttributionFirstReferrer=function(cF){a8=cF};this.disableCookies=function(){a0=true;cw.cookie="0";if(bF){aq()}};this.deleteCookies=function(){aq()};this.setDoNotTrack=function(cG){var cF=f.doNotTrack||f.msDoNotTrack;
-ci=cG&&(cF==="yes"||cF==="1");if(ci){this.disableCookies()}};this.addListener=function(cG,cF){ah(cG,cF)};this.enableLinkTracking=function(cF){cx=true;bQ(function(){m(function(){be(cF)})})};this.enableJSErrorTracking=function(){if(ck){return}ck=true;var cF=N.onerror;N.onerror=function(cK,cI,cH,cJ,cG){bQ(function(){var cL="JavaScript Errors";var cM=cI+":"+cH;if(cJ){cM+=":"+cJ}ak(cL,cM,cK)});if(cF){return cF(cK,cI,cH,cJ,cG)}return false}};this.disablePerformanceTracking=function(){aL=false};this.setGenerationTimeMs=function(cF){bV=parseInt(cF,10)};this.enableHeartBeatTimer=function(cF){cF=Math.max(cF,1);aO=(cF||15)*1000;if(cp!==null){cD()}};this.killFrame=function(){if(N.location!==N.top.location){N.top.location=N.location}};this.redirectFile=function(cF){if(N.location.protocol==="file:"){N.location=cF}};this.setCountPreRendered=function(cF){aV=cF};this.trackGoal=function(cF,cH,cG){bQ(function(){cl(cF,cH,cG)})};this.trackLink=function(cG,cF,cI,cH){bQ(function(){cs(cG,cF,cI,cH)})};this.trackPageView=function(cF,cH,cG){bJ=[];
-if(H(bF)){bQ(function(){S(ap,bi,bF)})}else{bQ(function(){bz(cF,cH,cG)})}};this.trackAllContentImpressions=function(){if(H(bF)){return}bQ(function(){m(function(){var cF=r.findContentNodes();var cG=b6(cF);cC(cG,bj)})})};this.trackVisibleContentImpressions=function(cF,cG){if(H(bF)){return}if(!D(cF)){cF=true}if(!D(cG)){cG=750}aC(cF,cG,this);bQ(function(){j(function(){var cH=r.findContentNodes();var cI=aR(cH);cC(cI,bj)})})};this.trackContentImpression=function(cH,cF,cG){if(H(bF)){return}if(!cH){return}cF=cF||"Unknown";bQ(function(){var cI=ar(cH,cF,cG);bg(cI,bj)})};this.trackContentImpressionsWithinNode=function(cF){if(H(bF)||!cF){return}bQ(function(){if(bO){j(function(){var cG=r.findContentNodesWithinNode(cF);var cH=aR(cG);cC(cH,bj)})}else{m(function(){var cG=r.findContentNodesWithinNode(cF);var cH=b6(cG);cC(cH,bj)})}})};this.trackContentInteraction=function(cH,cI,cF,cG){if(H(bF)){return}if(!cH||!cI){return}cF=cF||"Unknown";bQ(function(){var cJ=az(cH,cI,cF,cG);bg(cJ,bj)})};this.trackContentInteractionNode=function(cG,cF){if(H(bF)||!cG){return
-}bQ(function(){var cH=cA(cG,cF);bg(cH,bj)})};this.logAllContentBlocksOnPage=function(){var cG=r.findContentNodes();var cF=r.collectContent(cG);if(console!==undefined&&console&&console.log){console.log(cF)}};this.trackEvent=function(cG,cI,cF,cH,cK,cJ){bQ(function(){ak(cG,cI,cF,cH,cK,cJ)})};this.trackSiteSearch=function(cF,cH,cG,cI){bQ(function(){bI(cF,cH,cG,cI)})};this.setEcommerceView=function(cI,cF,cH,cG){if(!D(cH)||!cH.length){cH=""}else{if(cH instanceof Array){cH=JSON2.stringify(cH)}}bv[5]=["_pkc",cH];if(D(cG)&&String(cG).length){bv[2]=["_pkp",cG]}if((!D(cI)||!cI.length)&&(!D(cF)||!cF.length)){return}if(D(cI)&&cI.length){bv[3]=["_pks",cI]}if(!D(cF)||!cF.length){cF=""}bv[4]=["_pkn",cF]};this.addEcommerceItem=function(cJ,cF,cH,cG,cI){if(cJ.length){cr[cJ]=[cJ,cF,cH,cG,cI]}};this.trackEcommerceOrder=function(cF,cJ,cI,cH,cG,cK){by(cF,cJ,cI,cH,cG,cK)};this.trackEcommerceCartUpdate=function(cF){a6(cF)};this.trackRequest=function(cF,cH,cG){bQ(function(){var cI=b0(cF,cH);bg(cI,bj,cG)})};d.trigger("TrackerSetup",[this])
-}function B(){return{push:X}}function b(ak,aj){var al={};var ah,ai;for(ah=0;ah<aj.length;ah++){var af=aj[ah];al[af]=1;for(ai=0;ai<ak.length;ai++){if(ak[ai]&&ak[ai][0]){var ag=ak[ai][0];if(af===ag){X(ak[ai]);delete ak[ai];if(al[ag]>1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)
-},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C[0]){ai=C[0]}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])
-}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
+ci=cG&&(cF==="yes"||cF==="1");if(ci){this.disableCookies()}};this.addListener=function(cG,cF){ah(cG,cF)};this.enableLinkTracking=function(cF){cx=true;bQ(function(){m(function(){be(cF)})})};this.enableJSErrorTracking=function(){if(ck){return}ck=true;var cF=N.onerror;N.onerror=function(cK,cI,cH,cJ,cG){bQ(function(){var cL="JavaScript Errors";var cM=cI+":"+cH;if(cJ){cM+=":"+cJ}ak(cL,cM,cK)});if(cF){return cF(cK,cI,cH,cJ,cG)}return false}};this.disablePerformanceTracking=function(){aL=false};this.setGenerationTimeMs=function(cF){bV=parseInt(cF,10)};this.enableHeartBeatTimer=function(cF){cF=Math.max(cF,1);aO=(cF||15)*1000;if(cp!==null){cD()}};this.disableHeartBeatTimer=function(){bk();if(aO||ay){if(N.removeEventListener){N.removeEventListener("focus",aS,true);N.removeEventListener("blur",am,true)}else{if(N.detachEvent){N.detachEvent("onfocus",aS);N.detachEvent("onblur",am)}}}aO=null;ay=false};this.killFrame=function(){if(N.location!==N.top.location){N.top.location=N.location}};this.redirectFile=function(cF){if(N.location.protocol==="file:"){N.location=cF
+}};this.setCountPreRendered=function(cF){aV=cF};this.trackGoal=function(cF,cH,cG){bQ(function(){cl(cF,cH,cG)})};this.trackLink=function(cG,cF,cI,cH){bQ(function(){cs(cG,cF,cI,cH)})};this.trackPageView=function(cF,cH,cG){bJ=[];if(H(bF)){bQ(function(){S(ap,bi,bF)})}else{bQ(function(){bz(cF,cH,cG)})}};this.trackAllContentImpressions=function(){if(H(bF)){return}bQ(function(){m(function(){var cF=r.findContentNodes();var cG=b6(cF);cC(cG,bj)})})};this.trackVisibleContentImpressions=function(cF,cG){if(H(bF)){return}if(!D(cF)){cF=true}if(!D(cG)){cG=750}aC(cF,cG,this);bQ(function(){j(function(){var cH=r.findContentNodes();var cI=aR(cH);cC(cI,bj)})})};this.trackContentImpression=function(cH,cF,cG){if(H(bF)){return}if(!cH){return}cF=cF||"Unknown";bQ(function(){var cI=ar(cH,cF,cG);bg(cI,bj)})};this.trackContentImpressionsWithinNode=function(cF){if(H(bF)||!cF){return}bQ(function(){if(bO){j(function(){var cG=r.findContentNodesWithinNode(cF);var cH=aR(cG);cC(cH,bj)})}else{m(function(){var cG=r.findContentNodesWithinNode(cF);
+var cH=b6(cG);cC(cH,bj)})}})};this.trackContentInteraction=function(cH,cI,cF,cG){if(H(bF)){return}if(!cH||!cI){return}cF=cF||"Unknown";bQ(function(){var cJ=az(cH,cI,cF,cG);bg(cJ,bj)})};this.trackContentInteractionNode=function(cG,cF){if(H(bF)||!cG){return}bQ(function(){var cH=cA(cG,cF);bg(cH,bj)})};this.logAllContentBlocksOnPage=function(){var cG=r.findContentNodes();var cF=r.collectContent(cG);if(console!==undefined&&console&&console.log){console.log(cF)}};this.trackEvent=function(cG,cI,cF,cH,cK,cJ){bQ(function(){ak(cG,cI,cF,cH,cK,cJ)})};this.trackSiteSearch=function(cF,cH,cG,cI){bQ(function(){bI(cF,cH,cG,cI)})};this.setEcommerceView=function(cI,cF,cH,cG){if(!D(cH)||!cH.length){cH=""}else{if(cH instanceof Array){cH=JSON2.stringify(cH)}}bv[5]=["_pkc",cH];if(D(cG)&&String(cG).length){bv[2]=["_pkp",cG]}if((!D(cI)||!cI.length)&&(!D(cF)||!cF.length)){return}if(D(cI)&&cI.length){bv[3]=["_pks",cI]}if(!D(cF)||!cF.length){cF=""}bv[4]=["_pkn",cF]};this.addEcommerceItem=function(cJ,cF,cH,cG,cI){if(cJ.length){cr[cJ]=[cJ,cF,cH,cG,cI]
+}};this.trackEcommerceOrder=function(cF,cJ,cI,cH,cG,cK){by(cF,cJ,cI,cH,cG,cK)};this.trackEcommerceCartUpdate=function(cF){a6(cF)};this.trackRequest=function(cF,cH,cG){bQ(function(){var cI=b0(cF,cH);bg(cI,bj,cG)})};d.trigger("TrackerSetup",[this])}function B(){return{push:X}}function b(ak,aj){var al={};var ah,ai;for(ah=0;ah<aj.length;ah++){var af=aj[ah];al[af]=1;for(ai=0;ai<ak.length;ai++){if(ak[ai]&&ak[ai][0]){var ag=ak[ai][0];if(af===ag){X(ak[ai]);delete ak[ai];if(al[ag]>1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;
+z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){if(t[ah][af]===ag){t[ah].splice(af,1)}}},trigger:function(ah,ai,ag){if(!t[ah]){return}var af=0;for(af;af<t[ah].length;af++){t[ah][af].apply(ag||N,ai)}},addPlugin:function(af,ag){a[af]=ag},getTracker:function(af,ag){if(!D(ag)){ag=this.getAsyncTracker().getSiteId()}if(!D(af)){af=this.getAsyncTracker().getTrackerUrl()}return new K(af,ag)},getAsyncTrackers:function(){return C},addTracker:function(af,ag){if(!C.length){V(af,ag)}else{C[0].addTracker(af,ag)}},getAsyncTracker:function(ag,aj){var ai;if(C&&C.length&&C[0]){ai=C[0]}else{return V(ag,aj)}if(!aj&&!ag){return ai}if((!D(aj)||null===aj)&&ai){aj=ai.getSiteId()
+}if((!D(ag)||null===ag)&&ai){ag=ai.getTrackerUrl()}var ah,af=0;for(af;af<C.length;af++){ah=C[af];if(ah&&String(ah.getSiteId())===String(aj)&&ah.getTrackerUrl()===ag){return ah}}},retryMissedPluginCalls:function(){var ag=Y;Y=[];var af=0;for(af;af<ag.length;af++){X(ag[af])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return d})}return d}());
/*!!! pluginTrackerHook */
-}(function(){if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}window.Piwik.addTracker();window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)
-}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
+}(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
+if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}};
/*!! @license-end */
}; \ No newline at end of file
diff --git a/plugins/API/API.php b/plugins/API/API.php
index ea69205597..2100ea825f 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -439,16 +439,6 @@ class API extends \Piwik\Plugin\API
}
/**
- * @deprecated
- */
- public function getLastDate($date, $period)
- {
- $lastDate = Range::getLastDate($date, $period);
-
- return array_shift($lastDate);
- }
-
- /**
* Performs multiple API requests at once and returns every result.
*
* @param array $urls The array of API requests.
diff --git a/plugins/API/Menu.php b/plugins/API/Menu.php
index 12995fcb99..312f03a2ef 100644
--- a/plugins/API/Menu.php
+++ b/plugins/API/Menu.php
@@ -28,7 +28,7 @@ class Menu extends \Piwik\Plugin\Menu
{
$menu->addPlatformItem('General_API',
$this->urlForAction('listAllAPI', array('segment' => false)),
- 6,
+ 7,
Piwik::translate('API_TopLinkTooltip')
);
diff --git a/plugins/Actions/Actions/ActionSiteSearch.php b/plugins/Actions/Actions/ActionSiteSearch.php
index 392e3777f8..6bd6be4e7b 100644
--- a/plugins/Actions/Actions/ActionSiteSearch.php
+++ b/plugins/Actions/Actions/ActionSiteSearch.php
@@ -64,6 +64,16 @@ class ActionSiteSearch extends Action
return null;
}
+ public function getIdActionUrlForEntryAndExitIds()
+ {
+ return $this->getIdActionUrl();
+ }
+
+ public function getIdActionNameForEntryAndExitIds()
+ {
+ return $this->getIdActionName();
+ }
+
public function getCustomFloatValue()
{
return $this->request->getPageGenerationTime();
diff --git a/plugins/Actions/Columns/VisitTotalActions.php b/plugins/Actions/Columns/VisitTotalActions.php
index 914f18ba8e..750cfc8667 100644
--- a/plugins/Actions/Columns/VisitTotalActions.php
+++ b/plugins/Actions/Columns/VisitTotalActions.php
@@ -79,8 +79,9 @@ class VisitTotalActions extends VisitDimension
}
$actionType = $action->getActionType();
+ $types = array(Action::TYPE_SITE_SEARCH, Action::TYPE_EVENT, Action::TYPE_OUTLINK, Action::TYPE_DOWNLOAD);
- if (in_array($actionType, array(Action::TYPE_SITE_SEARCH, Action::TYPE_EVENT))) {
+ if (in_array($actionType, $types)) {
return $increment;
}
diff --git a/plugins/Actions/lang/id.json b/plugins/Actions/lang/id.json
index 9fd65b060c..f0d0bc1871 100644
--- a/plugins/Actions/lang/id.json
+++ b/plugins/Actions/lang/id.json
@@ -2,6 +2,7 @@
"Actions": {
"AvgGenerationTimeTooltip": "Rerata berdasar %1$s kunjungan %2$s antara %3$s dan %4$s",
"ColumnClickedURL": "URL diklik",
+ "ColumnActionURL": "URL tindakan",
"ColumnClicks": "Klik",
"ColumnClicksDocumentation": "Jumlah tautan ini diklik.",
"ColumnDownloadURL": "URL Unduhan",
@@ -25,6 +26,7 @@
"ColumnUniqueClicksDocumentation": "Jumlah kunjungan yang melibatkan klik pada tautan ini. Jika tautan diklik beberapa kali selama satu kali kunjungan, ini hanya dihitung sekali.",
"ColumnUniqueDownloads": "Unduhan Unik",
"ColumnUniqueOutlinks": "Tautan Luar Unik",
+ "ColumnIdPageview": "ID Tampilan Halaman",
"DownloadsReportDocumentation": "Dalam laporan ini, Anda dapat melihat berkas yang diunduh oleh pengunjung. %s Apa yang Piwik hitung adalah yang mengeklik tautan unduhan. Namun, bila unduhan sudah lengkap atau belum Piwik tidak mengetahuinya.",
"EntryPagesReportDocumentation": "Laporan ini mengandung informasi tentang halaman masuk yang digunakan selama periode tertentu. Halaman masuk merupakan halaman pertama yang ditampilkan selama kunjungan pengguna. %s URL masuk ditampilkan sebagai struktur map.",
"EntryPageTitles": "Judul halaman masuk",
@@ -60,6 +62,7 @@
"WidgetPageUrlsFollowingSearch": "Halaman Diikuti Situs Pencarian Situs",
"WidgetSearchCategories": "Kategori Pencarian",
"WidgetSearchKeywords": "Kata Kunci Pencarian Situs",
- "WidgetSearchNoResultKeywords": "Kata Kunci Pencarian dengan Tanpa Hasil"
+ "WidgetSearchNoResultKeywords": "Kata Kunci Pencarian dengan Tanpa Hasil",
+ "ActionType": "Jenis Tindakan"
}
} \ No newline at end of file
diff --git a/plugins/Actions/lang/uk.json b/plugins/Actions/lang/uk.json
index e33457c73b..6d05529d84 100644
--- a/plugins/Actions/lang/uk.json
+++ b/plugins/Actions/lang/uk.json
@@ -26,6 +26,7 @@
"ColumnUniqueClicksDocumentation": "Кількість відвідувань, коли було відкрито це посилання. Якщо посилання була відкрито кілька разів протягом одного і того ж відвідування, це враховується лише раз.",
"ColumnUniqueDownloads": "Унікальні завантаження",
"ColumnUniqueOutlinks": "Унікальні вихідні посилання",
+ "ColumnIdPageview": "ID перегляду",
"DownloadsReportDocumentation": "У цьому звіті ви можете бачити файли, які завантажували ваші відвідувачі. %s За завантаження вважається клік на відповідне посилання. Однак чи закінчив відвідувач завантаження залишається невідомим. За завантаження вважається також відкриття картинок і інших розширень файлів.",
"EntryPagesReportDocumentation": "Цей звіт містить інформацію про сторінки входу за певний період. Вхідна сторінка – це перша сторінка сайту, яку користувач переглядає за відвідування. %s Вхідні посилання відображаються в папочном вигляді.",
"EntryPageTitles": "Заголовки сторінок входу",
diff --git a/plugins/AnonymousPiwikUsageMeasurement b/plugins/AnonymousPiwikUsageMeasurement
-Subproject 6df957b544737818064b311327902e3774fa85c
+Subproject 488c37f159f57186a6a1cefd43823e5972c9a13
diff --git a/plugins/Bandwidth b/plugins/Bandwidth
new file mode 160000
+Subproject dcd213ac739f1ad12e039e3aac24d154a041ed4
diff --git a/plugins/Contents/API.php b/plugins/Contents/API.php
index 574a24e9a3..926da47241 100644
--- a/plugins/Contents/API.php
+++ b/plugins/Contents/API.php
@@ -36,7 +36,7 @@ class API extends \Piwik\Plugin\API
{
Piwik::checkUserHasViewAccess($idSite);
$recordName = Dimensions::getRecordNameForAction($name);
- $dataTable = Archive::getDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded, $idSubtable);
+ $dataTable = Archive::createDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded, $flat=false, $idSubtable);
if (empty($idSubtable)) {
$dataTable->filter('AddSegmentValue', array(function ($label) {
diff --git a/plugins/Contents/Actions/ActionContent.php b/plugins/Contents/Actions/ActionContent.php
index 024c403d81..b328ebcc6c 100644
--- a/plugins/Contents/Actions/ActionContent.php
+++ b/plugins/Contents/Actions/ActionContent.php
@@ -40,15 +40,4 @@ class ActionContent extends Action
);
}
- // Do not track this Event URL as Entry/Exit Page URL (leave the existing entry/exit)
- public function getIdActionUrlForEntryAndExitIds()
- {
- return false;
- }
-
- // Do not track this Event Name as Entry/Exit Page Title (leave the existing entry/exit)
- public function getIdActionNameForEntryAndExitIds()
- {
- return false;
- }
}
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_day.xml b/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_day.xml
index c93f842124..97b0082789 100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_day.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.333</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>2</entry_nb_uniq_visitors>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
@@ -16,6 +20,7 @@
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_uniq_visitors>2</exit_nb_uniq_visitors>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>270</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_month.xml b/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_month.xml
index c24ffddb6c..bbe552d74d 100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_month.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Actions.getPageUrls_month.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.333</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>542</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>270</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index dcda3b0378..7621aa1f78 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -17,14 +17,13 @@ use Piwik\Menu\MenuTop;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\ControllerAdmin;
-use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
+use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Plugins\CustomVariables\CustomVariables;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Site;
use Piwik\Translation\Translator;
-use Piwik\UpdateCheck;
use Piwik\Url;
use Piwik\View;
use Piwik\Widget\WidgetsList;
@@ -49,7 +48,7 @@ class Controller extends ControllerAdmin
public function home()
{
- $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
+ $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
$isFeedbackEnabled = Plugin\Manager::getInstance()->isPluginLoaded('Feedback');
$widgetsList = WidgetsList::get();
diff --git a/plugins/CoreAdminHome/lang/uk.json b/plugins/CoreAdminHome/lang/uk.json
index 994366cb89..7bf729245f 100644
--- a/plugins/CoreAdminHome/lang/uk.json
+++ b/plugins/CoreAdminHome/lang/uk.json
@@ -55,7 +55,9 @@
"LogoUploadHelp": "Будь ласка, закачуйте файли в %1$s форматах, мінімальне обмеження по висоті – %2$s пікселів.",
"MenuDiagnostic": "Діагностика",
"MenuGeneralSettings": "Основні налаштування",
+ "MenuSystem": "Система",
"MenuDevelopment": "Розробка",
+ "MenuMeasurables": "Одиниці виміру",
"OptOutComplete": "Виняток з політики конфіденційності завершено; ваші відвідування на даний сайт не враховуватимуться системою веб аналітики. Ми поважаємо ваш вибір.",
"OptOutCompleteBis": "Зауважте, що якщо ви очистите cookies браузера, то, швидше за все, видалитсья і винятковий cookie, або якщо ви поміняєте комп'ютер або браузер, то необхідно буде пройти процедуру виключення знову.",
"OptOutDntFound": "Ваші дії не відстежувалися, так як ваш браузер повідомляє, що ви не хочете цього. Це настройка вашого браузера, тому у вас не буде можливості включити її до тих пір, поки ви не відключите опцію \"Не відстежувати\".",
@@ -70,6 +72,8 @@
"PluginSettingsIntro": "Тут ви можете змінити налаштування для наступних плагінів:",
"PluginSettingsValueNotAllowed": "Значення для поля \"%1$s\" в плагіні \"%2$s\" не дозволено",
"PluginSettingsSaveFailed": "Помилка при збереженні налаштувань плагіна",
+ "PluginSettingsSaveSuccess": "Налаштування плагіну оновлені.",
+ "SettingsSaveSuccess": "Налаштування оновлені.",
"SendPluginUpdateCommunication": "Відправити email з повідомленням, коли для плагіна буде доступна нова версія",
"SendPluginUpdateCommunicationHelp": "Лист буде відправлено суперкористувачеві коли буде доступна нова версія плагіна.",
"StableReleases": "Якщо Piwik є важливою частиною вашого бізнесу, ми рекомендуємо використовувати останню стабільну версію. Якщо ви використовуєте останню бета версію, і ви знайшли помилку або є пропозиція, будь ласка, %1$sперейдіть за посиланням%2$s.",
diff --git a/plugins/CoreAdminHome/templates/home.twig b/plugins/CoreAdminHome/templates/home.twig
index b090ae0465..aaf5afc5ba 100644
--- a/plugins/CoreAdminHome/templates/home.twig
+++ b/plugins/CoreAdminHome/templates/home.twig
@@ -35,7 +35,7 @@
{% endif %}
{% if isMarketplaceEnabled %}
- <div piwik-widget-loader='{"module":"CorePluginsAdmin","action":"getNewPlugins", "isAdminPage": "1"}'></div>
+ <div piwik-widget-loader='{"module":"Marketplace","action":"getNewPlugins", "isAdminPage": "1"}'></div>
{% endif %}
{{ postEvent('Template.adminHome') }}
diff --git a/plugins/CoreConsole/Commands/GeneratePlugin.php b/plugins/CoreConsole/Commands/GeneratePlugin.php
index cfdaee35f5..611a177fbb 100644
--- a/plugins/CoreConsole/Commands/GeneratePlugin.php
+++ b/plugins/CoreConsole/Commands/GeneratePlugin.php
@@ -11,11 +11,11 @@ namespace Piwik\Plugins\CoreConsole\Commands;
use Piwik\Filesystem;
use Piwik\Plugins\ExamplePlugin\ExamplePlugin;
-use Piwik\Version;
use Piwik\Plugin;
-use Symfony\Component\Console\Input\ArrayInput;
+use Piwik\Version;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Output\OutputInterface;
/**
@@ -79,6 +79,7 @@ class GeneratePlugin extends GeneratePluginBase
}
$this->copyTemplateToPlugin($exampleFolder, $pluginName, $replace, $whitelistFiles);
+ $this->checkAndUpdateRequiredPiwikVersion($pluginName, new NullOutput());
if ($isTheme) {
$this->writeSuccessMessage($output, array(
diff --git a/plugins/CoreConsole/Commands/GeneratePluginBase.php b/plugins/CoreConsole/Commands/GeneratePluginBase.php
index f5ca71a405..38f53b4d1b 100644
--- a/plugins/CoreConsole/Commands/GeneratePluginBase.php
+++ b/plugins/CoreConsole/Commands/GeneratePluginBase.php
@@ -123,10 +123,18 @@ abstract class GeneratePluginBase extends ConsoleCommand
$pluginJson['require'] = array();
}
- $piwikVersion = Version::VERSION;
- $nextMajorVersion = (int) $piwikVersion + 1;
+ $piwikVersion = Version::VERSION;
+ $nextMajorVersion = (int) substr($piwikVersion, 0, strpos($piwikVersion, '.')) + 1;
$secondPartPiwikVersionRequire = ',<' . $nextMajorVersion . '.0.0-b1';
- $newRequiredVersion = '>=' . $piwikVersion . $secondPartPiwikVersionRequire;
+ if (false === strpos($piwikVersion, '-')) {
+ // see https://github.com/composer/composer/issues/4080 we need to specify -stable otherwise it would match
+ // $piwikVersion-dev meaning it would also match all pre-released. However, we only want to match a stable
+ // release
+ $piwikVersion.= '-stable';
+ }
+
+ $newRequiredVersion = sprintf('>=%s,<%d.0.0', $piwikVersion, $nextMajorVersion);
+
if (!empty($pluginJson['require']['piwik'])) {
$requiredVersion = trim($pluginJson['require']['piwik']);
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index 9a554fb2b8..60f0aa22f9 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\CoreHome;
use Exception;
use Piwik\API\Request;
use Piwik\Common;
+use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\FrontController;
use Piwik\Notification\Manager as NotificationManager;
@@ -19,7 +20,6 @@ use Piwik\Plugin\Report;
use Piwik\Widget\Widget;
use Piwik\Plugins\CoreHome\DataTableRowAction\MultiRowEvolution;
use Piwik\Plugins\CoreHome\DataTableRowAction\RowEvolution;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
use Piwik\Plugins\Dashboard\DashboardManagerControl;
use Piwik\Plugins\UsersManager\API;
use Piwik\Site;
@@ -264,7 +264,8 @@ class Controller extends \Piwik\Plugin\Controller
// perform check (but only once every 10s)
UpdateCheck::check($force = false, UpdateCheck::UI_CLICK_CHECK_INTERVAL);
- MarketplaceApiClient::clearAllCacheEntries();
+ $marketplace = StaticContainer::get('Piwik\Plugins\Marketplace\Api\Client');
+ $marketplace->clearAllCacheEntries();
$view = new View('@CoreHome/checkForUpdates');
$this->setGeneralVariablesView($view);
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index 4c5abc8071..f5a1a594bc 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -239,10 +239,7 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "plugins/CorePluginsAdmin/angularjs/field/field.directive.js";
$jsFiles[] = "plugins/CorePluginsAdmin/angularjs/save-button/save-button.directive.js";
$jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-filter.directive.js";
- $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js";
$jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js";
- $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js";
- $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js";
$jsFiles[] = "plugins/CoreHome/javascripts/iframeResizer.min.js";
}
diff --git a/plugins/CoreHome/Widgets/GetSystemSummary.php b/plugins/CoreHome/Widgets/GetSystemSummary.php
index 9f09a57851..fcd7d76316 100644
--- a/plugins/CoreHome/Widgets/GetSystemSummary.php
+++ b/plugins/CoreHome/Widgets/GetSystemSummary.php
@@ -46,12 +46,17 @@ class GetSystemSummary extends Widget
public function render()
{
- $users = Request::processRequest('UsersManager.getUsers', array('filter_limit' => '-1'));
+ $userLogins = Request::processRequest('UsersManager.getUsersLogin', array('filter_limit' => '-1'));
$websites = Request::processRequest('SitesManager.getAllSites', array('filter_limit' => '-1'));
+ $numUsers = count($userLogins);
+ if (in_array('anonymous', $userLogins)) {
+ $numUsers--;
+ }
+
return $this->renderTemplate('getSystemSummary', array(
'numWebsites' => count($websites),
- 'numUsers' => count($users),
+ 'numUsers' => $numUsers,
'numSegments' => $this->getNumSegments(),
'numPlugins' => $this->getNumPlugins(),
'piwikVersion' => Version::VERSION,
diff --git a/plugins/CoreHome/lang/ar.json b/plugins/CoreHome/lang/ar.json
index 36ac2bff0e..1f1edb83d0 100644
--- a/plugins/CoreHome/lang/ar.json
+++ b/plugins/CoreHome/lang/ar.json
@@ -14,7 +14,6 @@
"Default": "الافتراضي",
"DonateCall1": "لن يكلفك بايويك قرشاً في استخدامه أبداً، ولكن ذلك لا يعني أنه لا يكلفنا شيئاً في تطويره.",
"DonateCall2": "يحتاج بايويك إلى دعمك المستمر لينمو ويزدهر.",
- "DonateCall3": "إذا شعرت أن بايويك قد أضاف قيمة كبيرة إلى أعمالك، %1$sنرجو منك التبرع!%2$s",
"DonateFormInstructions": "انقر على الشريط لاختيار مبلغ، ثم انقر على اشتراك للتبرع.",
"ExcludeRowsWithLowPopulation": "كافة الصفوف معروضة %s استثني الكثافات المنخفضة",
"ExternalHelp": "مساعدة (ينفتح في تبويب جديد)",
diff --git a/plugins/CoreHome/lang/bg.json b/plugins/CoreHome/lang/bg.json
index e6d4681d4d..fc744263a7 100644
--- a/plugins/CoreHome/lang/bg.json
+++ b/plugins/CoreHome/lang/bg.json
@@ -11,7 +11,6 @@
"Default": "подразбиране",
"DonateCall1": "Piwik винаги ще бъде безплатен за използване, но това не означава, че ние нямаме разходи за развитието му.",
"DonateCall2": "Piwik се нуждае от вашата подкрепа, за да продължава да расте и процъфтява.",
- "DonateCall3": "В случай, че Piwik помага на вашия бизнес или услуги, които сте пуснали, %1$sмоля, направете дарение!%2$s",
"DonateFormInstructions": "Изберете стойност посредством плъзгача, след което натиснете бутона за абониране, за да направите дарение.",
"ExcludeRowsWithLowPopulation": "Всички редове са показани %s С изключение на тези с ниски стойности",
"ExternalHelp": "Помощ (отваря се в нов прозорец)",
diff --git a/plugins/CoreHome/lang/cs.json b/plugins/CoreHome/lang/cs.json
index e582315197..88ff41eeb9 100644
--- a/plugins/CoreHome/lang/cs.json
+++ b/plugins/CoreHome/lang/cs.json
@@ -7,6 +7,7 @@
"ClickToEditX": "Klikněte pro úpravu %s",
"CloseSearch": "Zavřít vyhledávání",
"CloseWidgetDirections": "Tento widget můžete zavřít kliknutím na ikonu X na horní části widgetu.",
+ "ChooseX": "Vyberte %1$s",
"DataForThisReportHasBeenPurged": "Data pro toto hlášení jsou starší než %s měsíců a byla odstraněna.",
"DataTableExcludeAggregateRows": "Agregované řádky jsou zobrazeny %s Skrýt",
"DataTableIncludeAggregateRows": "Agregované řádky jsou skryty %s Zobrazit",
@@ -14,7 +15,7 @@
"Default": "výchozí",
"DonateCall1": "Piwik lze používat zadarmo, to ale neznamená, že jeho vývoj nic nestojí.",
"DonateCall2": "Piwik potřebuje Vaši podporu, aby mohl růst a prosperovat.",
- "DonateCall3": "Pokud se domníváte, že vám Piwik pomohl, %1$szvažte dar%2$s.",
+ "DonateCall3": "Pokud Piwik pomáhá vašemu podnikáním nebo projektu, %1$szvažte prosím zaslání daru%2$s nebo %3$szakoupení prémiových funkcí%4$s.",
"DonateFormInstructions": "Klikněte na posuvník ke zvolení částky, poté klikněte na tlačítko Subscribe.",
"ExcludeRowsWithLowPopulation": "Všechny řádky jsou zobrazeny %s Vyloučit nízkou populaci",
"ExternalHelp": "Nápověda (otevře se v nové záložce)",
diff --git a/plugins/CoreHome/lang/da.json b/plugins/CoreHome/lang/da.json
index 7b1abfa46d..d66fb96d36 100644
--- a/plugins/CoreHome/lang/da.json
+++ b/plugins/CoreHome/lang/da.json
@@ -14,7 +14,6 @@
"Default": "standard",
"DonateCall1": "Piwik vil altid ikke koste noget at bruge, men det betyder ikke, at det ikke koster os noget at lave.",
"DonateCall2": "Piwik har brug for din fortsatte støtte til at vokse og trives.",
- "DonateCall3": "Synes du, at Piwik har tilføjet væsentlig merværdi til dig eller din virksomhed, %1$s overvej at donere!%2$s",
"DonateFormInstructions": "Klik på skyderen for at vælge et beløb, og klik derefter på vælg at donere.",
"ExcludeRowsWithLowPopulation": "Alle rækker vises %s Udeluk lav population",
"ExternalHelp": "Hjælp (åbnes i en ny fane)",
diff --git a/plugins/CoreHome/lang/de.json b/plugins/CoreHome/lang/de.json
index 920bdbeedc..215c3c4b52 100644
--- a/plugins/CoreHome/lang/de.json
+++ b/plugins/CoreHome/lang/de.json
@@ -14,7 +14,6 @@
"Default": "Standard",
"DonateCall1": "Die Nutzung von Piwik wird immer kostenlos bleiben, was aber nicht heißt, dass es uns nichts kostet, es zu erstellen.",
"DonateCall2": "Piwik braucht Ihre dauerhafte Unterstützung um zu wachsen und zu gedeihen.",
- "DonateCall3": "Finden Sie, dass Piwik einen deutlichen Mehrwert für Sie oder Ihr Unternehmen hat? %1$sBitte spenden Sie!%2$s",
"DonateFormInstructions": "Klicken Sie auf den Slider um den Betrag zu wählen, dann klicken Sie auf 'Subscribe' um zu spenden.",
"ExcludeRowsWithLowPopulation": "Alle Zeilen werden angezeigt %s Niedrige Werte ausschließen",
"ExternalHelp": "Hilfe (öffnet in neuem Tab)",
diff --git a/plugins/CoreHome/lang/el.json b/plugins/CoreHome/lang/el.json
index b56a737a6c..3a1c3531ec 100644
--- a/plugins/CoreHome/lang/el.json
+++ b/plugins/CoreHome/lang/el.json
@@ -7,6 +7,7 @@
"ClickToEditX": "Κάντε κλικ για να επεξεργαστείτε το %s",
"CloseSearch": "Κλείσιμο αναζήτησης",
"CloseWidgetDirections": "Μπορείτε να κλείσετε αυτή τη λειτουργία κάνοντας κλικ στο εικονίδιο 'X' στην κορυφή του widget.",
+ "ChooseX": "Επιλέξτε %1$s",
"DataForThisReportHasBeenPurged": "Τα δεδομένα για αυτή την αναφορά είναι περισσότερα από %s μήνες και κόπηκαν.",
"DataTableExcludeAggregateRows": "Οι συγκεντρωτικές εγγραφές είναι ορατές %s Απόκρυψη",
"DataTableIncludeAggregateRows": "Συγκεντρωτικές εγγραφές είναι κρυφές %s Προβολή",
@@ -14,7 +15,7 @@
"Default": "προεπιλογή",
"DonateCall1": "Το Piwik θα είναι πάντα δωρεάν, αλλά αυτό δεν σημαίνει ότι δεν κοστίζει τίποτα για να φτιαχτεί.",
"DonateCall2": "Το Piwik χρειάζεται τη συνεχή υποστήριξή σας για να αναπτυχθεί και να ευδοκιμήσει.",
- "DonateCall3": "Εάν θεωρείτε ότι το Piwik έχει προσθέσει σημαντική αξία στην επιχείρηση ή στο εγχείρημά σας, %1$sπαρακαλώ δωρίστε!%2$s",
+ "DonateCall3": "Αν πιστεύετε ότι το Piwik σάς παρέχει σημαντική αξία στην επιχείρηση ή το εγχείρημά σας, %1$sπαρακαλούμε σκεφτείτε την δωρεά%2$s ή %3$sτην αγορά ενός προχωρημένου επί πληρωμή χαρακτηριστικού%4$s.",
"DonateFormInstructions": "Κάντε κλικ στο ρυθμιστικό για να επιλέξετε ένα ποσό, στη συνέχεια, κάντε κλικ στο εγγραφείτε και να κάνετε δωρεά.",
"ExcludeRowsWithLowPopulation": "Προβάλλονται όλες οι εγγραφές %s Εξαίρεση αυτών με μικρό πλήθος",
"ExternalHelp": "Βοήθεια (ανοίγει σε νέα καρτέλα)",
diff --git a/plugins/CoreHome/lang/en.json b/plugins/CoreHome/lang/en.json
index 500d67868c..808250348e 100644
--- a/plugins/CoreHome/lang/en.json
+++ b/plugins/CoreHome/lang/en.json
@@ -15,7 +15,7 @@
"Default": "default",
"DonateCall1": "Piwik will always cost you nothing to use, but that doesn't mean it costs us nothing to make.",
"DonateCall2": "Piwik needs your continued support to grow and thrive.",
- "DonateCall3": "If you feel that Piwik has added significant value to your business or endeavour, %1$splease consider donating!%2$s",
+ "DonateCall3": "If you feel that Piwik has added significant value to your business or endeavour, %1$splease consider donating%2$s or %3$spurchasing a premium feature%4$s.",
"DonateFormInstructions": "Click on the slider to select an amount, then click subscribe to donate.",
"ExcludeRowsWithLowPopulation": "All rows are shown %s Exclude low population",
"ExternalHelp": "Help (opens in new tab)",
@@ -65,6 +65,7 @@
"QuickAccessTitle": "Search for %s. Use the arrow keys to navigate through search results. Shortcut: Press 'f' to search.",
"MenuEntries": "Menu entries",
"Segments": "Segments",
+ "OneClickUpdateNotPossibleAsMultiServerEnvironment": "The one-click update is not available as you are using Piwik with multiple servers. Please download the latest version from %1$s to proceed.",
"AdblockIsMaybeUsed": "In case you are using an ad blocker, please disable it for this site to make sure Piwik works without any issues.",
"ChangeCurrentWebsite": "Choose a website, currently selected website: %s"
}
diff --git a/plugins/CoreHome/lang/es.json b/plugins/CoreHome/lang/es.json
index 26b169e73a..bf73956956 100644
--- a/plugins/CoreHome/lang/es.json
+++ b/plugins/CoreHome/lang/es.json
@@ -14,7 +14,6 @@
"Default": "predeterminado",
"DonateCall1": "​Piwik siempre será gratis, pero eso no significa que no nos cueste nada hacerlo.",
"DonateCall2": "Piwik necesita su apoyo para crecer y prosperar.",
- "DonateCall3": "Si siente que Piwik ha añadido un valor significativo a su negocio o empresa, %1$s​Por favor, considere hacer una donación!%2$s",
"DonateFormInstructions": "Haga clic en el control deslizante para seleccionar una cantidad, luego haga clic en suscribirse para donar.",
"ExcludeRowsWithLowPopulation": "Mostrar todas las filas %s Excluir baja población",
"ExternalHelp": "Ayuda (se abre en una nueva pestaña)",
diff --git a/plugins/CoreHome/lang/fi.json b/plugins/CoreHome/lang/fi.json
index aa7e79828e..dffae61873 100644
--- a/plugins/CoreHome/lang/fi.json
+++ b/plugins/CoreHome/lang/fi.json
@@ -11,7 +11,6 @@
"Default": "oletus",
"DonateCall1": "Piwik on sinulle aina ilmainen, mutta tämä ei tarkoita sitä, että sen luominen olisi ilmaista meille.",
"DonateCall2": "Piwik tarvitsee sinun tukeasi kasvaakseen ja menestyäkseen.",
- "DonateCall3": "Jos Piwik on mielestäsi lisännyt liiketoimesi arvoa, olethan ystävällinen ja harkitset %1$slahjoitusta!%2$s",
"DonateFormInstructions": "Klikkaa vierityspalkkia valitaksesi summa ja rekisteröi sitten lahjoitus.",
"ExcludeRowsWithLowPopulation": "Kaikki rivit näytetään %s Piilota vajaat rivit",
"ExternalHelp": "Apua (aukeaa uudessa ikkunassa)",
diff --git a/plugins/CoreHome/lang/fr.json b/plugins/CoreHome/lang/fr.json
index cb00094658..d0f4dd44d2 100644
--- a/plugins/CoreHome/lang/fr.json
+++ b/plugins/CoreHome/lang/fr.json
@@ -7,6 +7,7 @@
"ClickToEditX": "Cliquer pour éditer %s",
"CloseSearch": "Recherche précise",
"CloseWidgetDirections": "Vous pouvez fermer ce gadget en cliquant sur l'icône en forme de \"X\" en haut du gadget.",
+ "ChooseX": "Choisir %1$s",
"DataForThisReportHasBeenPurged": "Les données pour ce rapport ont plus de %s mois et ont été purgées.",
"DataTableExcludeAggregateRows": "Les lignes agrégées sont affichées %s Les cacher",
"DataTableIncludeAggregateRows": "Les lignes agrégées sont cachées %s Les afficher",
@@ -14,7 +15,7 @@
"Default": "par défaut",
"DonateCall1": "Piwik ne vous coûtera jamais rien à utiliser, mais cela ne veut pas dire que ça ne nous coûte rien pour le réaliser.",
"DonateCall2": "Piwik a besoin de votre support pour continuer croître et prospérer.",
- "DonateCall3": "Si vous pensez que Piwik a ajouté une valeur significative à votre entreprise ou à votre projet, %1$s pensez à faire un don s'il vous plait ! %2$s",
+ "DonateCall3": "Si vous pensez que Piwik a ajouté une valeur significative à votre entreprise ou à votre projet, %1$s pensez à faire un don s'il vous plait ! %2$s ou %3$sà acheter une fonctionnalité prenium%4$s.",
"DonateFormInstructions": "Cliquez sur le curseur pour sélectionner un montant, puis cliquez sur s'abonner à faire un don.",
"ExcludeRowsWithLowPopulation": "Toutes les lignes sont affichées %s Exclure celles peu signifiantes",
"ExternalHelp": "Aide (nouvel onglet)",
diff --git a/plugins/CoreHome/lang/hi.json b/plugins/CoreHome/lang/hi.json
index aea7e274fc..a0d23366f8 100644
--- a/plugins/CoreHome/lang/hi.json
+++ b/plugins/CoreHome/lang/hi.json
@@ -11,7 +11,6 @@
"Default": "डिफ़ॉल्ट",
"DonateCall1": "Piwik उपयोग करने के लिए आपके कुछ भी खर्च नहीं होंगे, लेकिन यह मतलब नहीं बनाने के लिए कोई खर्च नहीं लगता है.",
"DonateCall2": "Piwik के बढ़ने और फूलने के लिए आपके निरंतर समर्थन की जरूरत है.",
- "DonateCall3": "आपको लग रहा है Piwik ने आपके व्यवसाय या प्रयास के लिए महत्वपूर्ण मूल्य जोड़ा है, %1$s कृपया दान करने पर विचार करे!%2$s",
"DonateFormInstructions": "एक राशि का चयन करने के लिए स्लाइडर पर क्लिक करें, फिर दान की सदस्यता पर क्लिक करें.",
"ExcludeRowsWithLowPopulation": "सभी पंक्तियों %s को दिखाया जाता है कम आबादी बाहर निकालें",
"ExternalHelp": "सहायता (नए टैब में खुलती है)",
diff --git a/plugins/CoreHome/lang/id.json b/plugins/CoreHome/lang/id.json
index 853e3e51f1..bbbed38323 100644
--- a/plugins/CoreHome/lang/id.json
+++ b/plugins/CoreHome/lang/id.json
@@ -10,7 +10,6 @@
"Default": "asali",
"DonateCall1": "Piwik akan selalu tidak membebani Anda biaya, tapi bukan berarti bahwa biaya tidak berarti bagi kami.",
"DonateCall2": "Piwik membutuhkan bantuan berkelanjutan Anda untuk tumbuh dan berkembang.",
- "DonateCall3": "Bila Anda merasa bahwa Piwik memberi nilai berarti dalam bisnis atau usaha Anda, %1$sharap memberi pertimbangkan untuk menyumbang!%2$s",
"DonateFormInstructions": "Klik pada penggeser untuk memilih jumlah, kemudian klik berlangganan untuk menyumbang.",
"ExcludeRowsWithLowPopulation": "Seluruh baris telah ditampilkan %s Populasi rendah dikecualikan",
"FlattenDataTable": "Laporan ditampilkan berurutan %s Buat tetap",
diff --git a/plugins/CoreHome/lang/it.json b/plugins/CoreHome/lang/it.json
index a19b2c1377..8b52a1603d 100644
--- a/plugins/CoreHome/lang/it.json
+++ b/plugins/CoreHome/lang/it.json
@@ -14,7 +14,6 @@
"Default": "predefinito",
"DonateCall1": "Piwik non costerà mai nulla a voi per il suo utilizzo, ma ciò non significa che non costi nulla a noi svilupparlo.",
"DonateCall2": "Piwik ha bisogno del vostro costante supporto per crescere e prosperare.",
- "DonateCall3": "Se ritenete che Piwik abbia aggiunto un valore significativo alla vostra attività, %1$svi preghiamo di considerare una donazione!%2$s",
"DonateFormInstructions": "Fai clic sul cursore per selezionare una somma, quindi fai clic su sottoscrivi per donare.",
"ExcludeRowsWithLowPopulation": "Tutte le righe sono visualizzate %s Escludi quelle scarsamente popolate",
"ExternalHelp": "Aiuto (apri in una nuova scheda)",
diff --git a/plugins/CoreHome/lang/ja.json b/plugins/CoreHome/lang/ja.json
index 496e0b644a..3f697494a8 100644
--- a/plugins/CoreHome/lang/ja.json
+++ b/plugins/CoreHome/lang/ja.json
@@ -11,7 +11,6 @@
"Default": "デフォルト",
"DonateCall1": "Piwik を使用するのに費用はかかりません。しかし、 Piwik の制作に費用がかかっていないと言う意味ではありません",
"DonateCall2": "Piwik が成長し、成功するには、あなたの継続的なサポートが必要です",
- "DonateCall3": "もし Piwik が少しでもあなたの事業の推進や成功に役に立ったと実感して頂けたら、 %1$splease consider donating!%2$s",
"DonateFormInstructions": "スライダで寄付する金額を選択して寄付するをクリック",
"ExcludeRowsWithLowPopulation": "全ての行を表示 %s 少ない数の行を除く",
"ExternalHelp": "ヘルプ(新しいタブで開きます)",
diff --git a/plugins/CoreHome/lang/ko.json b/plugins/CoreHome/lang/ko.json
index 7252cc00ac..7f051b33ce 100644
--- a/plugins/CoreHome/lang/ko.json
+++ b/plugins/CoreHome/lang/ko.json
@@ -14,7 +14,6 @@
"Default": "기본",
"DonateCall1": "Piwik을 사용하는데 당신의 비용이 들지는 않을 것입니다. 그렇다고 우리가 이것을 만드는데 비용이 들지 않다는 의미는 아닙니다.",
"DonateCall2": "Piwik은 성장하고 번영하기 위해 당신의 지속적인 지원이 필요합니다.",
- "DonateCall3": "Piwik이 당신의 업무나 시도하는 일에 특별한 가치를 더해준다고 느끼신다면, %1$s기부해 주세요!%2$s",
"DonateFormInstructions": "슬라이더를 클릭하여 금액을 선택하고, 기부에 기명을 클릭합니다.",
"ExcludeRowsWithLowPopulation": "모든 행을 표시 %s 적은 량의 항목은 제외",
"ExternalHelp": "도움말 (새로운 탭에 열기)",
diff --git a/plugins/CoreHome/lang/nb.json b/plugins/CoreHome/lang/nb.json
index 163ae42380..c66898d05b 100644
--- a/plugins/CoreHome/lang/nb.json
+++ b/plugins/CoreHome/lang/nb.json
@@ -7,6 +7,7 @@
"ClickToEditX": "Klikk for å redigere %s",
"CloseSearch": "Lukk søk",
"CloseWidgetDirections": "Du kan lukke dette elementet ved å klikke på X-ikonet over widgeten.",
+ "ChooseX": "Velg %1$s",
"DataForThisReportHasBeenPurged": "Dataene for denne rapporten er mer enn %s måneder gamle og har blitt fjernet.",
"DataTableExcludeAggregateRows": "Aggregerte rader vises %s Skjul dem",
"DataTableIncludeAggregateRows": "Aggregerte rader er skjult %s Vis dem",
@@ -14,7 +15,6 @@
"Default": "standard",
"DonateCall1": "Det vil aldri koste noe å bruke Piwik, men det betyr ikke at det ikke koster oss noe å lage.",
"DonateCall2": "Piwik trenger din fortsatte støtte for å vokse og blomstre.",
- "DonateCall3": "Hvis du føler at Piwik har signifikant verdi for din bedrifter, %1$svurder å donere!%2$s",
"DonateFormInstructions": "Klikk på glidebryteren for å velge beløp, deretter klikk abonnere for å donere.",
"ExcludeRowsWithLowPopulation": "All rader vises %s Ekskluder lav populasjon",
"ExternalHelp": "Hjelp (åpnes i ny fane)",
@@ -28,6 +28,7 @@
"InjectedHostWarningIntro": "Du har tilgang til Piwik fra %1$s, men Piwik er konfigurert til å kjøre på adressen: %2$s",
"JavascriptDisabled": "JavaScript må være aktivert for at du skal kunne bruke Piwik i standardvisning.<br \/>Det ser ut til at JavaScript enten er deaktivert eller ikke støttet av din nettleser.<br \/>For å bruke standardvisning, må du aktivere JavaScript i nettleserinnstillingene og deretter %1$sprøve igjen%2$s.<br \/>",
"MainNavigation": "Hovednavigasjon",
+ "MakeADifference": "Gjør en forskjell: %1$sdoner nå%2$s for å bidra til Piwik 3.0!",
"MakeOneTimeDonation": "Bidra med en engangsdonasjon i stedet.",
"Menu": "Meny",
"NoPrivilegesAskPiwikAdmin": "Du er logget inn som «%1$s», men det ser ut til at du ikke har noen rettigheter satt i Piwik. %2$s Be din Piwik-administrator (klikk for å sende e-post)%3$s å gi deg «vis»-tilgang til et nettsted.",
diff --git a/plugins/CoreHome/lang/nl.json b/plugins/CoreHome/lang/nl.json
index 693966f2dd..233b8477ee 100644
--- a/plugins/CoreHome/lang/nl.json
+++ b/plugins/CoreHome/lang/nl.json
@@ -14,7 +14,6 @@
"Default": "standaard",
"DonateCall1": "Piwik zal altijd gratis zijn om te gebruiken, maar dat wil niet zeggen dat het niks kost om te maken.",
"DonateCall2": "Piwik heeft uw voortdurende steun nodig om te groeien.",
- "DonateCall3": "Als u vindt dat Piwik een grote hulp is voor uw zaak, %1$s overweeg dan een donatie!%2$s",
"DonateFormInstructions": "Klik op de schuifbalk om een bedrag te selecteren, en klik dan subscribe om te doneren.",
"ExcludeRowsWithLowPopulation": "Alle rijen worden getoond %s Verberg de rijen met een lage populatie",
"ExternalHelp": "Help (opent in een nieuw tabblad)",
diff --git a/plugins/CoreHome/lang/pl.json b/plugins/CoreHome/lang/pl.json
index dfee5d49d0..898d381718 100644
--- a/plugins/CoreHome/lang/pl.json
+++ b/plugins/CoreHome/lang/pl.json
@@ -10,7 +10,6 @@
"Default": "domyślne",
"DonateCall1": "Piwik zawsze nie będzie Cię nic kosztował, ale to nie znaczy, że nic nas nie kosztuje aby go tworzyć.",
"DonateCall2": "Piwik potrzebuje Twojego ciągłego wsparcia by rosnąć i kwitnąć.",
- "DonateCall3": "Jeśli uważasz, że Piwik wniósł znaczącą wartość do Twojej firmy lub przedsięwzięcia, %1$srozważ przekazanie dotacji!%2$s",
"DonateFormInstructions": "Kliknij na suwaku aby wybrać ilość, następnie kliknij subskrybuj aby wesprzeć.",
"ExternalHelp": "Pomoc (otworzy się w nowym oknie)",
"FlattenDataTable": "Raport jest hierarchiczny %s Przełącz na płaski",
diff --git a/plugins/CoreHome/lang/pt-br.json b/plugins/CoreHome/lang/pt-br.json
index 8a33ec75f5..35060bd57a 100644
--- a/plugins/CoreHome/lang/pt-br.json
+++ b/plugins/CoreHome/lang/pt-br.json
@@ -14,7 +14,6 @@
"Default": "Padrão",
"DonateCall1": "Piwik sempre custará nada para usar, mas isso não significa que não nos custa nada para fazê-lo.",
"DonateCall2": "Piwik precisa do seu apoio continuado para crescer e prosperar.",
- "DonateCall3": "Se você sentir que Piwik tem acrescentado valor significativo para o seu negócio ou empreendimento,%1$sconsidere doar para o projeto!%2$s",
"DonateFormInstructions": "Clique no controle deslizante para selecionar um valor, clique em subscrever para doar.",
"ExcludeRowsWithLowPopulation": "Todas as linhas são mostradas %s Excluir população de baixa.",
"ExternalHelp": "Ajuda (abre em uma nova aba)",
diff --git a/plugins/CoreHome/lang/pt.json b/plugins/CoreHome/lang/pt.json
index 26031179e2..3e319af837 100644
--- a/plugins/CoreHome/lang/pt.json
+++ b/plugins/CoreHome/lang/pt.json
@@ -1,12 +1,12 @@
{
"CoreHome": {
"CategoryNoData": "Sem dados nesta categoria. Tente o \"Incluir toda a população\".",
+ "CheckForUpdates": "Procurar actualizações",
"DataTableExcludeAggregateRows": "Linhas agregadas encontram-se visíveis %s Esconda-as",
"DataTableIncludeAggregateRows": "Linhas agregadas encontram-se escondidas %s Mostre-as",
"Default": "defeito",
"DonateCall1": "O Piwik nunca lhe custará nada para usar, mas isso não quer dizer que não nos custe nada para o criar.",
"DonateCall2": "O Piwik presisa do seu contínuo suporte para crescer e brilhar.",
- "DonateCall3": "Se você sente que o Piwik adicionou um valor significante ao seu negócio, %1$spor favor considere realizar um donativo!%2$s",
"JavascriptDisabled": "JavaScript tem que estar activado para poder usar Piwik no esquema padrão.<br \/>No entanto, parece que JavaScript está desactivado ou não é suportado pelo seu navegador.<br \/>Para usar o esquema padrão, active JavaScript nas opções do seu navegador, depois %1$stente de novo%2$s.<br \/>",
"Menu": "Menu",
"PageOf": "%1$s de %2$s",
diff --git a/plugins/CoreHome/lang/ro.json b/plugins/CoreHome/lang/ro.json
index 91ca9a6dee..cfd1315af9 100644
--- a/plugins/CoreHome/lang/ro.json
+++ b/plugins/CoreHome/lang/ro.json
@@ -10,7 +10,6 @@
"Default": "implicit",
"DonateCall1": "Piwik va fi folosit de dumneavoastra gratuit intotdeauna, dar aceasta nu inseamna ca pe noi nu ne costa nimic sa il facem.",
"DonateCall2": "Piwik are nevoie de sprijinul dumneavoastra continuu pentru a continua sa se dezvolte si sa progreseze.",
- "DonateCall3": "Daca simtiti ca Piwik a adus o valoare semnificativa afacerii sau incercarii Dvs, %1$sva rugam sa luati in considerare sa donati!%2$s",
"DonateFormInstructions": "Click pe slider pentru a alege o suma, apoi click Subscribe pentru a dona.",
"ExcludeRowsWithLowPopulation": "Toate randurile sunt afisate %s Exclude popularea putina",
"ExternalHelp": "Ajutor (se deschide in tab nou)",
diff --git a/plugins/CoreHome/lang/ru.json b/plugins/CoreHome/lang/ru.json
index 385b0a23c7..690f1ab9c9 100644
--- a/plugins/CoreHome/lang/ru.json
+++ b/plugins/CoreHome/lang/ru.json
@@ -14,7 +14,6 @@
"Default": "по умолчанию",
"DonateCall1": "Piwik всегда будет бесплатным для использования, но это не значит, что нам это ничего не стоит.",
"DonateCall2": "Piwik нуждается в вашей постоянной поддержке, чтобы расти и процветать.",
- "DonateCall3": "Если вы думаете, что Piwik добавил существенное значение для вашего бизнеса или деятельности, %1$sпожалуйста, сделайте пожертвование!%2$s",
"DonateFormInstructions": "Выберите ползунком нужную сумму, а затем нажмите Subscribe для пожертвования и подписки.",
"ExcludeRowsWithLowPopulation": "Все строки отображены %s Кроме низких показателей",
"ExternalHelp": "Помощь (откроется в новой вкладке)",
diff --git a/plugins/CoreHome/lang/sk.json b/plugins/CoreHome/lang/sk.json
index 862f9e743c..4d5dc4001f 100644
--- a/plugins/CoreHome/lang/sk.json
+++ b/plugins/CoreHome/lang/sk.json
@@ -11,7 +11,6 @@
"Default": "Prednastavené",
"DonateCall1": "Používanie projektu Piwik Vás nebude nikdy nič stáť, ale to neznamená, že jeho vývoj nič nestojí.",
"DonateCall2": "Piwik potrebuje Vašu neustálu podporu aby rástol a prospieval.",
- "DonateCall3": "Ak máte pocit, že Piwik podstatne prispel k Vášmu biznisu alebo podnikaniu, %1$s prosím zvážte finančnú podporu!%2$s",
"DonateFormInstructions": "Kliknite na bežec a vyberte hodnotu, potom kliknite na subscribe -prispieť- pre finančnú podporu.",
"ExcludeRowsWithLowPopulation": "Všetky riadky sú zobrazené %s Vylúčiť nízku populáciu",
"ExternalHelp": "Nápoveda (otvorí sa nová tabuľka)",
diff --git a/plugins/CoreHome/lang/sq.json b/plugins/CoreHome/lang/sq.json
index 5cdd9531b6..d9114896d8 100644
--- a/plugins/CoreHome/lang/sq.json
+++ b/plugins/CoreHome/lang/sq.json
@@ -7,6 +7,7 @@
"ClickToEditX": "Klikoni që të përpunoni %s",
"CloseSearch": "Mbylle kërkimin",
"CloseWidgetDirections": "Këtë widget mund ta mbyllni duke klikuar mbi ikonën 'X' në krye të widget-it.",
+ "ChooseX": "Zgjidhni %1$s",
"DataForThisReportHasBeenPurged": "Të dhënat e këtij raporti janë më të vjetra se %s muaj dhe u pastruan.",
"DataTableExcludeAggregateRows": "Grumbulli i rreshtave është i shfaqur %s Fshihini",
"DataTableIncludeAggregateRows": "Grumbulli i rreshtave është i fshehur %s Shfaqini",
@@ -14,7 +15,7 @@
"Default": "parazgjedhje",
"DonateCall1": "Përdorimi i Piwik-ut s’do t’ju kushtojë kurrë një dysh, por kjo s’do të thotë që neve nuk na kushton krijimi i tij.",
"DonateCall2": "Piwik-u lyp përkrahjen tuaj që të rritet dhe lulëzojë.",
- "DonateCall3": "Nëse jeni të idesë se Piwik-u i ka shtuar vlerën biznesit tuaj apo përpjekjes tuaj, %1$sju lutemi shihni mundësinë e dhurimit për të!%2$s",
+ "DonateCall3": "Nëse jeni të mendimit se Piwik-u ka sjellë një shtim të vyer në biznesin apo përpjekjet tuaja, %1$sju lutemi, shihni mundësinë e dhurimit%2$s ose %3$sblerjes së paketës me pagesë%4$s.",
"DonateFormInstructions": "Klikoni mbi rrëshqitësin që të përzgjidhni një vlerë, mandej klikoni Pajtohuni, që të dhuroni.",
"ExcludeRowsWithLowPopulation": "Po shfaqen krejt rreshtat %s Përjashtoni popullatat e ulëta",
"ExternalHelp": "Ndihmë (hapet në skedë të re)",
@@ -51,7 +52,9 @@
"WebAnalyticsReports": "Raporte Analizash Web",
"YouAreUsingTheLatestVersion": "Po përdorni versionin më të ri të Piwik-ut!",
"ClickRowToExpandOrContract": "Klikoni mbi këtë rresht që të zgjeroni ose tkurrni nëntabelën.",
+ "UndoPivotBySubtable": "Ky raport është rrotulluar %s Zhbëjeni rrotullimin",
"NoSuchPage": "Kjo faqe s’ekziston",
+ "PivotBySubtable": "Ky raport s’është rrotulluar %1$s Rrotullojeni sipas %2$s",
"SystemSummaryWidget": "Përmbledhje Sistemi",
"SystemSummaryNWebsites": "%d sajte",
"SystemSummaryNSegments": "%d segmente",
diff --git a/plugins/CoreHome/lang/sr.json b/plugins/CoreHome/lang/sr.json
index b0c9f0a94f..dd8e1f2eaa 100644
--- a/plugins/CoreHome/lang/sr.json
+++ b/plugins/CoreHome/lang/sr.json
@@ -14,7 +14,6 @@
"Default": "podrazumevano",
"DonateCall1": "Piwik vas nikada neće ništa koštati ali to ne znači da nas Piwik ništa ne košta dok ga pravimo.",
"DonateCall2": "Piwiku je potrebna vaša stalna podrška kako bi rastao i napredovao.",
- "DonateCall3": "Ukoliko imate osećaj da je Piwik u znatnoj meri dodao vrednost vašem biznisu, %1$smolimo vas da razmislite o donaciji%2$s.",
"DonateFormInstructions": "Kliknite na klizač kako biste odabrali iznos pa onda kliknite na \"subscribe\"",
"ExcludeRowsWithLowPopulation": "Svi redovi su prikazani %s Sakrij slabu populaciju",
"ExternalHelp": "Pomoć (otvara se u novom tabu)",
diff --git a/plugins/CoreHome/lang/sv.json b/plugins/CoreHome/lang/sv.json
index 94131423ae..5c9784b5f4 100644
--- a/plugins/CoreHome/lang/sv.json
+++ b/plugins/CoreHome/lang/sv.json
@@ -11,7 +11,6 @@
"Default": "standard",
"DonateCall1": "Piwik kommer alltid vara gratis att använda men det innebär inte att det inte kostar något att skapa den.",
"DonateCall2": "Piwik behöver ditt fortsatta stöd för att växa och frodas.",
- "DonateCall3": "Om du tycker att Piwik har medfört ett ökat värde till ditt företag kanske du vill överväga att %1$sdonera!%2$s",
"DonateFormInstructions": "Klicka på slidern för att välja ett värde, klicka sedan på registrera för att donera.",
"ExcludeRowsWithLowPopulation": "Alla rader visas %s Dölj rader med låga värden",
"ExternalHelp": "Hjälp (öppnas i en ny flik)",
diff --git a/plugins/CoreHome/lang/tl.json b/plugins/CoreHome/lang/tl.json
index 9d88540047..95998055c1 100644
--- a/plugins/CoreHome/lang/tl.json
+++ b/plugins/CoreHome/lang/tl.json
@@ -10,7 +10,6 @@
"Default": "default",
"DonateCall1": "Ang Piwik ay palaging magdudulot sa iyo ng walang gastos, ngunit hindi ibig sabihin ay magdudulot ito sa amin upang walang gawin.",
"DonateCall2": "Kailangan ng Piwik ang iyong patuloy na suporta upang lumago at maging maunlad ito.",
- "DonateCall3": "Kung sa tingin mo ay nagdagdag ang Piwik ng makabuluhang halaga sa iyong negosyo o gawain, %1$s mangyaring isaalang-alang ang pagbibigay ng donasyon! %2$s",
"DonateFormInstructions": "Mag click sa slider upang pumili ng halaga, pagkatapos ay i-click ang subscribe upang magbigay ng donasyon.",
"ExcludeRowsWithLowPopulation": "Ang lahat ng mga hilera ay ipinapakita %s Ibukod ang mababang populasyon",
"ExternalHelp": "Tulong (bubukas sa bagong tab)",
diff --git a/plugins/CoreHome/lang/tr.json b/plugins/CoreHome/lang/tr.json
index c25cd34f33..8ec1d61d4e 100644
--- a/plugins/CoreHome/lang/tr.json
+++ b/plugins/CoreHome/lang/tr.json
@@ -11,7 +11,6 @@
"Default": "varsayılan",
"DonateCall1": "Piwik her zaman ücretsiz kullanılabilecek ancak bu durum geliştirmenin ücretsiz olduğu anlamına gelmiyor.",
"DonateCall2": "Gelişip ilerleyebilmesi için Piwik projesi sürekli desteğinize gerek duyuyor.",
- "DonateCall3": "Piwik işiniz için önemliyse ya da harcanan emeğe değiyorsa %1$slütfen bağış yapmayı düşünün%2$s",
"DonateFormInstructions": "Bağış tutarını seçmek için kaydırıcıya kullanın ve Bağış Yap düğmesine tıklayın.",
"ExcludeRowsWithLowPopulation": "Tüm satırlar görüntüleniyor %s Düşük dağılımlar katılmasın",
"ExternalHelp": "Yardım (yeni sekmede açılır)",
diff --git a/plugins/CoreHome/lang/uk.json b/plugins/CoreHome/lang/uk.json
index 197814814d..d58cc9953f 100644
--- a/plugins/CoreHome/lang/uk.json
+++ b/plugins/CoreHome/lang/uk.json
@@ -1,17 +1,21 @@
{
"CoreHome": {
"CategoryNoData": "Немає даних в цій категорії. Спробуйте \"Увімкнути усі показники\".",
+ "ChangeVisualization": "Зміна візуалізації",
"CheckForUpdates": "Перевірити на оновлення",
"CheckPiwikOut": "Перевірити Piwik на оновлення!",
"ClickToEditX": "Редагувати %s",
+ "CloseSearch": "Закрити пошук",
"CloseWidgetDirections": "Ви можете закрити цей віджет, натиснувши на значок 'X' у верхній частині віджета.",
+ "ChooseX": "Вибирати %1$s",
"DataForThisReportHasBeenPurged": "Дані для цього звіту зберігалися понад %s місяців і були видалені.",
"DataTableExcludeAggregateRows": "Вибрані рядки відображені %s Приховати їх",
"DataTableIncludeAggregateRows": "Вибрані рядки приховані %s Показати їх",
+ "DataTableHowToSearch": "Натисніть enter або клацніть значок пошуку для пошуку",
"Default": "за замовчуванням",
"DonateCall1": "Piwik завжди буде безкоштовним для використання, але це не означає, що нам це нічого не коштує.",
"DonateCall2": "Piwik потребує вашої постійної підтримки, щоб рости і процвітати.",
- "DonateCall3": "Якщо ви думаєте, що Piwik додав істотне значення для вашого бізнесу або діяльності, %1$sбудь ласка, зробіть пожертву!%2$s",
+ "DonateCall3": "Якщо ви відчуваєте, що Piwik додав значну цінність для вашого бізнесу або діяльності, %1$sбудь ласка, розгляньте можливість пожертвування%2$s або %3$sпридюайте преміум функції%4$s.",
"DonateFormInstructions": "Виберіть повзунком потрібну суму, а потім натисніть Subscribe для пожертвування і передплати.",
"ExcludeRowsWithLowPopulation": "Всі рядки відображені %s Крім низьких показників",
"ExternalHelp": "Допомога (відкриється в новій вкладці)",
@@ -25,9 +29,11 @@
"InjectedHostWarningIntro": "Зараз ви заходите в Piwik на %1$s, але Piwik був налаштований на цю адресу: %2$s.",
"JavascriptDisabled": "JavaScript Вам необхідно включити для коректного стандартного відображення Piwik.<br \/>Якщо Ви читаєте це повідомлення, значить JavaScript заборонений, або не підтримується вашим браузером.<br \/>Для використання стандартного виду, активуйте JavaScript в налаштуваннях вашого браузера, потім %1$sспробуйте оновити сторінку%2$s.<br \/>",
"MainNavigation": "Основна навігація",
+ "MakeADifference": "%1$sДопоможіть%2$s спонсоруючи Piwik 3.0!",
"MakeOneTimeDonation": "Зробити тільки пожертвування (без передплати).",
"Menu": "Меню",
"NoPrivilegesAskPiwikAdmin": "Ви авторизовані як '%1$s', але, здається, для вас не встановлені права в Piwik. %2$s Попросіть вашого адміністратора (натисніть, щоб написати лист)%3$s надати вам доступ для \"перегляду\" до статистики сайту.",
+ "OnlyForSuperUserAccess": "Цей віджет відображається в панелі управління за замовчуванням тільки для користувачів, що мають доступ до супер користувача.",
"PageOf": "%1$s з %2$s",
"PeriodRange": "Період",
"ReportGeneratedOn": "Звіт було складено %s",
@@ -47,7 +53,15 @@
"YouAreUsingTheLatestVersion": "У вас остання версія Piwik!",
"ClickRowToExpandOrContract": "Натисніть на цей рядок, щоб розширити або скоротити підтаблиці.",
"UndoPivotBySubtable": "Цей звіт був згенерований %s Відмінити генерацію",
+ "NoSuchPage": "Ця сторінка не існує",
"PivotBySubtable": "Цей звіт не згенерований %1$s Згенеровано %2$s",
+ "SystemSummaryWidget": "Відомості про систему",
+ "SystemSummaryNWebsites": "%d сайтів",
+ "SystemSummaryNSegments": "%d сегментів",
+ "SystemSummaryNActivatedPlugins": "%d активовані плагіни",
+ "SystemSummaryPiwikVersion": "Версія Piwik",
+ "SystemSummaryMysqlVersion": "Версія MySQL",
+ "SystemSummaryPhpVersion": "Версія PHP",
"QuickAccessTitle": "Пошук %s. Використовуйте клавіші зі стрілками для переходів в межах результатів пошуку. Швидкий доступ: натисніть 'f' для пошуку.",
"MenuEntries": "Пункти меню",
"Segments": "Сегменти",
diff --git a/plugins/CoreHome/lang/vi.json b/plugins/CoreHome/lang/vi.json
index 5bf5a2e9eb..a00080682b 100644
--- a/plugins/CoreHome/lang/vi.json
+++ b/plugins/CoreHome/lang/vi.json
@@ -10,7 +10,6 @@
"Default": "mặc định",
"DonateCall1": "Piwik sẽ luôn luôn cho bạn thấy không có gì để sử dụng, nhưng điều đó không có nghĩa là nó cho thấy chúng ta không có gì để làm.",
"DonateCall2": "Piwik cần sự hỗ trợ của bạn để phát triển và phát triển mạnh hơn.",
- "DonateCall3": "Nếu bạn cảm thấy Piwik đã làm tăng thêm giá trị đáng kể cho công việc hoặc sự nỗ lực của bạn , %1$s xin vui lòng quan tâm tài trợ cho Piwik !%2$s",
"DonateFormInstructions": "Click vào thanh trượt để chọn một số tiền, sau đó nhấp vào đăng ký để tài trợ",
"ExcludeRowsWithLowPopulation": "Tất cả các hàng được hiển thị %s Loại trừ dân số thấp",
"ExternalHelp": "Giúp đỡ (mở tab mới)",
diff --git a/plugins/CoreHome/lang/zh-cn.json b/plugins/CoreHome/lang/zh-cn.json
index d38a0e8c5f..6cf13a4a4d 100644
--- a/plugins/CoreHome/lang/zh-cn.json
+++ b/plugins/CoreHome/lang/zh-cn.json
@@ -11,7 +11,6 @@
"Default": "默认",
"DonateCall1": "Piwik 对您来说可以免费使用,但对我们来说并非零成本。",
"DonateCall2": "Piwik 的茁壮成长离不开您的支持。",
- "DonateCall3": "如果 Piwik 对您的业务有很大帮助,%1$s 请考虑捐助!%2$s",
"DonateFormInstructions": "点击下面的滑动条设定金额,然后点 Subscribe 按钮捐款",
"ExcludeRowsWithLowPopulation": "显示了所有的数据 %s 不显示低密度数据",
"ExternalHelp": "帮助(在新标签页打开)",
diff --git a/plugins/CoreHome/templates/_donate.twig b/plugins/CoreHome/templates/_donate.twig
index b0ff2ad99d..10263d0c87 100755
--- a/plugins/CoreHome/templates/_donate.twig
+++ b/plugins/CoreHome/templates/_donate.twig
@@ -5,7 +5,7 @@
{% else %}
<p>{{ 'CoreHome_DonateCall1'|translate }}</p>
<p><strong>{{ 'CoreHome_DonateCall2'|translate }}</strong></p>
- <p>{{ 'CoreHome_DonateCall3'|translate('<strong>','</strong>')|raw }}</p>
+ <p>{{ 'CoreHome_DonateCall3'|translate('<strong>','</strong>', '<a target="_blank" rel="nofollow" href="https://plugins.piwik.org/premium"><strong>', '</strong></a>')|raw }}</p>
{% endif %}
</div>
diff --git a/plugins/CoreHome/templates/_headerMessage.twig b/plugins/CoreHome/templates/_headerMessage.twig
index 051e10f74d..97ed8271a7 100644
--- a/plugins/CoreHome/templates/_headerMessage.twig
+++ b/plugins/CoreHome/templates/_headerMessage.twig
@@ -29,14 +29,18 @@
<div class="dropdown positionInViewport">
{% if isPiwikDemo %}
- {{ 'General_DownloadFullVersion'|translate("<a href='http://piwik.org/'>","</a>","<a href='http://piwik.org'>piwik.org</a>")|raw }}
+ {{ 'General_DownloadFullVersion'|translate("<a rel='noreferrer' href='https://piwik.org/'>","</a>","<a rel='noreferrer' href='https://piwik.org'>piwik.org</a>")|raw }}
<br/>
{% if isSuperUser and isAdminArea is defined and isAdminArea %}
<br/>
{% endif %}
{% endif %}
{% if latest_version_available and isSuperUser %}
- {{ 'General_PiwikXIsAvailablePleaseUpdateNow'|translate(latest_version_available,"<br /><a href='index.php?module=CoreUpdater&amp;action=newVersionAvailable'>","</a>","<a href='?module=Proxy&amp;action=redirect&amp;url=http://piwik.org/changelog/' target='_blank'>","</a>")|raw }}
+ {% if isMultiServerEnvironment %}
+ {{ 'CoreHome_OneClickUpdateNotPossibleAsMultiServerEnvironment'|translate("<a rel='noreferrer' href='https://builds.piwik.org/piwik-" ~ latest_version_available ~ ".zip'>","</a>")|raw }}
+ {% else %}
+ {{ 'General_PiwikXIsAvailablePleaseUpdateNow'|translate(latest_version_available,"<br /><a href='index.php?module=CoreUpdater&amp;action=newVersionAvailable'>","</a>","<a href='?module=Proxy&amp;action=redirect&amp;url=http://piwik.org/changelog/' target='_blank'>","</a>")|raw }}
+ {% endif %}
<br />
{% elseif latest_version_available and not isPiwikDemo and hasSomeViewAccess and not isUserIsAnonymous %}
{% set updateSubject = 'General_NewUpdatePiwikX'|translate(latest_version_available)|e('url') %}
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php
index f4d08fc12a..860cee7404 100644
--- a/plugins/CorePluginsAdmin/Controller.php
+++ b/plugins/CorePluginsAdmin/Controller.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\CorePluginsAdmin;
use Exception;
use Piwik\API\Request;
use Piwik\Common;
+use Piwik\Container\StaticContainer;
use Piwik\Exception\MissingFilePermissionException;
use Piwik\Filechecks;
use Piwik\Filesystem;
@@ -18,6 +19,9 @@ use Piwik\Nonce;
use Piwik\Notification;
use Piwik\Piwik;
use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Marketplace;
+use Piwik\Plugins\Marketplace\Controller as MarketplaceController;
+use Piwik\Plugins\Marketplace\Plugins;
use Piwik\Translation\Translator;
use Piwik\Url;
use Piwik\Version;
@@ -25,15 +29,10 @@ use Piwik\View;
class Controller extends Plugin\ControllerAdmin
{
- const UPDATE_NONCE = 'CorePluginsAdmin.updatePlugin';
- const INSTALL_NONCE = 'CorePluginsAdmin.installPlugin';
const ACTIVATE_NONCE = 'CorePluginsAdmin.activatePlugin';
const DEACTIVATE_NONCE = 'CorePluginsAdmin.deactivatePlugin';
const UNINSTALL_NONCE = 'CorePluginsAdmin.uninstallPlugin';
- private $validSortMethods = array('popular', 'newest', 'alpha');
- private $defaultSortMethod = 'popular';
-
/**
* @var Translator
*/
@@ -44,94 +43,42 @@ class Controller extends Plugin\ControllerAdmin
*/
private $settingsProvider;
- public function __construct(Translator $translator, Plugin\SettingsProvider $settingsProvider)
- {
- $this->translator = $translator;
- $this->settingsProvider = $settingsProvider;
-
- parent::__construct();
- }
-
- public function marketplace()
- {
- self::dieIfMarketplaceIsDisabled();
-
- $show = Common::getRequestVar('show', 'plugins', 'string');
- $query = Common::getRequestVar('query', '', 'string', $_POST);
- $sort = Common::getRequestVar('sort', $this->defaultSortMethod, 'string');
- if (!in_array($sort, $this->validSortMethods)) {
- $sort = $this->defaultSortMethod;
- }
-
- $view = $this->configureView('@CorePluginsAdmin/marketplace');
-
- $marketplace = new Marketplace();
-
- $showThemes = ($show === 'themes');
- $view->plugins = $marketplace->searchPlugins($query, $sort, $showThemes);
- $view->showThemes = $showThemes;
- $view->query = $query;
- $view->sort = $sort;
- $view->pluginType = $show;
- $view->pluginTypeOptions = array(
- 'plugins' => Piwik::translate('General_Plugins'),
- 'themes' => Piwik::translate('CorePluginsAdmin_Themes')
- );
- $view->pluginSortOptions = array(
- 'popular' => Piwik::translate('CorePluginsAdmin_SortByPopular'),
- 'newest' => Piwik::translate('CorePluginsAdmin_SortByNewest'),
- 'alpha' => Piwik::translate('CorePluginsAdmin_SortByAlpha'),
- );
- $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
- $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
- $view->isSuperUser = Piwik::hasUserSuperUserAccess();
+ /**
+ * @var PluginInstaller
+ */
+ private $pluginInstaller;
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
- return $view->render();
- }
+ /**
+ * @var Plugins
+ */
+ private $marketplacePlugins;
- private function createUpdateOrInstallView($template, $nonceName)
+ /**
+ * Controller constructor.
+ * @param Translator $translator
+ * @param Plugin\SettingsProvider $settingsProvider
+ * @param PluginInstaller $pluginInstaller
+ * @param Plugins $marketplacePlugins
+ */
+ public function __construct(Translator $translator, Plugin\SettingsProvider $settingsProvider, PluginInstaller $pluginInstaller, $marketplacePlugins = null)
{
- static::dieIfMarketplaceIsDisabled();
-
- $pluginName = $this->initPluginModification($nonceName);
- $this->dieIfPluginsAdminIsDisabled();
-
- $view = $this->configureView('@CorePluginsAdmin/' . $template);
-
- $view->plugin = array('name' => $pluginName);
-
- try {
- $pluginInstaller = new PluginInstaller($pluginName);
- $pluginInstaller->installOrUpdatePluginFromMarketplace();
-
- } catch (\Exception $e) {
-
- $notification = new Notification($e->getMessage());
- $notification->context = Notification::CONTEXT_ERROR;
- Notification\Manager::notify('CorePluginsAdmin_InstallPlugin', $notification);
-
- $this->redirectAfterModification(true);
- return;
+ $this->translator = $translator;
+ $this->settingsProvider = $settingsProvider;
+ $this->pluginInstaller = $pluginInstaller;
+ $this->pluginManager = Plugin\Manager::getInstance();
+
+ if (!empty($marketplacePlugins)) {
+ $this->marketplacePlugins = $marketplacePlugins;
+ } elseif (Marketplace::isMarketplaceEnabled()) {
+ // we load it manually as marketplace might not be loaded
+ $this->marketplacePlugins = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins');
}
- $marketplace = new Marketplace();
- $view->plugin = $marketplace->getPluginInfo($pluginName);
-
- return $view;
- }
-
- public function updatePlugin()
- {
- $view = $this->createUpdateOrInstallView('updatePlugin', static::UPDATE_NONCE);
- return $view->render();
- }
-
- public function installPlugin()
- {
- $view = $this->createUpdateOrInstallView('installPlugin', static::INSTALL_NONCE);
- $view->nonce = Nonce::getNonce(static::ACTIVATE_NONCE);
-
- return $view->render();
+ parent::__construct();
}
public function uploadPlugin()
@@ -141,11 +88,11 @@ class Controller extends Plugin\ControllerAdmin
$nonce = Common::getRequestVar('nonce', null, 'string');
- if (!Nonce::verifyNonce(static::INSTALL_NONCE, $nonce)) {
+ if (!Nonce::verifyNonce(MarketplaceController::INSTALL_NONCE, $nonce)) {
throw new \Exception($this->translator->translate('General_ExceptionNonceMismatch'));
}
- Nonce::discardNonce(static::INSTALL_NONCE);
+ Nonce::discardNonce(MarketplaceController::INSTALL_NONCE);
if (empty($_FILES['pluginZip'])) {
throw new \Exception('You did not specify a ZIP file.');
@@ -162,52 +109,25 @@ class Controller extends Plugin\ControllerAdmin
$view = $this->configureView('@CorePluginsAdmin/uploadPlugin');
- $pluginInstaller = new PluginInstaller('uploaded');
- $pluginMetadata = $pluginInstaller->installOrUpdatePluginFromFile($file);
+ $pluginMetadata = $this->pluginInstaller->installOrUpdatePluginFromFile($file);
$view->nonce = Nonce::getNonce(static::ACTIVATE_NONCE);
$view->plugin = array(
'name' => $pluginMetadata->name,
'version' => $pluginMetadata->version,
'isTheme' => !empty($pluginMetadata->theme),
- 'isActivated' => \Piwik\Plugin\Manager::getInstance()->isPluginActivated($pluginMetadata->name)
+ 'isActivated' => $this->pluginManager->isPluginActivated($pluginMetadata->name)
);
return $view->render();
}
- public function pluginDetails()
- {
- static::dieIfMarketplaceIsDisabled();
-
- $pluginName = Common::getRequestVar('pluginName', null, 'string');
- $activeTab = Common::getRequestVar('activeTab', '', 'string');
- if ('changelog' !== $activeTab) {
- $activeTab = '';
- }
-
- $view = $this->configureView('@CorePluginsAdmin/pluginDetails');
-
- try {
- $marketplace = new Marketplace();
- $view->plugin = $marketplace->getPluginInfo($pluginName);
- $view->isSuperUser = Piwik::hasUserSuperUserAccess();
- $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
- $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
- $view->activeTab = $activeTab;
- } catch (\Exception $e) {
- $view->errorMessage = $e->getMessage();
- }
-
- return $view->render();
- }
-
/**
* @deprecated
*/
public function browsePlugins()
{
- $this->redirectToIndex('CorePluginsAdmin', 'marketplace');
+ $this->redirectToIndex('Marketplace', 'overview');
}
/**
@@ -215,26 +135,7 @@ class Controller extends Plugin\ControllerAdmin
*/
public function browseThemes()
{
- $this->redirectToIndex('CorePluginsAdmin', 'marketplace', null, null, null, array('show' => 'themes'));
- }
-
- /**
- * @deprecated
- */
- public function userBrowsePlugins()
- {
- $this->redirectToIndex('CorePluginsAdmin', 'marketplace', null, null, null, array('mode' => 'user'));
- }
-
- private function dieIfMarketplaceIsDisabled()
- {
- if (!CorePluginsAdmin::isMarketplaceEnabled()) {
- throw new \Exception('The Marketplace feature has been disabled.
- You may enable the Marketplace by changing the config entry "enable_marketplace" to 1.
- Please contact your Piwik admins with your request so they can assist.');
- }
-
- $this->dieIfPluginsAdminIsDisabled();
+ $this->redirectToIndex('Marketplace', 'overview', null, null, null, array('show' => 'themes'));
}
private function dieIfPluginsAdminIsDisabled()
@@ -251,7 +152,7 @@ class Controller extends Plugin\ControllerAdmin
$view = $this->configureView('@CorePluginsAdmin/' . $template);
- $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
+ $view->updateNonce = Nonce::getNonce(MarketplaceController::UPDATE_NONCE);
$view->activateNonce = Nonce::getNonce(static::ACTIVATE_NONCE);
$view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE);
$view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE);
@@ -259,23 +160,19 @@ class Controller extends Plugin\ControllerAdmin
$users = Request::processRequest('UsersManager.getUsers');
$view->otherUsersCount = count($users) - 1;
- $view->themeEnabled = \Piwik\Plugin\Manager::getInstance()->getThemeEnabled()->getPluginName();
+ $view->themeEnabled = $this->pluginManager->getThemeEnabled()->getPluginName();
$view->pluginNamesHavingSettings = array_keys($this->settingsProvider->getAllSystemSettings());
- $view->isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
+ $view->isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
$view->isPluginsAdminEnabled = CorePluginsAdmin::isPluginsAdminEnabled();
$view->pluginsHavingUpdate = array();
$view->marketplacePluginNames = array();
- if (CorePluginsAdmin::isMarketplaceEnabled()) {
+ if (Marketplace::isMarketplaceEnabled() && $this->marketplacePlugins) {
try {
- $marketplace = new Marketplace();
- $view->marketplacePluginNames = $marketplace->getAvailablePluginNames($themesOnly);
-
- $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate(true);
- $themesHavingUpdate = $marketplace->getPluginsHavingUpdate(false);
- $view->pluginsHavingUpdate = $pluginsHavingUpdate + $themesHavingUpdate;
+ $view->marketplacePluginNames = $this->marketplacePlugins->getAvailablePluginNames($themesOnly);
+ $view->pluginsHavingUpdate = $this->marketplacePlugins->getPluginsHavingUpdate();
} catch(Exception $e) {
// curl exec connection error (ie. server not connected to internet)
}
@@ -315,12 +212,11 @@ class Controller extends Plugin\ControllerAdmin
protected function getPluginsInfo($themesOnly = false)
{
- $pluginManager = \Piwik\Plugin\Manager::getInstance();
- $plugins = $pluginManager->loadAllPluginsAndGetTheirInfo();
+ $plugins = $this->pluginManager->loadAllPluginsAndGetTheirInfo();
foreach ($plugins as $pluginName => &$plugin) {
- $plugin['isCorePlugin'] = $pluginManager->isPluginBundledWithCore($pluginName);
+ $plugin['isCorePlugin'] = $this->pluginManager->isPluginBundledWithCore($pluginName);
if (!empty($plugin['info']['description'])) {
$plugin['info']['description'] = $this->translator->translate($plugin['info']['description']);
@@ -408,7 +304,7 @@ class Controller extends Plugin\ControllerAdmin
$view->lastError = $lastError;
$view->isSuperUser = Piwik::hasUserSuperUserAccess();
$view->isAnonymousUser = Piwik::isUserIsAnonymous();
- $view->plugins = Plugin\Manager::getInstance()->loadAllPluginsAndGetTheirInfo();
+ $view->plugins = $this->pluginManager->loadAllPluginsAndGetTheirInfo();
$view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE);
$view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE);
$view->emailSuperUser = implode(',', Piwik::getAllSuperUserAccessEmailAddresses());
@@ -432,16 +328,9 @@ class Controller extends Plugin\ControllerAdmin
$pluginName = $this->initPluginModification(static::ACTIVATE_NONCE);
$this->dieIfPluginsAdminIsDisabled();
- \Piwik\Plugin\Manager::getInstance()->activatePlugin($pluginName);
+ $this->pluginManager->activatePlugin($pluginName);
if ($redirectAfter) {
- $plugin = \Piwik\Plugin\Manager::getInstance()->loadPlugin($pluginName);
-
- $actionToRedirect = 'plugins';
- if ($plugin->isTheme()) {
- $actionToRedirect = 'themes';
- }
-
$message = $this->translator->translate('CorePluginsAdmin_SuccessfullyActicated', array($pluginName));
if ($this->settingsProvider->getSystemSettings($pluginName)) {
@@ -457,7 +346,22 @@ class Controller extends Plugin\ControllerAdmin
$notification->context = Notification::CONTEXT_SUCCESS;
Notification\Manager::notify('CorePluginsAdmin_PluginActivated', $notification);
- $this->redirectToIndex('CorePluginsAdmin', $actionToRedirect);
+ $redirectTo = Common::getRequestVar('redirectTo', '', 'string');
+ if (!empty($redirectTo) && $redirectTo === 'marketplace') {
+ $this->redirectToIndex('Marketplace', 'overview');
+ } elseif (!empty($redirectTo) && $redirectTo === 'referrer') {
+ $this->redirectAfterModification($redirectAfter);
+ } else {
+ $plugin = $this->pluginManager->loadPlugin($pluginName);
+
+ $actionToRedirect = 'plugins';
+ if ($plugin->isTheme()) {
+ $actionToRedirect = 'themes';
+ }
+
+ $this->redirectToIndex('CorePluginsAdmin', $actionToRedirect);
+ }
+
}
}
@@ -466,7 +370,7 @@ class Controller extends Plugin\ControllerAdmin
$pluginName = $this->initPluginModification(static::DEACTIVATE_NONCE);
$this->dieIfPluginsAdminIsDisabled();
- \Piwik\Plugin\Manager::getInstance()->deactivatePlugin($pluginName);
+ $this->pluginManager->deactivatePlugin($pluginName);
$this->redirectAfterModification($redirectAfter);
}
@@ -475,7 +379,7 @@ class Controller extends Plugin\ControllerAdmin
$pluginName = $this->initPluginModification(static::UNINSTALL_NONCE);
$this->dieIfPluginsAdminIsDisabled();
- $uninstalled = \Piwik\Plugin\Manager::getInstance()->uninstallPlugin($pluginName);
+ $uninstalled = $this->pluginManager->uninstallPlugin($pluginName);
if (!$uninstalled) {
$path = Filesystem::getPathToPiwikRoot() . '/plugins/' . $pluginName . '/';
@@ -495,6 +399,25 @@ class Controller extends Plugin\ControllerAdmin
$this->redirectAfterModification($redirectAfter);
}
+ public function showLicense()
+ {
+ $pluginName = Common::getRequestVar('pluginName', null, 'string');
+
+ $metadata = new Plugin\MetadataLoader($pluginName);
+ $license_file = $metadata->getPathToLicenseFile();
+
+ $license = 'No license file found for this plugin.';
+ if(!empty($license_file)) {
+ $license = file_get_contents($license_file);
+ $license = nl2br($license);
+ }
+
+ $view = $this->configureView('@CorePluginsAdmin/license');
+ $view->pluginName = $pluginName;
+ $view->license = $license;
+ return $view->render();
+ }
+
protected function initPluginModification($nonceName)
{
Piwik::checkUserHasSuperUserAccess();
@@ -509,6 +432,10 @@ class Controller extends Plugin\ControllerAdmin
$pluginName = Common::getRequestVar('pluginName', null, 'string');
+ if (!$this->pluginManager->isValidPluginName($pluginName)) {
+ throw new Exception('Invalid plugin name');
+ }
+
return $pluginName;
}
diff --git a/plugins/CorePluginsAdmin/CorePluginsAdmin.php b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
index 21217f7743..df8934519b 100644
--- a/plugins/CorePluginsAdmin/CorePluginsAdmin.php
+++ b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
@@ -11,10 +11,10 @@ namespace Piwik\Plugins\CorePluginsAdmin;
use Piwik\Config;
use Piwik\Plugin;
-class CorePluginsAdmin extends \Piwik\Plugin
+class CorePluginsAdmin extends Plugin
{
/**
- * @see Piwik\Plugin::registerEvents
+ * @see Plugin::registerEvents
*/
public function registerEvents()
{
@@ -27,18 +27,10 @@ class CorePluginsAdmin extends \Piwik\Plugin
public function getStylesheetFiles(&$stylesheets)
{
- $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/marketplace.less";
- $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less";
$stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/plugins_admin.less";
- $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/plugin-details.less";
$stylesheets[] = "plugins/CorePluginsAdmin/angularjs/plugin-settings/plugin-settings.directive.less";
}
- public static function isMarketplaceEnabled()
- {
- return (bool) Config::getInstance()->General['enable_marketplace'];
- }
-
public static function isPluginsAdminEnabled()
{
return (bool) Config::getInstance()->General['enable_plugins_admin'];
diff --git a/plugins/CorePluginsAdmin/Marketplace.php b/plugins/CorePluginsAdmin/Marketplace.php
deleted file mode 100644
index c8cfc114e8..0000000000
--- a/plugins/CorePluginsAdmin/Marketplace.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Plugins\CorePluginsAdmin;
-
-use Piwik\Date;
-use Piwik\Plugin\Dependency as PluginDependency;
-
-/**
- *
- */
-class Marketplace
-{
- /**
- * @var MarketplaceApiClient
- */
- private $client;
-
- public function __construct()
- {
- $this->client = new MarketplaceApiClient();
- }
-
- public function getPluginInfo($pluginName)
- {
- $marketplace = new MarketplaceApiClient();
-
- $plugin = $marketplace->getPluginInfo($pluginName);
- $plugin = $this->enrichPluginInformation($plugin);
-
- return $plugin;
- }
-
- public function getAvailablePluginNames($themesOnly)
- {
- if ($themesOnly) {
- $plugins = $this->client->searchForThemes('', '', '');
- } else {
- $plugins = $this->client->searchForPlugins('', '', '');
- }
-
- $names = array();
- foreach ($plugins as $plugin) {
- $names[] = $plugin['name'];
- }
-
- return $names;
- }
-
- public function getAllAvailablePluginNames()
- {
- return array_merge(
- $this->getAvailablePluginNames(true),
- $this->getAvailablePluginNames(false)
- );
- }
-
- public function searchPlugins($query, $sort, $themesOnly)
- {
- if ($themesOnly) {
- $plugins = $this->client->searchForThemes('', $query, $sort);
- } else {
- $plugins = $this->client->searchForPlugins('', $query, $sort);
- }
-
- foreach ($plugins as $key => $plugin) {
- $plugins[$key] = $this->enrichPluginInformation($plugin);
- }
-
- return $plugins;
- }
-
- private function getPluginUpdateInformation($plugin)
- {
- if (empty($plugin['name'])) {
- return;
- }
-
- $pluginsHavingUpdate = $this->getPluginsHavingUpdate($plugin['isTheme']);
-
- foreach ($pluginsHavingUpdate as $pluginHavingUpdate) {
- if ($plugin['name'] == $pluginHavingUpdate['name']) {
- return $pluginHavingUpdate;
- }
- }
- }
-
- private function hasPluginUpdate($plugin)
- {
- $update = $this->getPluginUpdateInformation($plugin);
-
- return !empty($update);
- }
-
- /**
- * @param bool $themesOnly
- * @return array
- */
- public function getPluginsHavingUpdate($themesOnly)
- {
- $pluginManager = \Piwik\Plugin\Manager::getInstance();
- $pluginManager->loadAllPluginsAndGetTheirInfo();
- $loadedPlugins = $pluginManager->getLoadedPlugins();
-
- try {
- $pluginsHavingUpdate = $this->client->getInfoOfPluginsHavingUpdate($loadedPlugins, $themesOnly);
- } catch (\Exception $e) {
- $pluginsHavingUpdate = array();
- }
-
- foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
- foreach ($loadedPlugins as $loadedPlugin) {
- if (!empty($updatePlugin['name'])
- && $loadedPlugin->getPluginName() == $updatePlugin['name']
- ) {
- $updatePlugin['currentVersion'] = $loadedPlugin->getVersion();
- $updatePlugin['isActivated'] = $pluginManager->isPluginActivated($updatePlugin['name']);
- $pluginsHavingUpdate[$key] = $this->addMissingRequirements($updatePlugin);
- break;
- }
- }
- }
-
- // remove plugins that have updates but for some reason are not loaded
- foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
- if (empty($updatePlugin['currentVersion'])) {
- unset($pluginsHavingUpdate[$key]);
- }
- }
-
- return $pluginsHavingUpdate;
- }
-
- private function enrichPluginInformation($plugin)
- {
- $plugin['isInstalled'] = \Piwik\Plugin\Manager::getInstance()->isPluginLoaded($plugin['name']);
- $plugin['canBeUpdated'] = $plugin['isInstalled'] && $this->hasPluginUpdate($plugin);
- if (!empty($plugin['lastUpdated'])) {
- $plugin['lastUpdated'] = Date::factory($plugin['lastUpdated'])->getLocalized(Date::DATE_FORMAT_SHORT);
- }
-
- if ($plugin['canBeUpdated']) {
- $pluginUpdate = $this->getPluginUpdateInformation($plugin);
- $plugin['repositoryChangelogUrl'] = $pluginUpdate['repositoryChangelogUrl'];
- $plugin['currentVersion'] = $pluginUpdate['currentVersion'];
- }
-
- if (!empty($plugin['activity']['lastCommitDate'])
- && false === strpos($plugin['activity']['lastCommitDate'], '0000')) {
-
- $plugin['activity']['lastCommitDate'] = Date::factory($plugin['activity']['lastCommitDate'])->getLocalized(Date::DATE_FORMAT_LONG);
- } else {
- $plugin['activity']['lastCommitDate'] = null;
- }
-
- if (!empty($plugin['versions'])) {
-
- foreach ($plugin['versions'] as $index => $version) {
- if (!empty($version['release'])) {
- $plugin['versions'][$index]['release'] = Date::factory($version['release'])->getLocalized(Date::DATE_FORMAT_LONG);
- }
- }
- }
-
- $plugin = $this->addMissingRequirements($plugin);
-
- return $plugin;
- }
-
- /**
- * @param $plugin
- */
- private function addMissingRequirements($plugin)
- {
- $plugin['missingRequirements'] = array();
-
- if (empty($plugin['versions']) || !is_array($plugin['versions'])) {
- return $plugin;
- }
-
- $latestVersion = $plugin['versions'][count($plugin['versions']) - 1];
-
- if (empty($latestVersion['requires'])) {
- return $plugin;
- }
-
- $requires = $latestVersion['requires'];
-
- $dependency = new PluginDependency();
- $plugin['missingRequirements'] = $dependency->getMissingDependencies($requires);
-
- return $plugin;
- }
-}
diff --git a/plugins/CorePluginsAdmin/MarketplaceApiClient.php b/plugins/CorePluginsAdmin/MarketplaceApiClient.php
deleted file mode 100644
index eebc3d843b..0000000000
--- a/plugins/CorePluginsAdmin/MarketplaceApiClient.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Plugins\CorePluginsAdmin;
-
-use Piwik\Cache;
-use Piwik\Container\StaticContainer;
-use Piwik\Http;
-use Piwik\Version;
-
-/**
- *
- */
-class MarketplaceApiClient
-{
- const CACHE_TIMEOUT_IN_SECONDS = 1200;
- const HTTP_REQUEST_TIMEOUT = 60;
-
- private $domain = 'http://plugins.piwik.org';
-
- public static function clearAllCacheEntries()
- {
- $cache = Cache::getLazyCache();
- $cache->flushAll();
- }
-
- public function getPluginInfo($name)
- {
- $action = sprintf('plugins/%s/info', $name);
-
- return $this->fetch($action, array());
- }
-
- public function download($pluginOrThemeName, $target)
- {
- $downloadUrl = $this->getDownloadUrl($pluginOrThemeName);
-
- if (empty($downloadUrl)) {
- return false;
- }
-
- $success = Http::fetchRemoteFile($downloadUrl, $target, 0, static::HTTP_REQUEST_TIMEOUT);
-
- return $success;
- }
-
- /**
- * @param \Piwik\Plugin[] $plugins
- * @return array|mixed
- */
- public function checkUpdates($plugins)
- {
- $params = array();
-
- foreach ($plugins as $plugin) {
- $pluginName = $plugin->getPluginName();
- if (!\Piwik\Plugin\Manager::getInstance()->isPluginBundledWithCore($pluginName)) {
- $params[] = array('name' => $plugin->getPluginName(), 'version' => $plugin->getVersion());
- }
- }
-
- if (empty($params)) {
- return array();
- }
-
- $params = array('plugins' => $params);
-
- $hasUpdates = $this->fetch('plugins/checkUpdates', array('plugins' => json_encode($params)));
-
- if (empty($hasUpdates)) {
- return array();
- }
-
- return $hasUpdates;
- }
-
- /**
- * @param \Piwik\Plugin[] $plugins
- * @param bool $themesOnly
- * @return array
- */
- public function getInfoOfPluginsHavingUpdate($plugins, $themesOnly)
- {
- $hasUpdates = $this->checkUpdates($plugins);
-
- $pluginDetails = array();
-
- foreach ($hasUpdates as $pluginHavingUpdate) {
- $plugin = $this->getPluginInfo($pluginHavingUpdate['name']);
- $plugin['repositoryChangelogUrl'] = $pluginHavingUpdate['repositoryChangelogUrl'];
-
- if (!empty($plugin['isTheme']) == $themesOnly) {
- $pluginDetails[] = $plugin;
- }
- }
-
- return $pluginDetails;
- }
-
- public function searchForPlugins($keywords, $query, $sort)
- {
- $response = $this->fetch('plugins', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort));
-
- if (!empty($response['plugins'])) {
- return $response['plugins'];
- }
-
- return array();
- }
-
- public function searchForThemes($keywords, $query, $sort)
- {
- $response = $this->fetch('themes', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort));
-
- if (!empty($response['plugins'])) {
- return $response['plugins'];
- }
-
- return array();
- }
-
- private function getPhpVersion()
- {
- return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION;
- }
-
- public static function getPiwikVersion()
- {
- return StaticContainer::get('marketplacePiwikVersion');
- }
-
- private function fetch($action, $params)
- {
- $params['php'] = $this->getPhpVersion();
- $params['piwik'] = self::getPiwikVersion();
- $params['prefer_stable'] = '1';
- ksort($params);
- $query = http_build_query($params);
-
- $cacheId = $this->getCacheKey($action, $query);
- $cache = $this->buildCache();
- $result = $cache->fetch($cacheId);
-
- if (false === $result) {
- $endpoint = $this->domain . '/api/2.0/';
- $url = sprintf('%s%s?%s', $endpoint, $action, $query);
- $response = Http::sendHttpRequest($url, static::HTTP_REQUEST_TIMEOUT);
- $result = json_decode($response, true);
-
- if (is_null($result)) {
- $message = sprintf('There was an error reading the response from the Marketplace: %s. Please try again later.',
- substr($response, 0, 50));
- throw new MarketplaceApiException($message);
- }
-
- if (!empty($result['error'])) {
- throw new MarketplaceApiException($result['error']);
- }
-
- $cache->save($cacheId, $result, self::CACHE_TIMEOUT_IN_SECONDS);
- }
-
- return $result;
- }
-
- private function buildCache()
- {
- return Cache::getLazyCache();
- }
-
- private function getCacheKey($action, $query)
- {
- return sprintf('marketplace.api.2.0.%s.%s', str_replace('/', '.', $action), md5($query));
- }
-
- /**
- * @param $pluginOrThemeName
- * @throws MarketplaceApiException
- * @return string
- */
- public function getDownloadUrl($pluginOrThemeName)
- {
- $plugin = $this->getPluginInfo($pluginOrThemeName);
-
- if (empty($plugin['versions'])) {
- throw new MarketplaceApiException('Plugin has no versions.');
- }
-
- $latestVersion = array_pop($plugin['versions']);
- $downloadUrl = $latestVersion['download'];
-
- return $this->domain . $downloadUrl . '?coreVersion=' . self::getPiwikVersion();
- }
-
-}
diff --git a/plugins/CorePluginsAdmin/Menu.php b/plugins/CorePluginsAdmin/Menu.php
index 69a69b9e7f..8e1b57ef40 100644
--- a/plugins/CorePluginsAdmin/Menu.php
+++ b/plugins/CorePluginsAdmin/Menu.php
@@ -8,30 +8,43 @@
*/
namespace Piwik\Plugins\CorePluginsAdmin;
-use Piwik\Db;
+use Piwik\Container\StaticContainer;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
+use Piwik\Plugins\Marketplace\Marketplace;
+use Piwik\Plugins\Marketplace\Plugins;
-/**
- */
class Menu extends \Piwik\Plugin\Menu
{
+ private $marketplacePlugins;
+
+ /**
+ * Menu constructor.
+ * @param Plugins $marketplacePlugins
+ */
+ public function __construct($marketplacePlugins = null)
+ {
+ if (!empty($marketplacePlugins)) {
+ $this->marketplacePlugins = $marketplacePlugins;
+ } elseif (Marketplace::isMarketplaceEnabled()) {
+ // we load it manually as marketplace plugin might not be loaded
+ $this->marketplacePlugins = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins');
+ }
+ }
public function configureAdminMenu(MenuAdmin $menu)
{
$hasSuperUserAcess = Piwik::hasUserSuperUserAccess();
$isAnonymous = Piwik::isUserIsAnonymous();
- $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
+ $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
$pluginsUpdateMessage = '';
- if ($hasSuperUserAcess && $isMarketplaceEnabled) {
- $marketplace = new Marketplace();
- $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false);
- $themesHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = true);
+ if ($hasSuperUserAcess && $isMarketplaceEnabled && $this->marketplacePlugins) {
+ $pluginsHavingUpdate = $this->marketplacePlugins->getPluginsHavingUpdate();
if (!empty($pluginsHavingUpdate)) {
- $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate) + count($themesHavingUpdate));
+ $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate));
}
}
@@ -44,18 +57,6 @@ class Menu extends \Piwik\Plugin\Menu
$this->urlForAction('plugins', array('activated' => '')),
$order = 20);
}
-
- if ($this->isAllowedToSeeMarketPlace()) {
- $menu->addPlatformItem('CorePluginsAdmin_Marketplace',
- $this->urlForAction('marketplace', array('activated' => '', 'mode' => 'user')),
- $order = 5);
- }
}
- private function isAllowedToSeeMarketPlace()
- {
- $isAnonymous = Piwik::isUserIsAnonymous();
- $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
- return $isMarketplaceEnabled && !$isAnonymous;
- }
}
diff --git a/plugins/CorePluginsAdmin/PluginInstaller.php b/plugins/CorePluginsAdmin/PluginInstaller.php
index ab4f7b8622..d2fad35c76 100644
--- a/plugins/CorePluginsAdmin/PluginInstaller.php
+++ b/plugins/CorePluginsAdmin/PluginInstaller.php
@@ -8,13 +8,16 @@
*/
namespace Piwik\Plugins\CorePluginsAdmin;
+use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Filechecks;
use Piwik\Filesystem;
use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin\Dependency as PluginDependency;
+use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Unzip;
+use Piwik\Plugins\Marketplace\Api\Client;
/**
*
@@ -26,22 +29,38 @@ class PluginInstaller
private $pluginName;
- public function __construct($pluginName)
+ /**
+ * Null if Marketplace Plugin is not installed
+ * @var Client|null
+ */
+ private $marketplaceClient;
+
+ /**
+ * PluginInstaller constructor.
+ * @param Client|null $client
+ */
+ public function __construct($client = null)
{
- $this->pluginName = $pluginName;
+ if (!empty($client)) {
+ $this->marketplaceClient = $client;
+ } elseif (Marketplace::isMarketplaceEnabled()) {
+ // we load it manually as marketplace might not be loaded
+ $this->marketplaceClient = StaticContainer::get('Piwik\Plugins\Marketplace\Api\Client');
+ }
}
- public function installOrUpdatePluginFromMarketplace()
+ public function installOrUpdatePluginFromMarketplace($pluginName)
{
- $tmpPluginPath = StaticContainer::get('path.tmp') . '/latest/plugins/';
+ $this->checkMarketplaceIsEnabled();
- $tmpPluginZip = $tmpPluginPath . $this->pluginName . '.zip';
- $tmpPluginFolder = $tmpPluginPath . $this->pluginName;
+ $this->pluginName = $pluginName;
try {
$this->makeSureFoldersAreWritable();
$this->makeSurePluginNameIsValid();
- $this->downloadPluginFromMarketplace($tmpPluginZip);
+
+ $tmpPluginZip = $this->downloadPluginFromMarketplace();
+ $tmpPluginFolder = dirname($tmpPluginZip) . '/' . basename($tmpPluginZip, '.zip') . '/';
$this->extractPluginFiles($tmpPluginZip, $tmpPluginFolder);
$this->makeSurePluginJsonExists($tmpPluginFolder);
$metadata = $this->getPluginMetadataIfValid($tmpPluginFolder);
@@ -50,15 +69,22 @@ class PluginInstaller
Filesystem::deleteAllCacheOnUpdate($this->pluginName);
- $plugin = PluginManager::getInstance()->getLoadedPlugin($this->pluginName);
- if (!empty($plugin)) {
- $plugin->reloadPluginInformation();
+ $pluginManager = PluginManager::getInstance();
+ if ($pluginManager->isPluginLoaded($this->pluginName)) {
+ $plugin = PluginManager::getInstance()->getLoadedPlugin($this->pluginName);
+ if (!empty($plugin)) {
+ $plugin->reloadPluginInformation();
+ }
}
} catch (\Exception $e) {
- $this->removeFileIfExists($tmpPluginZip);
- $this->removeFolderIfExists($tmpPluginFolder);
+ if (!empty($tmpPluginZip)) {
+ Filesystem::deleteFileIfExists($tmpPluginZip);
+ }
+ if (!empty($tmpPluginFolder)) {
+ $this->removeFolderIfExists($tmpPluginFolder);
+ }
throw $e;
}
@@ -69,7 +95,8 @@ class PluginInstaller
public function installOrUpdatePluginFromFile($pathToZip)
{
- $tmpPluginFolder = StaticContainer::get('path.tmp') . self::PATH_TO_DOWNLOAD . $this->pluginName;
+ $tmpPluginName = 'uploaded' . Common::generateUniqId();
+ $tmpPluginFolder = StaticContainer::get('path.tmp') . self::PATH_TO_DOWNLOAD . $tmpPluginName;
try {
$this->makeSureFoldersAreWritable();
@@ -108,18 +135,18 @@ class PluginInstaller
));
}
- private function downloadPluginFromMarketplace($pluginZipTargetFile)
+ /**
+ * @return false|string false on failed download, or a path to the downloaded zip file
+ * @throws PluginInstallerException
+ */
+ private function downloadPluginFromMarketplace()
{
- $this->removeFileIfExists($pluginZipTargetFile);
-
- $marketplace = new MarketplaceApiClient();
-
try {
- $marketplace->download($this->pluginName, $pluginZipTargetFile);
+ return $this->marketplaceClient->download($this->pluginName);
} catch (\Exception $e) {
try {
- $downloadUrl = $marketplace->getDownloadUrl($this->pluginName);
+ $downloadUrl = $this->marketplaceClient->getDownloadUrl($this->pluginName);
$errorMessage = sprintf('Failed to download plugin from %s: %s', $downloadUrl, $e->getMessage());
} catch (\Exception $ex) {
@@ -166,10 +193,8 @@ class PluginInstaller
$requires = (array) $metadata->require;
}
- $piwikVersion = MarketplaceApiClient::getPiwikVersion();
-
$dependency = new PluginDependency();
- $dependency->setPiwikVersion($piwikVersion);
+ $dependency->setEnvironment($this->marketplaceClient->getEnvironment());
$missingDependencies = $dependency->getMissingDependencies($requires);
if (!empty($missingDependencies)) {
@@ -289,9 +314,7 @@ class PluginInstaller
*/
private function removeFileIfExists($targetTmpFile)
{
- if (file_exists($targetTmpFile)) {
- unlink($targetTmpFile);
- }
+ Filesystem::deleteFileIfExists($targetTmpFile);
}
/**
@@ -300,8 +323,7 @@ class PluginInstaller
private function makeSurePluginNameIsValid()
{
try {
- $marketplace = new MarketplaceApiClient();
- $pluginDetails = $marketplace->getPluginInfo($this->pluginName);
+ $pluginDetails = $this->marketplaceClient->getPluginInfo($this->pluginName);
} catch (\Exception $e) {
throw new PluginInstallerException($e->getMessage());
}
@@ -311,4 +333,11 @@ class PluginInstaller
}
}
+ private function checkMarketplaceIsEnabled()
+ {
+ if (!isset($this->marketplaceClient)) {
+ throw new PluginInstallerException('Marketplace plugin needs to be enabled to perform this action.');
+ }
+ }
+
}
diff --git a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js b/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js
deleted file mode 100644
index e528c03bd0..0000000000
--- a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.directive.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*!
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-marketplace>
- */
-(function () {
-
- angular.module('piwikApp').directive('piwikMarketplace', piwikMarketplace);
-
- piwikMarketplace.$inject = ['piwik', '$timeout'];
-
- function piwikMarketplace(piwik, $timeout){
-
- return {
- restrict: 'A',
- compile: function (element, attrs) {
-
- return function (scope, element, attrs) {
-
- $timeout(function () {
-
- $('.uploadPlugin').click(function (event) {
- event.preventDefault();
-
- piwikHelper.modalConfirm('#installPluginByUpload', {
- yes: function () {
- window.location = link;
- }
- });
- });
-
- $('#uploadPluginForm').submit(function (event) {
-
- var $zipFile = $('[name=pluginZip]');
- var fileName = $zipFile.val();
-
- if (!fileName || '.zip' != fileName.slice(-4)) {
- event.preventDefault();
- alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));
- }
- });
-
- // Keeps the plugin descriptions the same height
- $('.marketplace .plugin .description').dotdotdot({
- after: 'a.more',
- watch: 'window'
- });
- });
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js b/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js
index e09c1e3d28..404d9a40a5 100644
--- a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js
+++ b/plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js
@@ -58,26 +58,6 @@
piwikHelper.modalConfirm('#'+overlayId, {});
});
- $('.uploadPlugin').click(function (event) {
- event.preventDefault();
-
- piwikHelper.modalConfirm('#installPluginByUpload', {
- yes: function () {
- window.location = link;
- }
- });
- });
-
- $('#uploadPluginForm').submit(function (event) {
-
- var $zipFile = $('[name=pluginZip]');
- var fileName = $zipFile.val();
-
- if (!fileName || '.zip' != fileName.slice(-4)) {
- event.preventDefault();
- alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));
- }
- });
};
}
};
diff --git a/plugins/CorePluginsAdmin/config/config.php b/plugins/CorePluginsAdmin/config/config.php
deleted file mode 100644
index 5d30748a94..0000000000
--- a/plugins/CorePluginsAdmin/config/config.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-return array(
- 'marketplacePiwikVersion' => function () {
- return \Piwik\Version::VERSION;
- }
-);
diff --git a/plugins/CorePluginsAdmin/lang/cs.json b/plugins/CorePluginsAdmin/lang/cs.json
index 3cdbeb2baf..7d29a7e7b3 100644
--- a/plugins/CorePluginsAdmin/lang/cs.json
+++ b/plugins/CorePluginsAdmin/lang/cs.json
@@ -104,6 +104,7 @@
"Version": "Verze",
"ViewRepositoryChangelog": "Zobrazit změny",
"ViewAllMarketplacePlugins": "Zobrazit všechny zásuvné moduly v marketplace zásuvných modulů",
- "Websites": "Stránky"
+ "Websites": "Stránky",
+ "WeDeactivatedThePluginAsItHasMissingDependencies": "Zásuvný modul %s byl vypnut, chybí závislosti:"
}
} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/lang/el.json b/plugins/CorePluginsAdmin/lang/el.json
index f2a09685fa..09bdde35e1 100644
--- a/plugins/CorePluginsAdmin/lang/el.json
+++ b/plugins/CorePluginsAdmin/lang/el.json
@@ -104,6 +104,7 @@
"Version": "Έκδοση",
"ViewRepositoryChangelog": "Εμφάνιση των αλλαγών",
"ViewAllMarketplacePlugins": "Εμφάνιση όλων των πρόσθετων στην Αγορά",
- "Websites": "Ιστοτόποι"
+ "Websites": "Ιστοτόποι",
+ "WeDeactivatedThePluginAsItHasMissingDependencies": "Απενεργοποιήθηκε το πρόσθετο %s καθώς έχει ελλιπείς εξαρτήσεις:"
}
} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/lang/en.json b/plugins/CorePluginsAdmin/lang/en.json
index 0519947747..1fe5a78fa9 100644
--- a/plugins/CorePluginsAdmin/lang/en.json
+++ b/plugins/CorePluginsAdmin/lang/en.json
@@ -1,43 +1,27 @@
{
"CorePluginsAdmin": {
- "ActionActivatePlugin": "Activate plugin",
- "ActionActivateTheme": "Activate theme",
- "ActionInstall": "Install",
"ActionUninstall": "Uninstall",
"Activate": "Activate",
"Activated": "Activated",
"Active": "Active",
"Activity": "Activity",
- "AllowedUploadFormats": "You may upload a plugin or theme in .zip format via this page.",
+ "AlwaysActivatedPluginsList": "The following plugins are always activated and cannot be disabled: %s",
"AuthorHomepage": "Author Homepage",
- "Authors": "Authors",
- "BackToExtendPiwik": "Back to Marketplace",
- "BeCarefulUsingPlugins": "Plugins that are not authored by Piwik team must be used with care: we did not review them.",
- "BeCarefulUsingThemes": "Themes that are not authored by Piwik team must be used with care: we did not review them.",
- "ByXDevelopers": "by %s developers",
- "CannotInstall": "Cannot install (help)",
"Changelog": "Changelog",
"ChangeSettingsPossible": "You can change %1$ssettings%2$s for this plugin.",
"CorePluginTooltip": "Core plugins have no version since they are distributed with Piwik.",
"Deactivate": "Deactivate",
- "Developer": "Developer",
- "DevelopersLearnHowToDevelopPlugins": "Developers: Learn how you can extend and customize Piwik by %1$sdeveloping plugins or themes%2$s.",
"DoMoreContactPiwikAdmins": "To install a new plugin or a new theme, please get in touch with your Piwik admins.",
- "FeaturedPlugin": "Featured plugin",
"ChangeLookByManageThemes": "You can change the appearance of Piwik by %1$sManaging Themes%2$s.",
- "GetEarlyAccessForPaidPlugins": "Note: all plugins are available for free at present; in the future we will enable Paid Plugins in the Marketplace (%1$scontact us%2$s for early access).",
"History": "History",
"Inactive": "Inactive",
+ "InstalledPlugins": "Installed plugins",
+ "InstalledThemes": "Installed themes",
"InfoPluginUpdateIsRecommended": "Update your plugins now to benefit from the latest improvements.",
"InfoThemeIsUsedByOtherUsersAsWell": "Note: the other %1$s users registered in this Piwik are also using the theme %2$s.",
"InfoThemeUpdateIsRecommended": "Update your themes to enjoy the latest version.",
- "InstallingPlugin": "Installing %s",
"InstallNewPlugins": "Install new plugins",
"InstallNewThemes": "Install new themes",
- "InstalledPlugins": "Installed plugins",
- "InstalledThemes": "Installed themes",
- "LastCommitTime": "(last commit %s)",
- "LastUpdated": "Last Updated",
"LicenseHomepage": "License Homepage",
"LikeThisPlugin": "Like this plugin?",
"ConsiderDonating": "Consider donating",
@@ -45,66 +29,38 @@
"ConsiderDonatingCreatorOf": "Please consider donating to the creator of %s",
"PluginsExtendPiwik": "Plugins extend and expand the functionality of Piwik.",
"OncePluginIsInstalledYouMayActivateHere": "Once a plugin is installed, you may activate it or deactivate it here.",
- "Marketplace": "Marketplace",
- "MarketplaceSellPluginSubject": "Marketplace - Sell Plugin",
"MenuPlatform": "Platform",
"MissingRequirementsNotice": "Please update %1$s %2$s to a newer version, %1$s %3$s is required.",
"MissingRequirementsPleaseInstallNotice": "Please install %1$s %2$s as it is required by %3$s.",
- "NewVersion": "new version",
- "NoPluginsFound": "No plugins found",
- "NoPluginSettings": "No plugin settings that can be configured",
- "NotAllowedToBrowseMarketplacePlugins": "You can browse the list of plugins that can be installed to customize or extend your Piwik platform. Please contact your administrator if you need any of these installed.",
- "NotAllowedToBrowseMarketplaceThemes": "You can browse the list of themes that can be installed to customize the appearance of the Piwik platform. Please contact your administrator to get any of these installed for you.",
- "NoThemesFound": "No themes found",
"NoZipFileSelected": "Please select a ZIP file.",
- "NumDownloadsLatestVersion": "Latest version: %s Downloads",
"NumUpdatesAvailable": "%s Update(s) available",
+ "NoPluginSettings": "No plugin settings that can be configured",
"Origin": "Origin",
"OriginCore": "Core",
"OriginThirdParty": "Third-party",
"PluginHomepage": "Plugin Homepage",
- "PluginKeywords": "Keywords",
"PluginNotCompatibleWith": "%1$s plugin is not compatible with %2$s.",
"PluginNotWorkingAlternative": "If you've been using this plugin, maybe you can find a more recent version in the Marketplace. If not, you may want to uninstall it.",
"PluginRequirement": "%1$s requires %2$s.",
"PluginsManagement": "Manage Plugins",
- "PluginUpdateAvailable": "You are using version %1$s and a new version %2$s is available.",
- "PluginVersionInfo": "%1$s from %2$s",
- "PluginWebsite": "Plugin Website",
- "Screenshots": "Screenshots",
- "SortByAlpha": "Alpha",
- "SortByNewest": "Newest",
- "SortByPopular": "Popular",
+ "NotDownloadable": "Not downloadable",
+ "PluginNotDownloadable": "The plugin is not downloadable.",
+ "PluginNotDownloadablePaidReason": "Possible reasons are an expired or exceeded license.",
+ "PluginActivated": "Plugin activated",
"Status": "Status",
- "StepDownloadingPluginFromMarketplace": "Downloading plugin from Marketplace",
- "StepDownloadingThemeFromMarketplace": "Downloading theme from Marketplace",
- "StepPluginSuccessfullyInstalled": "You have successfully installed the plugin %1$s %2$s.",
- "StepPluginSuccessfullyUpdated": "You have successfully updated the plugin %1$s %2$s.",
- "StepReplaceExistingPlugin": "Replacing existing plugin",
- "StepReplaceExistingTheme": "Replacing existing theme",
- "StepThemeSuccessfullyInstalled": "You have successfully installed the theme %1$s %2$s.",
- "StepThemeSuccessfullyUpdated": "You have successfully updated the theme %1$s %2$s.",
- "StepUnzippingPlugin": "Unzipping plugin",
- "StepUnzippingTheme": "Unzipping theme",
"SuccessfullyActicated": "You have successfully activated <strong>%s<\/strong>.",
- "Support": "Support",
"TeaserExtendPiwik": "Extend Piwik with Plugins and Themes",
"TeaserExtendPiwikByPlugin": "Extend Piwik by %1$sinstalling a new plugin%2$s.",
"TeaserExtendPiwikByTheme": "Enjoy another look & feel by %1$sinstalling a new theme%2$s.",
- "TeaserExtendPiwikByUpload": "Extend Piwik by uploading a ZIP file",
"InstallingNewPluginViaMarketplaceOrUpload": "You may automatically install plugins from the Marketplace or %1$supload a plugin%2$s in .zip format.",
"Theme": "Theme",
"Themes": "Themes",
"ThemesDescription": "Themes can change the appearance of Piwik user interface, and provide a completely new visual experience to enjoy your analytics reports.",
"ThemesManagement": "Manage Themes",
"UninstallConfirm": "You are about to uninstall a plugin %s. The plugin will be completely removed from your platform and it won't be recoverable. Are you sure you want to do this?",
- "Updated": "Updated",
- "UpdatingPlugin": "Updating %s",
- "UploadZipFile": "Upload ZIP file",
"Version": "Version",
- "ViewRepositoryChangelog": "View the changes",
"ViewAllMarketplacePlugins": "View all Marketplace plugins",
- "Websites": "Websites",
- "WeDeactivatedThePluginAsItHasMissingDependencies": "We disabled the plugin %s as it has missing dependencies:"
+ "WeDeactivatedThePluginAsItHasMissingDependencies": "We disabled the plugin %s as it has missing dependencies:",
+ "Websites": "Websites"
}
}
diff --git a/plugins/CorePluginsAdmin/lang/fr.json b/plugins/CorePluginsAdmin/lang/fr.json
index a1f335e364..46ec461c03 100644
--- a/plugins/CorePluginsAdmin/lang/fr.json
+++ b/plugins/CorePluginsAdmin/lang/fr.json
@@ -104,6 +104,7 @@
"Version": "Version",
"ViewRepositoryChangelog": "Afficher les changements",
"ViewAllMarketplacePlugins": "Voir tous les plugins du marché",
- "Websites": "Sites web"
+ "Websites": "Sites web",
+ "WeDeactivatedThePluginAsItHasMissingDependencies": "Nous avons désactiver le composant %s car certaines dépendances lui manquent :"
}
} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/lang/hr.json b/plugins/CorePluginsAdmin/lang/hr.json
deleted file mode 100644
index 3b6c746dd3..0000000000
--- a/plugins/CorePluginsAdmin/lang/hr.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "CorePluginsAdmin": {
- "ActionInstall": "Instaliraj"
- }
-} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/lang/sq.json b/plugins/CorePluginsAdmin/lang/sq.json
index 858b5feb6b..141b60c1b7 100644
--- a/plugins/CorePluginsAdmin/lang/sq.json
+++ b/plugins/CorePluginsAdmin/lang/sq.json
@@ -104,6 +104,7 @@
"Version": "Version",
"ViewRepositoryChangelog": "Shihni ndryshimet",
"ViewAllMarketplacePlugins": "Shihni krejt shtojcat e Marketplace-it",
- "Websites": "Sajte"
+ "Websites": "Sajte",
+ "WeDeactivatedThePluginAsItHasMissingDependencies": "E çaktivizuam shtojcën %s, ngaqë ka varësi të paplotësuara:"
}
} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/lang/uk.json b/plugins/CorePluginsAdmin/lang/uk.json
index 76aa3b7383..26733f6cf7 100644
--- a/plugins/CorePluginsAdmin/lang/uk.json
+++ b/plugins/CorePluginsAdmin/lang/uk.json
@@ -34,6 +34,8 @@
"InstallingPlugin": "Встановлення %s",
"InstallNewPlugins": "Встановити нові плагіни",
"InstallNewThemes": "Встановити нові теми",
+ "InstalledPlugins": "Встановлені плагіни",
+ "InstalledThemes": "Встановлені теми",
"LastCommitTime": "(останній комміт %s)",
"LastUpdated": "Останнє оновлення",
"LicenseHomepage": "Дом. сторінка ліцензії",
@@ -50,6 +52,7 @@
"MissingRequirementsPleaseInstallNotice": "Будь ласка, встановіть %1$s %2$s так як воно потрібне для %3$s.",
"NewVersion": "нова версія",
"NoPluginsFound": "Плагіни не знайдені",
+ "NoPluginSettings": "Немає налаштувань плагінів, які можуть бути налаштовані",
"NotAllowedToBrowseMarketplacePlugins": "Можете подивитися список плагінів, які можуть бути встановлені для підстроювання або розширення вашої платформи Piwik. Зв'яжіться з адміністратором якщо вам буде потрібно встановити один з них.",
"NotAllowedToBrowseMarketplaceThemes": "Ви можете подивитися список тем, які можуть бути встановлені для налаштування зовнішнього вигляду платформи Piwik. Будь ласка, зв'яжіть з вашим адміністратором, щоб встановити будь-яку з них.",
"NoThemesFound": "Теми не знайдені",
@@ -69,6 +72,9 @@
"PluginVersionInfo": "%1$s – %2$s",
"PluginWebsite": "Сайт плагіну",
"Screenshots": "Скріншоти",
+ "SortByAlpha": "Альфа",
+ "SortByNewest": "Нові",
+ "SortByPopular": "Популярні",
"Status": "Статус",
"StepDownloadingPluginFromMarketplace": "Завантажити плагін з Маркету",
"StepDownloadingThemeFromMarketplace": "Завантажити тему з Маркету",
@@ -83,6 +89,8 @@
"SuccessfullyActicated": "Ви успішно активували <strong>%s<\/strong>.",
"Support": "Підтримка",
"TeaserExtendPiwik": "Поліпшення Piwik за допомогою Плагінів і Тим",
+ "TeaserExtendPiwikByPlugin": "Piwik продовжує %1$sвстановлювати новий плагін%2$s .",
+ "TeaserExtendPiwikByTheme": "Насолоджуйтесь інший видом та відчувайте себе по-новому зі %1$sвстановленням нової теми%2$s.",
"TeaserExtendPiwikByUpload": "Поліпшення Piwik закачуванням ZIP файла",
"InstallingNewPluginViaMarketplaceOrUpload": "Ви автоматично можете встановити плагіни з Маркету або %1$sзавантажити плагін%2$s в форматі zip.",
"Theme": "Тема",
@@ -95,6 +103,8 @@
"UploadZipFile": "Завантажити ZIP файл",
"Version": "Версія",
"ViewRepositoryChangelog": "Подивитися зміни",
- "Websites": "Сайти"
+ "ViewAllMarketplacePlugins": "Переглянути всі плагіни Маркету",
+ "Websites": "Сайти",
+ "WeDeactivatedThePluginAsItHasMissingDependencies": "Ми відключили плагін %s так як він має відсутні залежності:"
}
} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less b/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less
index 467b9fe49b..0adcbc1216 100644
--- a/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less
+++ b/plugins/CorePluginsAdmin/stylesheets/plugins_admin.less
@@ -1,6 +1,28 @@
+.pluginsManagement {
+ .footer-message {
+ margin-top: 32px;
+ .font-default(13px, 21px);
+ }
+}
+
+table.dataTable tr.active-plugin > td {
+ background-color:@theme-color-background-base !important;
+}
+
+table.dataTable tr.active-plugin:hover > td {
+ background-color:@theme-color-background-base !important;
+}
+
+table.dataTable tr.inactive-plugin > td {
+ background-color:#ddd !important;
+}
+
+table.dataTable tr.inactive-plugin:hover > td {
+ background-color:#ddd !important;
+}
.plugin-desc-text {
- margin-top:0em;
+ margin-top:0;
margin-bottom:1.5em;
}
@@ -44,12 +66,6 @@
.plugin-license {
float:right;
- font-style:italic;
-}
-
-.plugin-homepage {
- font-size:.8em;
- font-style:italic;
}
table.entityTable tr td .plugin-homepage a {
@@ -96,7 +112,6 @@ table.entityTable tr td a.uninstall {
.plugin-desc-missingrequirements {
font-weight:bold;
- font-style: italic;
a {
text-decoration: underline !important;
color: black;
@@ -107,7 +122,6 @@ table.entityTable tr td a.uninstall {
text-align: right;
width: 100%;
display: inline-block;
- font-style: italic;
}
}
diff --git a/plugins/CorePluginsAdmin/templates/installPlugin.twig b/plugins/CorePluginsAdmin/templates/installPlugin.twig
deleted file mode 100644
index 9f55777684..0000000000
--- a/plugins/CorePluginsAdmin/templates/installPlugin.twig
+++ /dev/null
@@ -1,41 +0,0 @@
-{% extends 'admin.twig' %}
-
-{% block content %}
-
- <div style="max-width:980px;">
-
- <h2>{{ 'CorePluginsAdmin_InstallingPlugin'|translate(plugin.name) }}</h2>
-
- <div>
-
- {% if plugin.isTheme %}
-
- <p>{{ 'CorePluginsAdmin_StepDownloadingThemeFromMarketplace'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepUnzippingTheme'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
-
- <p><strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivateTheme'|translate }}</a></strong>
-
- |
- <a href="{{ linkTo({'action': 'browseThemes'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a></p>
-
- {% else %}
-
- <p>{{ 'CorePluginsAdmin_StepDownloadingPluginFromMarketplace'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepUnzippingPlugin'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
-
- <p><strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivatePlugin'|translate }}</a></strong>
-
- |
- <a href="{{ linkTo({'action': 'browsePlugins'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a></p>
-
- {% endif %}
- </div>
- </div>
-
-{% endblock %}
diff --git a/plugins/CorePluginsAdmin/templates/license.twig b/plugins/CorePluginsAdmin/templates/license.twig
new file mode 100644
index 0000000000..9b2c9c0ae2
--- /dev/null
+++ b/plugins/CorePluginsAdmin/templates/license.twig
@@ -0,0 +1,4 @@
+
+<h1>License for {{ pluginName|raw }}</h1>
+
+{{ license|raw }}
diff --git a/plugins/CorePluginsAdmin/templates/macros.twig b/plugins/CorePluginsAdmin/templates/macros.twig
index eca8e609a6..78be51f24e 100644
--- a/plugins/CorePluginsAdmin/templates/macros.twig
+++ b/plugins/CorePluginsAdmin/templates/macros.twig
@@ -1,9 +1,11 @@
-{% macro tablePluginUpdates(pluginsHavingUpdate, nonce, isTheme) %}
+
+{% macro tablePluginUpdates(pluginsHavingUpdate, updateNonce, isMultiServerEnvironment) %}
+ {% import '@Marketplace/macros.twig' as marketplaceMacro %}
<table piwik-content-table>
<thead>
<tr>
- <th>{% if isTheme %}{{ 'CorePluginsAdmin_Theme'|translate }}{% else %}{{ 'General_Plugin'|translate }}{% endif %}</th>
+ <th>{{ 'General_Plugin'|translate }}</th>
<th class="num">{{ 'CorePluginsAdmin_Version'|translate }}</th>
<th>{{ 'General_Description'|translate }}</th>
<th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
@@ -27,7 +29,7 @@
</td>
<td class="desc">
{{ plugin.description }}
- {{ _self.missingRequirementsPleaseUpdateNotice(plugin) }}
+ {{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
</td>
<td class="status">
{% if plugin.isActivated %}
@@ -37,8 +39,13 @@
{% endif %}
</td>
<td class="togl action-links">
- {% if 0 == plugin.missingRequirements|length %}
- <a href="{{ linkTo({'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': nonce}) }}">Update</a>
+ {% if plugin.isDownloadable is defined and not plugin.isDownloadable %}
+ <span title="{{ 'CorePluginsAdmin_PluginNotDownloadable'|translate|e('html_attr') }} {% if plugin.isPaid %}{{ 'CorePluginsAdmin_PluginNotDownloadablePaidReason'|translate|e('html_attr') }}{% endif %}"
+ >{{ 'CorePluginsAdmin_NotDownloadable'|translate|e('html_attr') }}</span>
+ {% elseif isMultiServerEnvironment %}
+ <a onclick="$(this).css('display', 'none')" href="{{ linkTo({'action':'download', 'module': 'Marketplace', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}">{{ 'General_Download'|translate }}</a>
+ {% elseif 0 == plugin.missingRequirements|length %}
+ <a href="{{ linkTo({'action':'updatePlugin', 'module': 'Marketplace', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
{% else %}
-
{% endif %}
@@ -50,16 +57,15 @@
{% endmacro %}
-{% macro pluginDeveloper(owner) %}
- {% if 'piwik' == owner %}<img title="Piwik" alt="Piwik" style="padding-bottom:2px;height:11px;" src="plugins/Morpheus/images/logo-marketplace.png"/>{% else %}{{ owner }}{% endif %}
-{% endmacro %}
-
-{% macro featuredIcon(align='') %}
- <img class="featuredIcon"
- title="{{ 'CorePluginsAdmin_FeaturedPlugin'|translate }}"
- src="plugins/CorePluginsAdmin/images/rating_important.png"
- align="{{ align }}" />
-{% endmacro %}
+{% macro pluginActivateDeactivateAction(name, isActivated, missingRequirements, deactivateNonce, activateNonce) -%}
+ {%- if isActivated -%}
+ <a href='index.php?module=CorePluginsAdmin&action=deactivate&pluginName={{ name }}&nonce={{ deactivateNonce }}&redirectTo=referrer'>{{ 'CorePluginsAdmin_Deactivate'|translate }}</a>
+ {%- elseif missingRequirements %}
+ -
+ {% else -%}
+ <a href='index.php?module=CorePluginsAdmin&action=activate&pluginName={{ name }}&nonce={{ activateNonce }}&redirectTo=referrer'>{{ 'CorePluginsAdmin_Activate'|translate }}</a>
+ {%- endif -%}
+{%- endmacro %}
{% macro pluginsFilter() %}
@@ -81,175 +87,166 @@
{% endmacro %}
-{% macro missingRequirementsPleaseUpdateNotice(plugin) %}
- {% if plugin.missingRequirements and 0 < plugin.missingRequirements|length %}
- {% for req in plugin.missingRequirements -%}
- <div class="alert alert-danger">
- {% set requirement = req.requirement|capitalize %}
- {% if 'Php' == requirement %}
- {% set requirement = 'PHP' %}
- {% endif %}
- {{ 'CorePluginsAdmin_MissingRequirementsNotice'|translate(requirement, req.actualVersion, req.requiredVersion) }}
- </div>
- {%- endfor %}
- {% endif %}
-{% endmacro %}
-
{% macro tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, isTheme, marketplacePluginNames, displayAdminLinks) %}
-<div id="confirmUninstallPlugin" class="ui-confirm">
+ <div id="confirmUninstallPlugin" class="ui-confirm">
- <h2 id="uninstallPluginConfirm">{{ 'CorePluginsAdmin_UninstallConfirm'|translate }}</h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
+ <h2 id="uninstallPluginConfirm">{{ 'CorePluginsAdmin_UninstallConfirm'|translate }}</h2>
+ <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
+ <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
-</div>
+ </div>
-<table piwik-content-table>
- <thead>
- <tr>
- <th>{% if isTheme %}{{ 'CorePluginsAdmin_Theme'|translate }}{% else %}{{ 'General_Plugin'|translate }}{% endif %}</th>
- <th>{{ 'General_Description'|translate }}</th>
- <th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
- {% if (displayAdminLinks) %}
- <th class="action-links">{{ 'General_Action'|translate }}</th>
- {% endif %}
- </tr>
- </thead>
- <tbody id="plugins">
- {% for name,plugin in pluginsInfo %}
- {% set isDefaultTheme = isTheme and name == 'Morpheus' %}
- {% if (plugin.alwaysActivated is defined and not plugin.alwaysActivated) or isTheme %}
- <tr {% if plugin.activated %}class="active-plugin"{% else %}class="inactive-plugin"{% endif %} data-filter-status="{% if plugin.activated %}active{% else %}inactive{% endif %}" data-filter-origin="{% if plugin.isCorePlugin %}core{% else %}noncore{% endif %}">
- <td class="name">
- <a name="{{ name|e('html_attr') }}"></a>
- {% if not plugin.isCorePlugin and name in marketplacePluginNames -%}
- <a href="javascript:void(0);"
- piwik-plugin-name="{{ name|e('html_attr') }}"
- >{{ name }}</a>
- {%- else %}
- {{ name }}
- {% endif %}
- <span class="plugin-version" {% if plugin.isCorePlugin %}title="{{ 'CorePluginsAdmin_CorePluginTooltip'|translate }}"{% endif %}>({% if plugin.isCorePlugin %}{{ 'CorePluginsAdmin_OriginCore'|translate }}{% else %}v{{ plugin.info.version }}{% endif %})</span>
+ <table piwik-content-table>
+ <thead>
+ <tr>
+ <th>{% if isTheme %}{{ 'CorePluginsAdmin_Theme'|translate }}{% else %}{{ 'General_Plugin'|translate }}{% endif %}</th>
+ <th>{{ 'General_Description'|translate }}</th>
+ <th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
+ {% if (displayAdminLinks) %}
+ <th class="action-links">{{ 'General_Action'|translate }}</th>
+ {% endif %}
+ </tr>
+ </thead>
+ <tbody id="plugins">
+ {% for name,plugin in pluginsInfo %}
+ {% set isDefaultTheme = isTheme and name == 'Morpheus' %}
+ {% if (plugin.alwaysActivated is defined and not plugin.alwaysActivated) or isTheme %}
+ <tr {% if plugin.activated %}class="active-plugin"{% else %}class="inactive-plugin"{% endif %} data-filter-status="{% if plugin.activated %}active{% else %}inactive{% endif %}" data-filter-origin="{% if plugin.isCorePlugin %}core{% else %}noncore{% endif %}">
+ <td class="name">
+ <a name="{{ name|e('html_attr') }}"></a>
+ {% if not plugin.isCorePlugin and name in marketplacePluginNames -%}
+ <a href="javascript:void(0);"
+ piwik-plugin-name="{{ name|e('html_attr') }}"
+ >{{ name }}</a>
+ {%- else %}
+ {{ name }}
+ {% endif %}
+ <span class="plugin-version" {% if plugin.isCorePlugin %}title="{{ 'CorePluginsAdmin_CorePluginTooltip'|translate }}"{% endif %}>({% if plugin.isCorePlugin %}{{ 'CorePluginsAdmin_OriginCore'|translate }}{% else %}v{{ plugin.info.version }}{% endif %})</span>
- {% if name in pluginNamesHavingSettings %}
- <br /><br />
- <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'generalSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
- {% endif %}
- </td>
- <td class="desc">
- <div class="plugin-desc-missingrequirements">
- {% if plugin.missingRequirements is defined and plugin.missingRequirements %}
- {{ plugin.missingRequirements }}
- <br />
+ {% if name in pluginNamesHavingSettings %}
+ <br /><br />
+ <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'generalSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
{% endif %}
- </div>
- <div class="plugin-desc-text">
+ </td>
+ <td class="desc">
+ <div class="plugin-desc-missingrequirements">
+ {% if plugin.missingRequirements is defined and plugin.missingRequirements %}
+ {{ plugin.missingRequirements }}
+ <br />
+ {% endif %}
+ </div>
+ <div class="plugin-desc-text">
- {{ plugin.info.description|raw|nl2br }}
+ {{ plugin.info.description|raw|nl2br }}
- {% if plugin.info.homepage|default is not empty and plugin.info.homepage not in [
- 'http://piwik.org', 'http://www.piwik.org', 'http://piwik.org/', 'http://www.piwik.org/'
- ] %}
- <span class="plugin-homepage">
+ {% if plugin.info.homepage|default is not empty and plugin.info.homepage not in [
+ 'http://piwik.org', 'http://www.piwik.org', 'http://piwik.org/', 'http://www.piwik.org/'
+ ] %}
+ <span class="plugin-homepage">
<a target="_blank" href="{{ plugin.info.homepage }}">({{ 'CorePluginsAdmin_PluginHomepage'|translate|replace({' ': '&nbsp;'})|raw }})</a>
</span>
- {% endif %}
+ {% endif %}
- {% if plugin.info.donate is defined and plugin.info.donate|length %}
- <div class="plugin-donation">
- {{ 'CorePluginsAdmin_LikeThisPlugin'|translate }} <a href="javascript:;" class="plugin-donation-link" data-overlay-id="overlay-{{ name|escape('html_attr') }}">{{ 'CorePluginsAdmin_ConsiderDonating'|translate }}</a>
- <div id="overlay-{{ name|escape('html_attr') }}" class="donation-overlay ui-confirm" title="{{ 'CorePluginsAdmin_LikeThisPlugin'|translate }}">
- <p>{{ 'CorePluginsAdmin_CommunityContributedPlugin'|translate }}</p>
- <p>{{ 'CorePluginsAdmin_ConsiderDonatingCreatorOf'|translate("<b>" ~ name ~ "</b>")|raw }}</p>
- <div class="donation-links">
- {% if plugin.info.donate.paypal is defined and plugin.info.donate.paypal %}
- <a class="donation-link paypal" target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&item_name=Piwik%20Plugin%20{{ name|escape('url') }}&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted&business={{ plugin.info.donate.paypal|escape('url') }}"><img src="plugins/CorePluginsAdmin/images/paypal_donate.jpg" height="30"/></a>
- {% endif %}
- {% if plugin.info.donate.flattr is defined and plugin.info.donate.flattr %}
- <a class="donation-link flattr" target="_blank" href="{{ plugin.info.donate.flattr }}"><img class="alignnone" title="Flattr" alt="" src="plugins/CorePluginsAdmin/images/flattr.png" height="29" /></a>
- {% endif %}
- {% if plugin.info.donate.bitcoin is defined and plugin.info.donate.bitcoin %}
- <div class="donation-link bitcoin">
- <span>Donate Bitcoins to:</span>
- <a href="bitcoin:{{ plugin.info.donate.bitcoin|escape('url') }}">{{ plugin.info.donate.bitcoin }}</a>
+ {% if plugin.info.donate is defined and plugin.info.donate|length %}
+ <div class="plugin-donation">
+ {{ 'CorePluginsAdmin_LikeThisPlugin'|translate }} <a href="javascript:;" class="plugin-donation-link" data-overlay-id="overlay-{{ name|escape('html_attr') }}">{{ 'CorePluginsAdmin_ConsiderDonating'|translate }}</a>
+ <div id="overlay-{{ name|escape('html_attr') }}" class="donation-overlay ui-confirm" title="{{ 'CorePluginsAdmin_LikeThisPlugin'|translate }}">
+ <p>{{ 'CorePluginsAdmin_CommunityContributedPlugin'|translate }}</p>
+ <p>{{ 'CorePluginsAdmin_ConsiderDonatingCreatorOf'|translate("<b>" ~ name ~ "</b>")|raw }}</p>
+ <div class="donation-links">
+ {% if plugin.info.donate.paypal is defined and plugin.info.donate.paypal %}
+ <a class="donation-link paypal" target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&item_name=Piwik%20Plugin%20{{ name|escape('url') }}&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted&business={{ plugin.info.donate.paypal|escape('url') }}"><img src="plugins/CorePluginsAdmin/images/paypal_donate.jpg" height="30"/></a>
+ {% endif %}
+ {% if plugin.info.donate.flattr is defined and plugin.info.donate.flattr %}
+ <a class="donation-link flattr" target="_blank" href="{{ plugin.info.donate.flattr }}"><img class="alignnone" title="Flattr" alt="" src="plugins/CorePluginsAdmin/images/flattr.png" height="29" /></a>
+ {% endif %}
+ {% if plugin.info.donate.bitcoin is defined and plugin.info.donate.bitcoin %}
+ <div class="donation-link bitcoin">
+ <span>Donate Bitcoins to:</span>
+ <a href="bitcoin:{{ plugin.info.donate.bitcoin|escape('url') }}">{{ plugin.info.donate.bitcoin }}</a>
+ </div>
+ {% endif %}
</div>
- {% endif %}
+ <input role="no" type="button" value="{{ 'General_Close'|translate }}"/>
</div>
- <input role="no" type="button" value="{{ 'General_Close'|translate }}"/>
</div>
+ {% endif %}
+ </div>
+ {% if plugin.info.license is defined %}
+ <div class="plugin-license">
+ {% if plugin.info.license_file is defined %}<a title="{{ 'CorePluginsAdmin_LicenseHomepage'|translate }}" rel="noreferrer" target="_blank" href="index.php?module=CorePluginsAdmin&action=showLicense&pluginName={{ name }}">{% endif %}{{ plugin.info.license }}{% if plugin.info.license_file is defined %}</a>{% endif %}
</div>
{% endif %}
- </div>
- {% if plugin.info.license is defined %}
- <div class="plugin-license">
- {% if plugin.info.license_homepage is defined %}<a title="{{ 'CorePluginsAdmin_LicenseHomepage'|translate }}" rel="noreferrer" target="_blank" href="{{ plugin.info.license_homepage }}">{% endif %}{{ plugin.info.license }}{% if plugin.info.license_homepage is defined %}</a>{% endif %}
- </div>
- {% endif %}
- {% if plugin.info.authors is defined %}
- <div class="plugin-author">
- <cite>By
- {% if plugin.info.authors is defined -%}
- {% spaceless %}
- {% for author in plugin.info.authors if author.name %}
- {% if author.homepage is defined %}
- <a title="{{ 'CorePluginsAdmin_AuthorHomepage'|translate }}" href="{{ author.homepage }}" rel="noreferrer" target="_blank">{{ author.name }}</a>
+ {% if plugin.info.authors is defined %}
+ <div class="plugin-author">
+ By
+ {% if plugin.info.authors is defined -%}
+ {% spaceless %}
+ {% for author in plugin.info.authors if author.name %}
+ {% if author.homepage is defined %}
+ <a title="{{ 'CorePluginsAdmin_AuthorHomepage'|translate }}" href="{{ author.homepage }}" rel="noreferrer" target="_blank">{{ author.name }}</a>
+ {% else %}
+ {{ author.name }}
+ {% endif %}
+ {% if loop.index < plugin.info.authors|length %}
+ ,
+ {% endif %}
+ {% endfor %}
+ {% endspaceless %}
+ {%- endif %}.
+ </div>
+ {% endif %}
+ </td>
+ <td class="status" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
+ {% if not isDefaultTheme -%}
+
+ {% if plugin.activated %}
+ {{ 'CorePluginsAdmin_Active'|translate }}
{% else %}
- {{ author.name }}
+ {{ 'CorePluginsAdmin_Inactive'|translate }}
+ {% if plugin.uninstallable and displayAdminLinks %} <br/> - <a data-plugin-name="{{ name|escape('html_attr') }}" class="uninstall" href='index.php?module=CorePluginsAdmin&action=uninstall&pluginName={{ name }}&nonce={{ uninstallNonce }}'>{{ 'CorePluginsAdmin_ActionUninstall'|translate }}</a>{% endif %}
{% endif %}
- {% if loop.index < plugin.info.authors|length %}
- ,
- {% endif %}
- {% endfor %}
- {% endspaceless %}
- {%- endif %}.</cite>
- </div>
- {% endif %}
- </td>
- <td class="status" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
- {% if not isDefaultTheme -%}
- {% if plugin.activated %}
- {{ 'CorePluginsAdmin_Active'|translate }}
- {% else %}
- {{ 'CorePluginsAdmin_Inactive'|translate }}
- {% if plugin.uninstallable and displayAdminLinks %} <br/> - <a data-plugin-name="{{ name|escape('html_attr') }}" class="uninstall" href='index.php?module=CorePluginsAdmin&action=uninstall&pluginName={{ name }}&nonce={{ uninstallNonce }}'>{{ 'CorePluginsAdmin_ActionUninstall'|translate }}</a>{% endif %}
- {% endif %}
+ {%- endif %}
+ </td>
- {%- endif %}
- </td>
+ {% if displayAdminLinks %}
+ <td class="togl action-links" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
+ {% if not isDefaultTheme -%}
- {% if displayAdminLinks %}
- <td class="togl action-links" {% if isDefaultTheme %}style="border-left-width:0px;"{% endif %}>
- {% if not isDefaultTheme -%}
+ {% if plugin.invalid is defined or plugin.alwaysActivated %}
+ -
+ {% else %}
+ {{ _self.pluginActivateDeactivateAction(name, plugin.activated, plugin.missingRequirements, deactivateNonce, activateNonce) }}
+ {% endif %}
- {% if plugin.invalid is defined or plugin.alwaysActivated %}
- -
- {% else %}
- {% if plugin.activated %}
- <a href='index.php?module=CorePluginsAdmin&action=deactivate&pluginName={{ name }}&nonce={{ deactivateNonce }}'>{{ 'CorePluginsAdmin_Deactivate'|translate }}</a>
- {% elseif plugin.missingRequirements %}
- -
- {% else %}
- <a href='index.php?module=CorePluginsAdmin&action=activate&pluginName={{ name }}&nonce={{ activateNonce }}'>{{ 'CorePluginsAdmin_Activate'|translate }}</a>
- {% endif %}
+ {%- endif %}
+ </td>
{% endif %}
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </tbody>
+ </table>
- {%- endif %}
- </td>
- {% endif %}
- </tr>
+ <div class="tableActionBar">
+ {% if isTheme %}
+ <a href="{{ linkTo({'action':'browseThemes', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewThemes'|translate }}</a>
+ {% else %}
+ <a href="{{ linkTo({'action':'browsePlugins', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewPlugins'|translate }}</a>
{% endif %}
- {% endfor %}
- </tbody>
-</table>
-
-<div class="tableActionBar">
- {% if isTheme %}
- <a href="{{ linkTo({'action':'browseThemes', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewThemes'|translate }}</a>
- {% else %}
- <a href="{{ linkTo({'action':'browsePlugins', 'sort': ''}) }}"><span class="icon-add"></span> {{ 'CorePluginsAdmin_InstallNewPlugins'|translate }}</a>
- {% endif %}
-</div>
+ </div>
+
+ <div class="footer-message">
+ {% set pluginsAlwaysActivated %}
+ {% for name,plugin in pluginsInfo %}
+ {% if plugin.alwaysActivated is defined and plugin.alwaysActivated %}
+ {{ name }}{% if not loop.last %}, {% endif %}
+ {% endif %}
+ {% endfor %}
+ {% endset %}
+ {{ 'CorePluginsAdmin_AlwaysActivatedPluginsList'|translate(pluginsAlwaysActivated) }}
+ </div>
{% endmacro %}
diff --git a/plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig b/plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig
deleted file mode 100644
index 8fe294eadb..0000000000
--- a/plugins/CorePluginsAdmin/templates/marketplace/plugin-list.twig
+++ /dev/null
@@ -1,82 +0,0 @@
-{% if plugins|length > 0 %}
- <div class="row">
- {% for plugin in plugins %}
- {% if plugin.isDownloadable %}
- <div class="col s12 m6 l4">
- {% embed 'contentBlock.twig' with {'title': ''} %}
- {% block content %}
- <div class="plugin">
- <h3 class="card-title" title="{{ 'General_MoreDetails'|translate }}">
- <a href="#" piwik-plugin-name="{{ plugin.name }}">{{ plugin.name }}</a>
- </h3>
-
- <p class="description">
- {{ plugin.description }}
- <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
- &rsaquo; {{ 'General_MoreLowerCase'|translate }}</a>
- </p>
-
- {% if showThemes %}
- {# Screenshot for themes #}
- <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}">
- <img title="{{ 'General_MoreDetails'|translate }}"
- class="preview" src="{{ plugin.screenshots|first }}?w=250&h=150"/></a>
- {% endif %}
-
- <ul class="metadata">
- <li>
- {{ 'CorePluginsAdmin_Version'|translate }}: {{ plugin.latestVersion }}
- {% if plugin.canBeUpdated %}
- <a class="update-available" href="#" piwik-plugin-name="{{ plugin.name }}" data-activePluginTab="changelog"
- title="{{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}">
- {{ 'CorePluginsAdmin_NewVersion'|translate }}</a>
- {% endif %}
- </li>
- <li>{{ 'CorePluginsAdmin_Updated'|translate }}: {{ plugin.lastUpdated }}</li>
- <li>{{ 'General_Downloads'|translate }}: {{ plugin.numDownloads }}</li>
- <li>{{ 'CorePluginsAdmin_Developer'|translate }}: {{ pluginsMacro.pluginDeveloper(plugin.owner) }}</li>
- </ul>
-
- {% if isSuperUser %}
- <div class="footer" piwik-plugin-name="{{ plugin.name }}">
- {% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
- <a class="btn"
- href="{{ linkTo({'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">
- {{ 'CoreUpdater_UpdateTitle'|translate }}
- </a>
- {% elseif plugin.isInstalled %}
- <button class="btn btn-noop btn-block">
- {{ 'General_Installed'|translate }}
- </button>
- {% elseif plugin.missingRequirements|length > 0 %}
- <a class="btn btn-link btn-block" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
- {{ 'CorePluginsAdmin_CannotInstall'|translate }}
- </a>
- {% else %}
- <a href="{{ linkTo({'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
- class="btn">
- {{ 'CorePluginsAdmin_ActionInstall'|translate }}
- </a>
- {% endif %}
- </div>
- {% endif %}
-
- </div>
- {% endblock %}
- {% endembed %}
- </div>
- {% endif %}
-{% endfor %}
- </div>
-{% endif %}
-
-{% if plugins|length == 0 %}
- <div piwik-content-block>
- {% if showThemes %}
- {{ 'CorePluginsAdmin_NoThemesFound'|translate }}
- {% else %}
- {{ 'CorePluginsAdmin_NoPluginsFound'|translate }}
- {% endif %}
- </div>
-{% endif %}
-
diff --git a/plugins/CorePluginsAdmin/templates/pluginDetails.twig b/plugins/CorePluginsAdmin/templates/pluginDetails.twig
deleted file mode 100644
index 33a73f3c80..0000000000
--- a/plugins/CorePluginsAdmin/templates/pluginDetails.twig
+++ /dev/null
@@ -1,209 +0,0 @@
-{% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
-
-{% block content %}
-
- <div class="pluginDetails">
- {% if errorMessage %}
- {{ errorMessage }}
- {% elseif plugin and plugin.isDownloadable %}
-
- {% set latestVersion = plugin.versions[plugin.versions|length - 1] %}
-
- <div class="header">
- <div class="intro">
- <h2>{{ plugin.name }}</h2>
- <p class="description">
- {% if plugin.featured %}
- {{ pluginsMacro.featuredIcon('left') }}
- {% endif %}
- {{ plugin.description }}
- </p>
- </div>
- <div class="actionButton">
- {% if isSuperUser %}
- {% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
- <a class="install update"
- href="{{ linkTo({'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}"
- >{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
- {% elseif plugin.isInstalled %}
- {% elseif 0 < plugin.missingRequirements|length %}
- {% else %}
- <a href="{{ linkTo({'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
- class="install">{{ 'CorePluginsAdmin_ActionInstall'|translate }}</a>
- {% endif %}
- {% endif %}
- </div>
- </div>
-
- <div class="content">
- <div class="contentDetails">
- <div id="pluginDetailsTabs" class="row">
- <div class="col s12">
- <ul class="tabs">
- <li class="tab col s3"><a href="#tabs-description">{{ 'General_Description'|translate }}</a></li>
-
- {% if latestVersion.readmeHtml.faq %}
- <li class="tab col s3"><a href="#tabs-faq">{{ 'General_Faq'|translate }}</a></li>
- {% endif %}
-
- <li class="tab col s3"><a href="#tabs-changelog">{{ 'CorePluginsAdmin_Changelog'|translate }}</a></li>
-
- {% if plugin.screenshots|length %}
- <li class="tab col s3"><a href="#tabs-screenshots">{{ 'CorePluginsAdmin_Screenshots'|translate }}</a></li>
- {% endif %}
-
- {% if latestVersion.readmeHtml.support is defined and latestVersion.readmeHtml.support %}
- <li class="tab col s3"><a href="#tabs-support">{{ 'CorePluginsAdmin_Support'|translate }}</a></li>
- {% endif %}
- </ul>
- </div>
-
- <div id="tabs-description" class="tab-content col s12">
- {{ pluginsMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
- {{ latestVersion.readmeHtml.description|raw }}
- </div>
-
- {% if latestVersion.readmeHtml.faq %}
- <div id="tabs-faq" class="tab-content col s12">
- {{ latestVersion.readmeHtml.faq|raw }}
- </div>
- {% endif %}
-
- <div id="tabs-changelog" class="tab-content col s12">
- {{ pluginsMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
- {% if plugin.canBeUpdated %}
- <div class="alert alert-warning">
- {{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}
- {% if plugin.repositoryChangelogUrl %}<a rel="noreferrer" target="_blank" href="{{ plugin.repositoryChangelogUrl }}">{{ 'CorePluginsAdmin_ViewRepositoryChangelog'|translate }}</a>{% endif %}
- </div>
- {% endif %}
-
- {% if latestVersion.readmeHtml.changelog %}
- {{ latestVersion.readmeHtml.changelog|raw }}
- {% endif %}
-
- <h3>{{ 'CorePluginsAdmin_History'|translate }}</h3>
-
- <ul>
- {% for version in plugin.versions|reverse %}
- <li>
- {% set versionName %}
- <strong>
- {% if version.repositoryChangelogUrl %}
- <a target="_blank" title="{{ 'CorePluginsAdmin_Changelog'|translate }}" href="{{ version.repositoryChangelogUrl }}">{{ version.name }}</a>
- {% else %}
- {{ version.name }}
- {% endif %}
- </strong>
- {% endset %}
- {{ 'CorePluginsAdmin_PluginVersionInfo'|translate(versionName, version.release)|raw }}
- </li>
- {% endfor %}
- </ul>
- </div>
-
- {% if plugin.screenshots|length %}
- <div id="tabs-screenshots" class="tab-content col s12">
- <div class="thumbnails">
- {% for screenshot in plugin.screenshots %}
- <div class="thumbnail">
- <a href="{{ screenshot }}" target="_blank"><img src="{{ screenshot }}?w=400" width="400" alt=""></a>
- <p>
- {{ screenshot|split('/')|last|replace({'_': ' ', '.png': '', '.jpg': '', '.jpeg': ''}) }}
- </p>
- </div>
- {% endfor %}
- </div>
- </div>
- {% endif %}
-
- {% if latestVersion.readmeHtml.support is defined and latestVersion.readmeHtml.support %}
- <div id="tabs-support" class="tab-content col s12">
-
- {{ latestVersion.readmeHtml.support|raw }}
-
- </div>
- {% endif %}
- </div>
-
- </div>
- <div class="metadata">
- <dl>
- <dt>{{ 'CorePluginsAdmin_Version'|translate }}</dt>
- <dd>{{ plugin.latestVersion }}</dd>
- <dt>{{ 'CorePluginsAdmin_PluginKeywords'|translate }}</dt>
- <dd>{{ plugin.keywords|join(', ') }}</dd>
- <dt>{{ 'CorePluginsAdmin_LastUpdated'|translate }}</dt>
- <dd>{{ plugin.lastUpdated }}</dd>
- <dt>{{ 'General_Downloads'|translate }}</dt>
- <dd title="{{ 'CorePluginsAdmin_NumDownloadsLatestVersion'|translate(latestVersion.numDownloads|number_format) }}">{{ plugin.numDownloads }}</dd>
- <dt>{{ 'CorePluginsAdmin_Developer'|translate }}</dt>
- <dd>{{ pluginsMacro.pluginDeveloper(plugin.owner) }}</dd>
- <dt>{{ 'CorePluginsAdmin_Authors'|translate }}</dt>
- <dd>{% for author in plugin.authors if author.name %}
-
- {% spaceless %}
- {% if author.homepage %}
- <a target="_blank" href="{{ author.homepage }}">{{ author.name }}</a>
- {% elseif author.email %}
- <a href="mailto:{{ author.email|escape('url') }}">{{ author.name }}</a>
- {% else %}
- {{ author.name }}
- {% endif %}
-
- {% if loop.index < plugin.authors|length %}
- ,
- {% endif %}
- {% endspaceless %}
-
- {% endfor %}
- </dd>
- <dt>{{ 'CorePluginsAdmin_Websites'|translate }}</dt>
- <dd>
- {% if plugin.homepage %}
- <a target="_blank" href="{{ plugin.homepage }}">{{ 'CorePluginsAdmin_PluginWebsite'|translate }}</a>,
- {% endif %}
- <a target="_blank" href="{{ plugin.repositoryUrl }}">GitHub</a></dd>
- {% if plugin.activity %}
- <dt>{{ 'CorePluginsAdmin_Activity'|translate }}</dt>
- <dd>
- {{ plugin.activity.numCommits }} commits
-
- {% if plugin.activity.numContributors > 1 %}
- {{ 'CorePluginsAdmin_ByXDevelopers'|translate(plugin.activity.numContributors) }}
- {% endif %}
- {% if plugin.activity.lastCommitDate %}
- {{ 'CorePluginsAdmin_LastCommitTime'|translate(plugin.activity.lastCommitDate) }}
- {% endif %}</dd>
- {% endif %}
- </dl>
- <br />
- </div>
- </div>
- <script type="text/javascript">
- $(function() {
-
- var active = 0;
- {% if activeTab %}
- var $activeTab = $('#tabs-{{ activeTab|e('js') }}');
- if ($activeTab) {
- active = $activeTab.index() - 1;
- }
- {% endif %}
-
- $('#pluginDetailsTabs .tabs').tabs();
- $('#pluginDetailsTabs .tabs').tabs('select_tab', active >= 0 ? active : 0);
-
- $('.pluginDetails a').each(function (index, a) {
- var link = $(a).attr('href');
-
- if (link && 0 === link.indexOf('http')) {
- $(a).attr('target', '_blank');
- }
- });
- });
- </script>
- {% endif %}
- </div>
-
-{% endblock %}
diff --git a/plugins/CorePluginsAdmin/templates/plugins.twig b/plugins/CorePluginsAdmin/templates/plugins.twig
index 4a8649710b..4822c89d88 100644
--- a/plugins/CorePluginsAdmin/templates/plugins.twig
+++ b/plugins/CorePluginsAdmin/templates/plugins.twig
@@ -1,3 +1,4 @@
+
{% extends 'admin.twig' %}
{% import '@CorePluginsAdmin/macros.twig' as plugins %}
@@ -6,42 +7,44 @@
{% block content %}
-<div piwik-content-intro>
- <h2 piwik-enriched-headline>
- {{ title|e('html_attr') }}
- </h2>
+ <div piwik-content-intro>
+ <h2 piwik-enriched-headline>
+ {{ title|e('html_attr') }}
+ </h2>
- <p>{{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
- {{ 'CorePluginsAdmin_OncePluginIsInstalledYouMayActivateHere'|translate }}
+ <p>{{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
+ {{ 'CorePluginsAdmin_OncePluginIsInstalledYouMayActivateHere'|translate }}
- {% if isMarketplaceEnabled %}
- {{ 'CorePluginsAdmin_TeaserExtendPiwikByPlugin'|translate('<a href="' ~ linkTo({'action':'browsePlugins', 'sort': ''}) ~ '">', '</a>')|raw }}
- {% endif %}
+ {% if isMarketplaceEnabled %}
+ {{ 'CorePluginsAdmin_TeaserExtendPiwikByPlugin'|translate('<a href="' ~ linkTo({'action':'browsePlugins', 'sort': ''}) ~ '">', '</a>')|raw }}
+ {% endif %}
- {% if not isPluginsAdminEnabled %}
- <br/>{{ 'CorePluginsAdmin_DoMoreContactPiwikAdmins'|translate }}
- {% endif %}
+ {% if not isPluginsAdminEnabled %}
+ <br/>{{ 'CorePluginsAdmin_DoMoreContactPiwikAdmins'|translate }}
+ {% endif %}
- <br />
- {{ 'CorePluginsAdmin_ChangeLookByManageThemes'|translate('<a href="' ~ linkTo({'action': 'themes'}) ~'">', '</a>')|raw }}
- </p>
-</div>
+ <br />
+ {{ 'CorePluginsAdmin_ChangeLookByManageThemes'|translate('<a href="' ~ linkTo({'action': 'themes'}) ~'">', '</a>')|raw }}
+ </p>
+ </div>
-{% if pluginsHavingUpdate|length %}
- <div piwik-content-block content-title="{{ pluginsHavingUpdate|length }} Update(s) available">
+ {% if pluginsHavingUpdate|length %}
+ <div piwik-content-block content-title="{{ pluginsHavingUpdate|length }} Update(s) available">
- <p>{{ 'CorePluginsAdmin_InfoPluginUpdateIsRecommended'|translate }}</p>
+ <p>{{ 'CorePluginsAdmin_InfoPluginUpdateIsRecommended'|translate }}</p>
- {{ plugins.tablePluginUpdates(pluginsHavingUpdate, updateNonce, activateNonce, 0) }}
- </div>
-{% endif %}
+ {{ plugins.tablePluginUpdates(pluginsHavingUpdate, updateNonce, isMultiServerEnvironment) }}
+ </div>
+ {% endif %}
-<div piwik-content-block content-title="{{ 'CorePluginsAdmin_InstalledPlugins'|translate|e('html_attr') }}" piwik-plugin-management>
+ <div piwik-content-block content-title="{{ 'CorePluginsAdmin_InstalledPlugins'|translate|e('html_attr') }}"
+ class="pluginsManagement"
+ piwik-plugin-management>
- {{ plugins.pluginsFilter() }}
+ {{ plugins.pluginsFilter() }}
- {{ plugins.tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, false, marketplacePluginNames, isPluginsAdminEnabled) }}
+ {{ plugins.tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, false, marketplacePluginNames, isPluginsAdminEnabled) }}
-</div>
+ </div>
{% endblock %} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/templates/updatePlugin.twig b/plugins/CorePluginsAdmin/templates/updatePlugin.twig
deleted file mode 100644
index 024dbc028f..0000000000
--- a/plugins/CorePluginsAdmin/templates/updatePlugin.twig
+++ /dev/null
@@ -1,41 +0,0 @@
-{% extends 'admin.twig' %}
-
-{% block content %}
-
- <div style="max-width:980px;">
-
- <h2>{{ 'CorePluginsAdmin_UpdatingPlugin'|translate(plugin.name) }}</h2>
-
- <div>
-
- {% if plugin.isTheme %}
-
- <p>{{ 'CorePluginsAdmin_StepDownloadingThemeFromMarketplace'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepUnzippingTheme'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepReplaceExistingTheme'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepThemeSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
-
- {% else %}
-
- <p>{{ 'CorePluginsAdmin_StepDownloadingPluginFromMarketplace'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepUnzippingPlugin'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepReplaceExistingPlugin'|translate }}</p>
-
- <p>{{ 'CorePluginsAdmin_StepPluginSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
-
- {% endif %}
-
- <p><a href="{{ linkTo({'action': 'plugins'}) }}">{{ 'General_Plugins'|translate }}</a>
- |
- <a href="{{ linkTo({'action': 'themes'}) }}">{{ 'CorePluginsAdmin_Themes'|translate }}</a>
- |
- <a href="{{ linkTo({'action': 'marketplace'}) }}">{{ 'CorePluginsAdmin_Marketplace'|translate }}</a></p>
- </div>
- </div>
-
-{% endblock %}
diff --git a/plugins/CorePluginsAdmin/templates/uploadPlugin.twig b/plugins/CorePluginsAdmin/templates/uploadPlugin.twig
index ff42dd8b69..42825be41d 100644
--- a/plugins/CorePluginsAdmin/templates/uploadPlugin.twig
+++ b/plugins/CorePluginsAdmin/templates/uploadPlugin.twig
@@ -5,36 +5,36 @@
<div style="max-width:980px;">
<div>
- <h2>{{ 'CorePluginsAdmin_InstallingPlugin'|translate(plugin.name) }}</h2>
+ <h2>{{ 'Marketplace_InstallingPlugin'|translate(plugin.name) }}</h2>
{% if plugin.isTheme %}
- <p>{{ 'CorePluginsAdmin_StepUnzippingTheme'|translate }}</p>
+ <p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
- <p>{{ 'CorePluginsAdmin_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
+ <p>{{ 'Marketplace_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
<p>
{% if not plugin.isActivated %}
- <strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivateTheme'|translate }}</a></strong>
+ <strong><a class="btn" href="{{ linkTo({'action': 'activate', 'module': 'CorePluginsAdmin', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'Marketplace_ActionActivateTheme'|translate }}</a></strong>
|
{% endif %}
- <a href="{{ linkTo({'action': 'marketplace'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a>
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a>
</p>
{% else %}
- <p>{{ 'CorePluginsAdmin_StepUnzippingPlugin'|translate }}</p>
+ <p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
- <p>{{ 'CorePluginsAdmin_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
+ <p>{{ 'Marketplace_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.version) }}</p>
<p>
{% if not plugin.isActivated %}
- <strong><a href="{{ linkTo({'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'CorePluginsAdmin_ActionActivatePlugin'|translate }}</a></strong>
+ <strong><a class="btn" href="{{ linkTo({'action': 'activate', 'module': 'CorePluginsAdmin', 'pluginName': plugin.name, 'nonce': nonce}) }}">{{ 'Marketplace_ActionActivatePlugin'|translate }}</a></strong>
|
{% endif %}
- <a href="{{ linkTo({'action': 'marketplace'}) }}">{{ 'CorePluginsAdmin_BackToExtendPiwik'|translate }}</a>
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a>
</p>
{% endif %}
diff --git a/plugins/CoreUpdater/Commands/Update.php b/plugins/CoreUpdater/Commands/Update.php
index be2c105e93..5756bd02aa 100644
--- a/plugins/CoreUpdater/Commands/Update.php
+++ b/plugins/CoreUpdater/Commands/Update.php
@@ -358,7 +358,7 @@ class Update extends ConsoleCommand
*/
protected function writeAlertMessageWhenCommandExecutedWithUnexpectedUser(OutputInterface $output)
{
- if(SettingsServer::isWindows()) {
+ if (SettingsServer::isWindows()) {
// does not work on windows
return;
}
@@ -366,12 +366,11 @@ class Update extends ConsoleCommand
$processUserAndGroup = Filechecks::getUserAndGroup();
$fileOwnerUserAndGroup = Filechecks::getOwnerOfPiwikFiles();
- if($processUserAndGroup == $fileOwnerUserAndGroup) {
+ if (!$fileOwnerUserAndGroup || $processUserAndGroup == $fileOwnerUserAndGroup) {
// current process user/group appear to be same as the Piwik filesystem user/group -> OK
return;
}
$output->writeln(
-
sprintf("<comment>It appears you have executed this update with user %s, while your Piwik files are owned by %s. \n\nTo ensure that the Piwik files are readable by the correct user, you may need to run the following command (or a similar command depending on your server configuration):\n\n$ %s</comment>",
$processUserAndGroup,
$fileOwnerUserAndGroup,
diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php
index a39dc172dc..143c9c04b9 100644
--- a/plugins/CoreUpdater/Controller.php
+++ b/plugins/CoreUpdater/Controller.php
@@ -12,6 +12,7 @@ use Exception;
use Piwik\AssetManager;
use Piwik\Common;
use Piwik\Config;
+use Piwik\Container\StaticContainer;
use Piwik\DbHelper;
use Piwik\Filechecks;
use Piwik\Filesystem;
@@ -20,8 +21,8 @@ use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin;
-use Piwik\Plugins\CorePluginsAdmin\Marketplace;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
+use Piwik\Plugins\Marketplace\Plugins;
use Piwik\SettingsServer;
use Piwik\Updater as DbUpdater;
use Piwik\Version;
@@ -40,9 +41,15 @@ class Controller extends \Piwik\Plugin\Controller
*/
private $updater;
- public function __construct(Updater $updater)
+ /**
+ * @var Plugins
+ */
+ private $marketplacePlugins;
+
+ public function __construct(Updater $updater, Plugins $marketplacePlugins = null)
{
$this->updater = $updater;
+ $this->marketplacePlugins = $marketplacePlugins;
parent::__construct();
}
@@ -125,9 +132,8 @@ class Controller extends \Piwik\Plugin\Controller
$marketplacePlugins = array();
try {
- if (!empty($incompatiblePlugins)) {
- $marketplace = new Marketplace();
- $marketplacePlugins = $marketplace->getAllAvailablePluginNames();
+ if (!empty($incompatiblePlugins) && $this->marketplacePlugins) {
+ $marketplacePlugins = $this->marketplacePlugins->getAllAvailablePluginNames();
}
} catch (\Exception $e) {}
diff --git a/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php b/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php
index 6ff410e7e4..102cf7b0dd 100644
--- a/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php
+++ b/plugins/CoreUpdater/ReleaseChannel/Latest2XBeta.php
@@ -28,6 +28,11 @@ class Latest2XBeta extends ReleaseChannel
return Piwik::translate('CoreUpdater_LtsSupportVersion');
}
+ public function doesPreferStable()
+ {
+ return false;
+ }
+
public function getOrder()
{
return 21;
diff --git a/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php b/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php
index 53b1c33975..572badac91 100644
--- a/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php
+++ b/plugins/CoreUpdater/ReleaseChannel/LatestBeta.php
@@ -23,6 +23,11 @@ class LatestBeta extends ReleaseChannel
return Piwik::translate('CoreUpdater_LatestBetaRelease');
}
+ public function doesPreferStable()
+ {
+ return false;
+ }
+
public function getOrder()
{
return 11;
diff --git a/plugins/CoreUpdater/SystemSettings.php b/plugins/CoreUpdater/SystemSettings.php
index 256cf65f08..bc09bfaec5 100644
--- a/plugins/CoreUpdater/SystemSettings.php
+++ b/plugins/CoreUpdater/SystemSettings.php
@@ -11,7 +11,7 @@ namespace Piwik\Plugins\CoreUpdater;
use Piwik\Piwik;
use Piwik\Plugin\ReleaseChannels;
use Piwik\Plugins\CoreAdminHome\Controller as CoreAdminController;
-use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication as PluginUpdateCommunication;
+use Piwik\Plugins\Marketplace\UpdateCommunication as PluginUpdateCommunication;
use Piwik\Settings\Setting;
use Piwik\Settings\FieldConfig;
diff --git a/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php b/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php
index 5d480ed18e..13b2422be5 100644
--- a/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php
+++ b/plugins/CoreUpdater/Test/Integration/ReleaseChannelTest.php
@@ -65,4 +65,9 @@ class ReleaseChannelTest extends IntegrationTestCase
$this->assertStringStartsWith("http://api.piwik.org/1.0/getLatestVersion/?piwik_version=$version&php_version=$phpVersion&mysql_version=$mysqlVersion&release_channel=my_channel&url=$url&trigger=&timezone=", $urlToCheck);
}
+ public function test_doesPreferStable()
+ {
+ $this->assertTrue($this->channel->doesPreferStable());
+ }
+
}
diff --git a/plugins/CoreUpdater/Updater.php b/plugins/CoreUpdater/Updater.php
index 316f325690..347ea3f5ca 100644
--- a/plugins/CoreUpdater/Updater.php
+++ b/plugins/CoreUpdater/Updater.php
@@ -17,10 +17,9 @@ use Piwik\Http;
use Piwik\Option;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin\ReleaseChannels;
-use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiException;
use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
+use Piwik\Plugins\Marketplace\Api as MarketplaceApi;
+use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
use Piwik\Unzip;
@@ -115,10 +114,20 @@ class Updater
$this->verifyDecompressedArchive($extractedArchiveDirectory);
$messages[] = $this->translator->translate('CoreUpdater_VerifyingUnpackedFiles');
- // we need to load the marketplace already here, otherwise it will use the new, updated file in Piwik 3
- $marketplace = new MarketplaceApiClient();
- require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/PluginInstaller.php';
- require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/MarketplaceApiException.php';
+ if (Marketplace::isMarketplaceEnabled()) {
+ // we need to load the marketplace already here, otherwise it will use the new, updated file in Piwik 3
+
+ // we also need to make sure to create a new instance here as otherwise we would change the "global"
+ // environment, but we only want to change piwik version temporarily for this task here
+ $environment = StaticContainer::getContainer()->make('Piwik\Plugins\Marketplace\Environment');
+ $environment->setPiwikVersion($newVersion);
+ /** @var \Piwik\Plugins\Marketplace\Api\Client $marketplaceClient */
+ $marketplaceClient = StaticContainer::getContainer()->make('Piwik\Plugins\Marketplace\Api\Client', array(
+ 'environment' => $environment
+ ));
+ require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/PluginInstaller.php';
+ require_once PIWIK_DOCUMENT_ROOT . '/plugins/Marketplace/Api/Exception.php';
+ }
$this->installNewFiles($extractedArchiveDirectory);
$messages[] = $this->translator->translate('CoreUpdater_InstallingTheLatestVersion');
@@ -130,29 +139,25 @@ class Updater
}
try {
- if (CorePluginsAdmin::isMarketplaceEnabled()) {
- $messages[] = $this->translator->translate('CoreUpdater_CheckingForPluginUpdates');
+ if (Marketplace::isMarketplaceEnabled() && !empty($marketplaceClient)) {
+ $messages[] = $this->translator->translate('CoreUpdater_CheckingForPluginUpdates');
$pluginManager = PluginManager::getInstance();
$pluginManager->loadAllPluginsAndGetTheirInfo();
$loadedPlugins = $pluginManager->getLoadedPlugins();
- MarketplaceApiClient::clearAllCacheEntries();
- StaticContainer::getContainer()->set('marketplacePiwikVersion', $newVersion);
-
- $pluginsWithUpdate = $marketplace->checkUpdates($loadedPlugins);
+ $marketplaceClient->clearAllCacheEntries();
+ $pluginsWithUpdate = $marketplaceClient->checkUpdates($loadedPlugins);
foreach ($pluginsWithUpdate as $pluginWithUpdate) {
$pluginName = $pluginWithUpdate['name'];
-
$messages[] = $this->translator->translate('CoreUpdater_UpdatingPluginXToVersionY',
array($pluginName, $pluginWithUpdate['version']));
-
- $pluginInstaller = new PluginInstaller($pluginName);
- $pluginInstaller->installOrUpdatePluginFromMarketplace();
+ $pluginInstaller = new PluginInstaller($marketplaceClient);
+ $pluginInstaller->installOrUpdatePluginFromMarketplace($pluginName);
}
}
- } catch (MarketplaceApiException $e) {
+ } catch (MarketplaceApi\Exception $e) {
// there is a problem with the connection to the server, ignore for now
} catch (Exception $e) {
throw new UpdaterException($e, $messages);
diff --git a/plugins/CoreUpdater/lang/uk.json b/plugins/CoreUpdater/lang/uk.json
index d8233db0d7..7108b1af5a 100644
--- a/plugins/CoreUpdater/lang/uk.json
+++ b/plugins/CoreUpdater/lang/uk.json
@@ -1,5 +1,6 @@
{
"CoreUpdater": {
+ "CheckingForPluginUpdates": "Перевірка на наявність нових оновлень плагінів",
"ClickHereToViewSqlQueries": "Клацніть тут для перегляду та копіювання пеерліку SQL запитів що повинні бути виконані.",
"CriticalErrorDuringTheUpgradeProcess": "Критична помилка протягом процесу поновлення:",
"DatabaseUpgradeRequired": "Необхідно поновити базу даних",
@@ -23,6 +24,7 @@
"HelpMessageIntroductionWhenError": "Вище знаходиться повідомлення про помилку рівня ядра. Це повинно допомогти у виявлення причини, але якщо потрібна подальша допомога, будьласка:",
"HelpMessageIntroductionWhenWarning": "Поновлення завершено успішно, однак були інциденти протягом проходження процесу. Будь-ласка прочитайте опис щоб дізнатися деталі. Для подальшої допомоги:",
"HighTrafficPiwikServerEnableMaintenance": "Якщо ви керуєте сервером Piwik з великим обсягом трафіку, ми рекомендуємо %1$sна мить вимкнути Відстеження відвідувачів і перемкнути Інтерфейс Piwik в режим%2$s підтримки.",
+ "IncompatbilePluginsWillBeDisabledInfo": "Примітка: деякі плагіни не сумісні з Piwik %s. Ми будемо оновлювати їх, якщо є оновлення на Маркеті, в іншому випадку ми будемо відключати їх при оновленні:",
"InstallingTheLatestVersion": "Встановлення останньої версії",
"LatestBetaRelease": "Останній тестовий випуск",
"LatestStableRelease": "Останній стабільний випуск",
@@ -51,11 +53,13 @@
"UpdateAutomatically": "Поновити автоматично",
"UpdateHasBeenCancelledExplanation": "Поновлення Piwik Одним Клацанням було скасовано. Якщо неможливо виправити повідомлення про помилку вище, рекомендується поновити Piwik вручну. %1$s Гляньте %2$sДокументацію про поновлення%3$s щоб розпочати!",
"UpdateTitle": "Piwik › Поновлення",
+ "UpdatingPluginXToVersionY": "Оновлення плагіну %1$s до версії %2$s",
"UpdateSuccessTitle": "Piwik успішно поновлено!",
"UpdateErrorTitle": "Помилка при оновленні",
"ThankYouUpdatePiwik": "Спасибі за те, що користуєтеся Piwik і оновлюєте його!",
"PostUpdateMessage": "Piwik завжди буде вільним для скачування і використання, але йому потрібна постійна підтримка щоб рости і поліпшуватися.",
"PostUpdateSupport": "Якщо вам потрібна допомога у використанні Piwik, то ви зможете отримати підтримку від його творців:",
+ "ProfessionalServices": "Професійний Сервіс",
"CloudHosting": "Хмарний хостинг",
"Updating": "Оновлення",
"UpdateUsingHttpsFailed": "Не вдалося завантажити останню версію Piwik з безпечного HTTPS, виникла наступна помилка:",
diff --git a/plugins/CoreUpdater/templates/layout.twig b/plugins/CoreUpdater/templates/layout.twig
index 1af26ed70b..e49d4bdd3e 100644
--- a/plugins/CoreUpdater/templates/layout.twig
+++ b/plugins/CoreUpdater/templates/layout.twig
@@ -2,7 +2,7 @@
<html id="ng-app" ng-app="piwikApp">
<head>
<meta charset="utf-8">
- <title>Piwik &rsaquo; {{ 'CoreUpdater_UpdateTitle'|translate }}</title>
+ <title>Piwik &rsaquo; {{ pageTitle|default('CoreUpdater_UpdateTitle'|translate) }}</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1"/>
<meta name="viewport" content="initial-scale=1.0" />
<meta name="robots" content="noindex,nofollow">
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator.php b/plugins/CoreVisualizations/JqplotDataGenerator.php
index 14e796cd0d..2a3b9762b1 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator.php
@@ -99,9 +99,6 @@ class JqplotDataGenerator
*/
protected function initChartObjectData($dataTable, $visualization)
{
- // We apply a filter to the DataTable, decoding the label column (useful for keywords for example)
- $dataTable->filter('ColumnCallbackReplace', array('label', 'urldecode'));
-
$xLabels = $dataTable->getColumn('label');
$columnNames = $this->properties['columns_to_display'];
diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts
-Subproject 32d3143e5712e960445349fff0270703d4dc169
+Subproject 1463780470ab920c34968bb591675ad9c013ca2
diff --git a/plugins/CustomDimensions b/plugins/CustomDimensions
-Subproject a6bdbaef0040f00e34d344231da777304883026
+Subproject 6a0c1dfa85612eaa02453d0b82aaea91ae5bef8
diff --git a/plugins/CustomPiwikJs/lang/uk.json b/plugins/CustomPiwikJs/lang/uk.json
new file mode 100644
index 0000000000..e74f3c6a56
--- /dev/null
+++ b/plugins/CustomPiwikJs/lang/uk.json
@@ -0,0 +1,7 @@
+{
+ "CustomPiwikJs": {
+ "DiagnosticPiwikJsWritable": "Доступний для запису JavaScript трекер (\"\/piwik.js\")",
+ "DiagnosticPiwikJsNotWritable": "Файл Piwik JavaScript трекеру \"\/piwik.js\" недоступний для запису, що означає, що інші плагіни не можуть використовувати JavaScript треккер. У майбутньому навіть деякі основні функції можуть не працювати, як очікується.",
+ "DiagnosticPiwikJsMakeWritable": "Ми рекомендуємо Piwik.js зробити доступним для запису, виконавши команду: %s"
+ }
+} \ No newline at end of file
diff --git a/plugins/DBStats/lang/pt.json b/plugins/DBStats/lang/pt.json
index 36564ac360..446c39e29a 100644
--- a/plugins/DBStats/lang/pt.json
+++ b/plugins/DBStats/lang/pt.json
@@ -2,6 +2,7 @@
"DBStats": {
"DatabaseUsage": "Uso da base de dados",
"DataSize": "Tamanho dos dados",
+ "DBSize": "Tamanho DB",
"IndexSize": "Tamanho do índice",
"LearnMore": "Para aprender mais sobre como o Piwik processa dados e como optimizar o Piwik para websites de tráfego médio ou elevado, veja a documentação %s.",
"MainDescription": "Piwik está a armazenar todos os seus dados de analíticas da web na base de dados MySQL. Actualmente, tabelas Piwik estão a utilizar %s.",
diff --git a/plugins/DevicePlugins/DevicePlugins.php b/plugins/DevicePlugins/DevicePlugins.php
index 5ddc6d15d3..a41a2aeb9d 100644
--- a/plugins/DevicePlugins/DevicePlugins.php
+++ b/plugins/DevicePlugins/DevicePlugins.php
@@ -25,7 +25,6 @@ class DevicePlugins extends \Piwik\Plugin
return array(
'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations',
'Live.getAllVisitorDetails' => 'extendVisitorDetails',
- 'Request.getRenamedModuleAndAction' => 'renameUserSettingsModuleAndAction',
);
}
@@ -45,11 +44,4 @@ class DevicePlugins extends \Piwik\Plugin
$translations = array_merge($translations, $metrics);
}
-
- public function renameUserSettingsModuleAndAction(&$module, &$action)
- {
- if ($module == 'UserSettings' && $action == 'getPlugin') {
- $module = 'DevicePlugins';
- }
- }
}
diff --git a/plugins/DevicePlugins/tests/System/UserSettingsBCTest.php b/plugins/DevicePlugins/tests/System/UserSettingsBCTest.php
deleted file mode 100644
index 1901960abb..0000000000
--- a/plugins/DevicePlugins/tests/System/UserSettingsBCTest.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-namespace Piwik\Plugins\DevicePlugins\tests\System;
-
-use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
-
-/**
- * @group DevicePlugins
- * @group DevicePlugins_System
- */
-class UserSettingsBCTest extends SystemTestCase
-{
- /**
- * @var OneVisitorTwoVisits
- */
- public static $fixture;
-
- /**
- * @dataProvider getApiForTesting
- */
- public function test_Api($api, $params)
- {
- $this->runApiTests($api, $params);
- }
-
- public function getApiForTesting()
- {
- $idSite = self::$fixture->idSite;
- $dateTime = self::$fixture->dateTime;
-
- $api = array(
- 'UserSettings.getPlugin',
- );
-
- $result = array();
-
-
- foreach ($api as $method) {
- list($module, $action) = explode('.', $method);
-
- // api test (uses hack to test UserSettings which doesn't exist anymore. we say we're testing
- // against DevicePlugins & overwrite the module & action w/ otherRequestParameters)
- $result[] = array('DevicePlugins.getPlugin', array('idSite' => $idSite,
- 'date' => $dateTime,
- 'periods' => array('day'),
- 'testSuffix' => $module . '_' . $method . '_',
- 'otherRequestParameters' => array(
- 'method' => $method,
- ),
- ));
-
- // api metadata tests
- $result[] = array('API.getMetadata', array(
- 'idSite' => $idSite,
- 'date' => $dateTime,
- 'apiModule' => $module,
- 'apiAction' => $action,
- 'testSuffix' => $module . '_' . $method . '_',
- ));
- }
-
- return $result;
- }
-
- public static function getPathToTestDirectory()
- {
- return dirname(__FILE__);
- }
-}
-
-UserSettingsBCTest::$fixture = new OneVisitorTwoVisits(); \ No newline at end of file
diff --git a/plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___API.getMetadata_day.xml b/plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___API.getMetadata_day.xml
deleted file mode 100644
index a1ab29592e..0000000000
--- a/plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___API.getMetadata_day.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Browser Plugins</name>
- <module>DevicePlugins</module>
- <action>getPlugin</action>
- <dimension>Plugin</dimension>
- <documentation>This report shows which browser plugins your visitors had enabled. This information might be important for choosing the right way to deliver your content.</documentation>
- <metrics>
- <nb_visits>Visits</nb_visits>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- </metricsDocumentation>
- <processedMetrics>
- <nb_visits_percentage>% Visits</nb_visits_percentage>
- </processedMetrics>
- <constantRowsCount>1</constantRowsCount>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicePlugins&amp;apiAction=getPlugin&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <uniqueId>DevicePlugins_getPlugin</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___DevicePlugins.getPlugin_day.xml b/plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___DevicePlugins.getPlugin_day.xml
deleted file mode 100644
index 72728977e1..0000000000
--- a/plugins/DevicePlugins/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getPlugin___DevicePlugins.getPlugin_day.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Cookie</label>
- <nb_visits>2</nb_visits>
- <nb_visits_percentage>100%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/cookie.gif</logo>
- </row>
- <row>
- <label>Flash</label>
- <nb_visits>2</nb_visits>
- <nb_visits_percentage>100%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/flash.gif</logo>
- </row>
- <row>
- <label>Java</label>
- <nb_visits>2</nb_visits>
- <nb_visits_percentage>100%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/java.gif</logo>
- </row>
- <row>
- <label>Director</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/director.gif</logo>
- </row>
- <row>
- <label>Gears</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/gears.gif</logo>
- </row>
- <row>
- <label>Pdf</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/pdf.gif</logo>
- </row>
- <row>
- <label>Quicktime</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/quicktime.gif</logo>
- </row>
- <row>
- <label>Realplayer</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/realplayer.gif</logo>
- </row>
- <row>
- <label>Silverlight</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/silverlight.gif</logo>
- </row>
- <row>
- <label>Windowsmedia</label>
- <nb_visits>0</nb_visits>
- <nb_visits_percentage>0%</nb_visits_percentage>
- <logo>plugins/DevicePlugins/images/plugins/windowsmedia.gif</logo>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/DevicesDetection.php b/plugins/DevicesDetection/DevicesDetection.php
index ffebe3b37c..2a3f074017 100644
--- a/plugins/DevicesDetection/DevicesDetection.php
+++ b/plugins/DevicesDetection/DevicesDetection.php
@@ -23,7 +23,6 @@ class DevicesDetection extends \Piwik\Plugin
{
return array(
'Live.getAllVisitorDetails' => 'extendVisitorDetails',
- 'Request.getRenamedModuleAndAction' => 'renameUserSettingsModuleAndAction',
);
}
@@ -48,22 +47,4 @@ class DevicesDetection extends \Piwik\Plugin
$visitor['browserCode'] = $instance->getBrowserCode();
$visitor['browserVersion'] = $instance->getBrowserVersion();
}
-
- public function renameUserSettingsModuleAndAction(&$module, &$action)
- {
- $movedMethods = array(
- 'index' => 'software',
- 'getBrowser' => 'getBrowsers',
- 'getBrowserVersion' => 'getBrowserVersions',
- 'getMobileVsDesktop' => 'getType',
- 'getOS' => 'getOsVersions',
- 'getOSFamily' => 'getOsFamilies',
- 'getBrowserType' => 'getBrowserEngines',
- );
-
- if ($module == 'UserSettings' && array_key_exists($action, $movedMethods)) {
- $module = 'DevicesDetection';
- $action = $movedMethods[$action];
- }
- }
}
diff --git a/plugins/DevicesDetection/images/browsers/SB.gif b/plugins/DevicesDetection/images/browsers/SB.gif
new file mode 100644
index 0000000000..61f13916ec
--- /dev/null
+++ b/plugins/DevicesDetection/images/browsers/SB.gif
Binary files differ
diff --git a/plugins/DevicesDetection/lang/pt.json b/plugins/DevicesDetection/lang/pt.json
index 1883a2d749..ef792eaa4d 100644
--- a/plugins/DevicesDetection/lang/pt.json
+++ b/plugins/DevicesDetection/lang/pt.json
@@ -15,8 +15,12 @@
"dataTableLabelTypes": "Tipo",
"Device": "Dispositivo",
"DeviceBrand": "Marca do equipamento",
+ "DeviceDetection": "Detetação de equipamento",
"DeviceModel": "Modelo do dispositivo",
+ "DevicesDetection": "Equipamento do Visitante",
+ "DeviceType": "Tipo de equipamento",
"OperatingSystems": "Sistemas Operativos",
+ "Devices": "Equipamentos",
"TV": "Tv",
"WidgetBrowsers": "Navegador dos visitantes",
"WidgetBrowsersDocumentation": "Este relatório contém informações sobre o tipo de navegadores os seus visitantes estavam a utilizar. Cada versão do navegador é listada separadamente."
diff --git a/plugins/DevicesDetection/lang/tr.json b/plugins/DevicesDetection/lang/tr.json
index a0940b66d4..b237362065 100644
--- a/plugins/DevicesDetection/lang/tr.json
+++ b/plugins/DevicesDetection/lang/tr.json
@@ -24,12 +24,12 @@
"DeviceModel": "Aygıt modeli",
"DevicesDetection": "Ziyaretçi Aygıtları",
"DeviceType": "Aygıt türü",
- "FeaturePhone": "Özellikli Telefon",
- "OperatingSystemFamilies": "İşletim Sistemi aileleri",
+ "FeaturePhone": "Özellikli telefon",
+ "OperatingSystemFamilies": "İşletim Sistemi Aileleri",
"OperatingSystemFamily": "İşletim Sistemi Ailesi",
"OperatingSystems": "İşletim sistemleri",
"OperatingSystemVersions": "İşletim Sistemi Sürümleri",
- "PluginDescription": "Marka (Üretici), Model (cihaz versiyonu) , cihaz tipi (tv, konsol, akıllı telefon, masaüstü gibi) özellikleri içeren kulanıcı cihazları ile ilgili ek bilgi sunar.",
+ "PluginDescription": "Marka (Üretici), Model (aygıt sürümü), aygıt türü (tv, oyun konsolu, akıllı telefon, masaüstü gibi) özellikleri içeren kullanıcı aygıtları ile ilgili ek bilgileri kapsar.",
"SmartDisplay": "Akıllı Görüntüleyici",
"Smartphone": "Akıllı Telefon",
"PortableMediaPlayer": "Taşınabilir Ortam Oynatıcısı",
@@ -38,7 +38,7 @@
"Phablet": "Phablet",
"TV": "TV",
"UserAgent": "User-Agent",
- "WidgetBrowsers": "Ziyaretçi tarayıcılari",
- "WidgetBrowsersDocumentation": "Bu rapor ziyaretçilerinizin ne tür tarayıcılar kullandığı bilgisini içerir. Her tarayıcı versiyonu ayrı olarak listelenmiştir."
+ "WidgetBrowsers": "Ziyaretçi Tarayıcısı",
+ "WidgetBrowsersDocumentation": "Bu rapor ziyaretçilerinizin kullandığı tarayıcı türlerini kapsar. Tarayıcı sürümleri ayrı ayrı listelenmiştir."
}
} \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/UserSettingsBCTest.php b/plugins/DevicesDetection/tests/System/UserSettingsBCTest.php
deleted file mode 100644
index e86887780d..0000000000
--- a/plugins/DevicesDetection/tests/System/UserSettingsBCTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-namespace Piwik\Plugins\DevicesDetection\tests\System;
-
-use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
-
-/**
- * @group DevicesDetection
- * @group DevicesDetection_System
- */
-class UserSettingsBCTest extends SystemTestCase
-{
- /**
- * @var OneVisitorTwoVisits
- */
- public static $fixture;
-
- /**
- * @dataProvider getApiForTesting
- */
- public function test_Api($api, $params)
- {
- $this->runApiTests($api, $params);
- }
-
- public function getApiForTesting()
- {
- $idSite = self::$fixture->idSite;
- $dateTime = self::$fixture->dateTime;
-
- $api = array(
- 'UserSettings.getBrowser',
- 'UserSettings.getBrowserVersion',
- 'UserSettings.getMobileVsDesktop',
- 'UserSettings.getOS',
- 'UserSettings.getOSFamily',
- 'UserSettings.getBrowserType',
- );
-
- $result = array();
-
-
- foreach ($api as $method) {
- list($module, $action) = explode('.', $method);
-
- // api test (uses hack to test UserSettings which doesn't exist anymore. we say we're testing
- // against DevicesDetection & overwrite the module & action w/ otherRequestParameters)
- $result[] = array('DevicesDetection.getBrowsers', array('idSite' => $idSite,
- 'date' => $dateTime,
- 'periods' => array('day'),
- 'testSuffix' => $module . '_' . $method . '_',
- 'otherRequestParameters' => array(
- 'method' => $method,
- ),
- ));
-
- // api metadata tests
- $result[] = array('API.getMetadata', array(
- 'idSite' => $idSite,
- 'date' => $dateTime,
- 'apiModule' => $module,
- 'apiAction' => $action,
- 'testSuffix' => $module . '_' . $method . '_',
- ));
- }
-
- return $result;
- }
-
- public static function getPathToTestDirectory()
- {
- return dirname(__FILE__);
- }
-}
-
-UserSettingsBCTest::$fixture = new OneVisitorTwoVisits(); \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___API.getMetadata_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___API.getMetadata_day.xml
deleted file mode 100644
index 00bd3aad0a..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___API.getMetadata_day.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Browser engines</name>
- <module>DevicesDetection</module>
- <action>getBrowserEngines</action>
- <dimension>Browser engine</dimension>
- <documentation>This report shows your visitors' browsers broken down into browser engines. &lt;br /&gt; The most important information for web developers is what kind of rendering engine their visitors are using. The labels contain the names of the engines followed by the most common browser using that engine in brackets.</documentation>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getBrowserEngines&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getBrowserEngines&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>DevicesDetection_getBrowserEngines</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___DevicesDetection.getBrowsers_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___DevicesDetection.getBrowsers_day.xml
deleted file mode 100644
index 7e5e262294..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserType___DevicesDetection.getBrowsers_day.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Gecko (Firefox)</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <segment>browserEngine==Gecko</segment>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___API.getMetadata_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___API.getMetadata_day.xml
deleted file mode 100644
index 8c027b0207..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___API.getMetadata_day.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Browser version</name>
- <module>DevicesDetection</module>
- <action>getBrowserVersions</action>
- <dimension>Browser version</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Browsers</name>
- <module>DevicesDetection</module>
- <action>getBrowsers</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getBrowserVersions&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getBrowserVersions&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>DevicesDetection_getBrowserVersions</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___DevicesDetection.getBrowsers_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___DevicesDetection.getBrowsers_day.xml
deleted file mode 100644
index 3c2fe50a07..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowserVersion___DevicesDetection.getBrowsers_day.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Firefox 3.6</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <segment>browserCode==FF;browserVersion==3.6</segment>
- <logo>plugins/DevicesDetection/images/browsers/FF.gif</logo>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___API.getMetadata_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___API.getMetadata_day.xml
deleted file mode 100644
index fa0ddd6acf..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___API.getMetadata_day.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Browsers</name>
- <module>DevicesDetection</module>
- <action>getBrowsers</action>
- <dimension>Browser</dimension>
- <documentation>This report contains information about what kind of browser your visitors were using. Each browser version is listed separately.</documentation>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Browser version</name>
- <module>DevicesDetection</module>
- <action>getBrowserVersions</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getBrowsers&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getBrowsers&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>DevicesDetection_getBrowsers</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___DevicesDetection.getBrowsers_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___DevicesDetection.getBrowsers_day.xml
deleted file mode 100644
index 68128919af..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getBrowser___DevicesDetection.getBrowsers_day.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Firefox</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <logo>plugins/DevicesDetection/images/browsers/FF.gif</logo>
- <segment>browserCode==FF</segment>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___API.getMetadata_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___API.getMetadata_day.xml
deleted file mode 100644
index cf3cc41002..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___API.getMetadata_day.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Devices</subcategory>
- <name>Device type</name>
- <module>DevicesDetection</module>
- <action>getType</action>
- <dimension>Device type</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- </processedMetrics>
- <metricsGoal>
- <nb_conversions>Conversions</nb_conversions>
- <revenue>Revenue</revenue>
- </metricsGoal>
- <processedMetricsGoal>
- <revenue_per_visit>Revenue per Visit</revenue_per_visit>
- </processedMetricsGoal>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getType&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getType&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>DevicesDetection_getType</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___DevicesDetection.getBrowsers_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___DevicesDetection.getBrowsers_day.xml
deleted file mode 100644
index b04af03db4..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getMobileVsDesktop___DevicesDetection.getBrowsers_day.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Desktop</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <goals>
- <row idgoal='2'>
- <nb_conversions>1</nb_conversions>
- <nb_visits_converted>1</nb_visits_converted>
- <revenue>1</revenue>
- </row>
- </goals>
- <nb_conversions>1</nb_conversions>
- <revenue>1</revenue>
- <segment>deviceType==desktop</segment>
- <logo>plugins/DevicesDetection/images/screens/normal.gif</logo>
- </row>
- <row>
- <label>Camera</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==camera</segment>
- <logo>plugins/DevicesDetection/images/screens/camera.png</logo>
- </row>
- <row>
- <label>Car browser</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==car+browser</segment>
- <logo>plugins/DevicesDetection/images/screens/carbrowser.png</logo>
- </row>
- <row>
- <label>Console</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==console</segment>
- <logo>plugins/DevicesDetection/images/screens/console.gif</logo>
- </row>
- <row>
- <label>Feature phone</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==feature+phone</segment>
- <logo>plugins/DevicesDetection/images/screens/mobile.gif</logo>
- </row>
- <row>
- <label>Phablet</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==phablet</segment>
- <logo>plugins/DevicesDetection/images/screens/unknown.gif</logo>
- </row>
- <row>
- <label>Portable media player</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==portable+media+player</segment>
- <logo>plugins/DevicesDetection/images/screens/unknown.gif</logo>
- </row>
- <row>
- <label>Smart display</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==smart+display</segment>
- <logo>plugins/DevicesDetection/images/screens/unknown.gif</logo>
- </row>
- <row>
- <label>Smartphone</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==smartphone</segment>
- <logo>plugins/DevicesDetection/images/screens/smartphone.png</logo>
- </row>
- <row>
- <label>Tablet</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==tablet</segment>
- <logo>plugins/DevicesDetection/images/screens/tablet.png</logo>
- </row>
- <row>
- <label>Tv</label>
- <nb_visits>0</nb_visits>
- <segment>deviceType==tv</segment>
- <logo>plugins/DevicesDetection/images/screens/tv.png</logo>
- </row>
- <row>
- <label>Unknown</label>
- <goals>
- <row idgoal='1'>
- <nb_conversions>1</nb_conversions>
- <nb_visits_converted>1</nb_visits_converted>
- <revenue>42</revenue>
- </row>
- </goals>
- <nb_conversions>1</nb_conversions>
- <revenue>42</revenue>
- <nb_visits>0</nb_visits>
- <logo>plugins/DevicesDetection/images/screens/unknown.gif</logo>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___API.getMetadata_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___API.getMetadata_day.xml
deleted file mode 100644
index ac3c2586dc..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___API.getMetadata_day.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Operating System families</name>
- <module>DevicesDetection</module>
- <action>getOsFamilies</action>
- <dimension>Operating system family</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Operating System versions</name>
- <module>DevicesDetection</module>
- <action>getOsVersions</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getOsFamilies&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getOsFamilies&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>DevicesDetection_getOsFamilies</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___DevicesDetection.getBrowsers_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___DevicesDetection.getBrowsers_day.xml
deleted file mode 100644
index 1883e1f03e..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOSFamily___DevicesDetection.getBrowsers_day.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Windows</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <logo>plugins/DevicesDetection/images/os/WIN.gif</logo>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___API.getMetadata_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___API.getMetadata_day.xml
deleted file mode 100644
index 957d9b88cc..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___API.getMetadata_day.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Operating System versions</name>
- <module>DevicesDetection</module>
- <action>getOsVersions</action>
- <dimension>Operating System versions</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Operating System families</name>
- <module>DevicesDetection</module>
- <action>getOsFamilies</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getOsVersions&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=DevicesDetection&amp;apiAction=getOsVersions&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>DevicesDetection_getOsVersions</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___DevicesDetection.getBrowsers_day.xml b/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___DevicesDetection.getBrowsers_day.xml
deleted file mode 100644
index ee964d53f1..0000000000
--- a/plugins/DevicesDetection/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getOS___DevicesDetection.getBrowsers_day.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Windows XP</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <segment>operatingSystemCode==WIN;operatingSystemVersion==XP</segment>
- <logo>plugins/DevicesDetection/images/os/WIN.gif</logo>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/Events/Actions/ActionEvent.php b/plugins/Events/Actions/ActionEvent.php
index 5106ec6092..83af0d7ad1 100644
--- a/plugins/Events/Actions/ActionEvent.php
+++ b/plugins/Events/Actions/ActionEvent.php
@@ -73,18 +73,6 @@ class ActionEvent extends Action
return array('idaction_url' => $actionUrl);
}
- // Do not track this Event URL as Entry/Exit Page URL (leave the existing entry/exit)
- public function getIdActionUrlForEntryAndExitIds()
- {
- return false;
- }
-
- // Do not track this Event Name as Entry/Exit Page Title (leave the existing entry/exit)
- public function getIdActionNameForEntryAndExitIds()
- {
- return false;
- }
-
public function writeDebugInfo()
{
$write = parent::writeDebugInfo();
diff --git a/plugins/Events/Reports/Base.php b/plugins/Events/Reports/Base.php
index a43ba0dbfa..005e1dda5a 100644
--- a/plugins/Events/Reports/Base.php
+++ b/plugins/Events/Reports/Base.php
@@ -8,6 +8,8 @@
*/
namespace Piwik\Plugins\Events\Reports;
+use Piwik\EventDispatcher;
+use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Events\API;
use Piwik\Plugins\Events\Columns\Metrics\AverageEventValue;
use Piwik\Report\ReportWidgetFactory;
@@ -36,5 +38,22 @@ abstract class Base extends \Piwik\Plugin\Report
}
}
+ public function configureView(ViewDataTable $view)
+ {
+ $this->configureFooterMessage($view);
+ }
+
+ protected function configureFooterMessage(ViewDataTable $view)
+ {
+ if ($this->isSubtableReport) {
+ // no footer message for subtables
+ return;
+ }
+
+ $out = '';
+ EventDispatcher::getInstance()->postEvent('Template.afterEventsReport', array(&$out));
+ $view->config->show_footer_message = $out;
+ }
+
}
diff --git a/plugins/ExamplePlugin/plugin.json b/plugins/ExamplePlugin/plugin.json
index c784750dec..a6cb365d6d 100644
--- a/plugins/ExamplePlugin/plugin.json
+++ b/plugins/ExamplePlugin/plugin.json
@@ -1,7 +1,7 @@
{
"name": "ExamplePlugin",
- "version": "0.1.0",
"description": "Piwik Platform showcase: how to create widgets, menus, scheduled tasks, a custom archiver, plugin tests, and a AngularJS component.",
+ "version": "0.1.0",
"theme": false,
"require": {
"piwik": ">=3.0.0-b1,<4.0.0-b1"
diff --git a/plugins/ExamplePlugin/tests/System/expected/test___API.get_day.xml b/plugins/ExamplePlugin/tests/System/expected/test___API.get_day.xml
index 0cbc594646..213b91b66a 100644
--- a/plugins/ExamplePlugin/tests/System/expected/test___API.get_day.xml
+++ b/plugins/ExamplePlugin/tests/System/expected/test___API.get_day.xml
@@ -27,6 +27,9 @@
<nb_visits_converted_returning_visit>0</nb_visits_converted_returning_visit>
<revenue_returning_visit>0</revenue_returning_visit>
<conversion_rate_returning_visit>0%</conversion_rate_returning_visit>
+ <nb_total_overall_bandwidth>0</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>0</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>0</nb_total_download_bandwidth>
<nb_pageviews>3</nb_pageviews>
<nb_uniq_pageviews>3</nb_uniq_pageviews>
<nb_downloads>0</nb_downloads>
diff --git a/plugins/ExampleTheme/plugin.json b/plugins/ExampleTheme/plugin.json
index 6e99da3910..972af7f443 100644
--- a/plugins/ExampleTheme/plugin.json
+++ b/plugins/ExampleTheme/plugin.json
@@ -27,4 +27,4 @@
"homepage": ""
}
]
-}
+} \ No newline at end of file
diff --git a/plugins/Feedback/lang/nb.json b/plugins/Feedback/lang/nb.json
index ff89e44d03..e23641925b 100644
--- a/plugins/Feedback/lang/nb.json
+++ b/plugins/Feedback/lang/nb.json
@@ -1,6 +1,7 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Har du en feil å rapportere eller ny funksjonalitet du ønsker deg?",
+ "HowToCreateTicket": "Vennligst les anbefalingene for å skrive gode %1$sbug-rapporter%2$s eller %3$sfunksjonalitetsønsker%4$s. Så registrerer du deg eller logger inn i %5$svår issue tracker%6$s og klikker på %7$snew issue%8$s.",
"IWantTo": "Jeg vil:",
"LearnWaysToParticipate": "Lær om alle måtene du kan %1$s bidra%2$s",
"ManuallySendEmailTo": "Send meldingen manuelt til",
diff --git a/plugins/Feedback/templates/index.twig b/plugins/Feedback/templates/index.twig
index f3c36bc06e..274b136cd9 100644
--- a/plugins/Feedback/templates/index.twig
+++ b/plugins/Feedback/templates/index.twig
@@ -42,7 +42,7 @@
<p> &bull; {{ 'Feedback_ProfessionalServicesOptimizationMaintenance'|translate }}</p>
<p> &bull; {{ 'Feedback_ProfessionalServicesPhoneEmailSupport'|translate }}</p>
<p> &bull; {{ 'Feedback_ProfessionalServicesTraining'|translate }}</p>
- <p> &bull; {{ 'Feedback_ProfessionalServicesPremiumFeatures'|translate }}</p>
+ <p> &bull; <a rel='noreferrer' target='_blank' href='https://piwik.org/recommends/premium-plugins'>{{ 'Feedback_ProfessionalServicesPremiumFeatures'|translate }}</a></p>
<p> &bull; {{ 'Feedback_ProfessionalServicesCustomDevelopment'|translate }}</p>
<p> &bull; {{ 'Feedback_ProfessionalServicesAnalystConsulting'|translate }}</p>
@@ -55,6 +55,18 @@
</form>
</div>
+ <div piwik-content-block content-title="Premium products">
+ <p>Grow your business, understand your audience better and increase your sales and conversions with a premium plugin for Piwik:
+ <p> &bull; <a rel='noreferrer' target='_blank' href='https://piwik.org/recommends/ab-testing-learn-more/'>A/B Testing Platform for Piwik Analytics</a>.
+ </p>
+ <p> &bull; <a rel='noreferrer' target='_blank' href='https://piwik.org/recommends/media-analytics-website/'>Powerful Video Analytics and Audio Analytics</a>.
+ </p>
+ <p> &bull; <a rel='noreferrer' target='_blank' href='https://piwik.org/recommends/activity-log/'>Audit log of user activities happening in your Piwik</a>.
+ </p>
+ <p> &bull; <strong><a rel='noreferrer' target='_blank' href='https://piwik.org/recommends/premium-plugins'>All premium plugins.</a></strong>
+ </p>
+ </div>
+
<div piwik-content-block content-title="{{ 'Feedback_DoYouHaveBugReportOrFeatureRequest'|translate|e('html_attr') }}">
<p>{{ 'Feedback_HowToCreateTicket'|translate(
"<a target='_blank' href='?module=Proxy&action=redirect&url=http://developer.piwik.org/guides/core-team-workflow%23submitting-a-bug-report'>",
diff --git a/plugins/Goals/lang/cs.json b/plugins/Goals/lang/cs.json
index 026a7394fd..b6f016131f 100644
--- a/plugins/Goals/lang/cs.json
+++ b/plugins/Goals/lang/cs.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Uživatelský atribut",
"CategoryTextDevicesDetection_DevicesDetection": "Zařízení",
"CategoryTextGeneral_Visit": "Zapojení",
- "ChooseGoal": "Vyberte cíl",
"ClickOutlink": "Kliknou na odkaz na externí web",
"SendEvent": "Odešlou událost",
"ColumnAverageOrderRevenueDocumentation": "Průměrná hodnota objednávky (AOV) je celkový příjem ze všech objednávek dělený jejich počtem.",
diff --git a/plugins/Goals/lang/da.json b/plugins/Goals/lang/da.json
index 6bfc103887..945e422673 100644
--- a/plugins/Goals/lang/da.json
+++ b/plugins/Goals/lang/da.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Bruger attribute",
"CategoryTextDevicesDetection_DevicesDetection": "Enheder",
"CategoryTextGeneral_Visit": "engagement",
- "ChooseGoal": "Vælg mål",
"ClickOutlink": "Klik på et link til en ekstern hjemmeside",
"SendEvent": "Send en hændelse",
"ColumnAverageOrderRevenueDocumentation": "Gennemsnitlig ordreværdi (GOV) er den samlede indtjening fra alle e-handel ordrer divideret med antallet af ordrer.",
diff --git a/plugins/Goals/lang/el.json b/plugins/Goals/lang/el.json
index 85ab9eb14d..bbab56373f 100644
--- a/plugins/Goals/lang/el.json
+++ b/plugins/Goals/lang/el.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Χαρακτηριστικό χρήστη",
"CategoryTextDevicesDetection_DevicesDetection": "Συσκευές",
"CategoryTextGeneral_Visit": "δέσμευση",
- "ChooseGoal": "Επιλέξτε Στόχο",
"ClickOutlink": "Το πάτημα Συνδέσμου προς εξωτερική ιστοσελίδα",
"SendEvent": "Αποστολή συμβάντος",
"ColumnAverageOrderRevenueDocumentation": "Μέση Τιμή Παραγγελίας (ΜΤΠ) είναι η συνολική πρόσοδος από όλες τις Ηλεκτρονικές Παραγγελίες διαιρεμένη με τον αριθμό των παραγγελιών.",
diff --git a/plugins/Goals/lang/es.json b/plugins/Goals/lang/es.json
index b89f5d8f90..df39949d25 100644
--- a/plugins/Goals/lang/es.json
+++ b/plugins/Goals/lang/es.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Atributo del usuario",
"CategoryTextDevicesDetection_DevicesDetection": "Dispositivos",
"CategoryTextGeneral_Visit": "compromiso",
- "ChooseGoal": "Elegir objetivo",
"ClickOutlink": "Clic en un enlace a un sitio de internet externo",
"SendEvent": "Enviar un evento",
"ColumnAverageOrderRevenueDocumentation": "Valor Medio del Pedido (VMP) es el valor obtenido dividiendo los ingresos totales de todos los pedidos entre el número de pedidos.",
diff --git a/plugins/Goals/lang/et.json b/plugins/Goals/lang/et.json
index b24eff554c..cf8d0cdffa 100644
--- a/plugins/Goals/lang/et.json
+++ b/plugins/Goals/lang/et.json
@@ -10,7 +10,6 @@
"BestKeywords": "Sinu parimad tulutoovad märksõnad on:",
"BestReferrers": "Sinu parimad tulutoovad veebilehtede suunajad on:",
"CaseSensitive": "Tähtede tõusutundlik võrdlus",
- "ChooseGoal": "Vali eesmärk",
"ClickOutlink": "Klikivad välise lehe lingile",
"ColumnConversions": "Tulu tekitamised",
"ColumnVisits": "Külastuste koguarv, hoolimata sellest, kas eesmärgini jõuti või ei.",
diff --git a/plugins/Goals/lang/fi.json b/plugins/Goals/lang/fi.json
index c112451090..c90c02f06a 100644
--- a/plugins/Goals/lang/fi.json
+++ b/plugins/Goals/lang/fi.json
@@ -10,7 +10,6 @@
"BestKeywords": "Parhaat hakusanat ovat:",
"BestReferrers": "Parhaat verkkosivuviittaajat ovat:",
"CaseSensitive": "Kokoherkkä",
- "ChooseGoal": "Valitse tavoite",
"ClickOutlink": "Ulos lähtevän linkin painaminen",
"SendEvent": "Lähetä tapahtuma",
"ColumnAverageOrderRevenueDocumentation": "Keskimääräinen tilauksen arvo (AOV) on tilausten arvon summa jaettuna tilausten lukumäärällä.",
diff --git a/plugins/Goals/lang/fr.json b/plugins/Goals/lang/fr.json
index e1bc0145bc..450e986993 100644
--- a/plugins/Goals/lang/fr.json
+++ b/plugins/Goals/lang/fr.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Attribut de l'utilisateur",
"CategoryTextDevicesDetection_DevicesDetection": "Périphériques",
"CategoryTextGeneral_Visit": "engagement",
- "ChooseGoal": "Choisir un objectif",
"ClickOutlink": "Cliquent sur un lien vers un site externe",
"SendEvent": "Envoient un évènement",
"ColumnAverageOrderRevenueDocumentation": "Les recettes moyennes par commande représentent les recettes totales des commandes E-commerce divisées par le nombre de commandes.",
diff --git a/plugins/Goals/lang/hi.json b/plugins/Goals/lang/hi.json
index c096b8d6b8..dbd424e162 100644
--- a/plugins/Goals/lang/hi.json
+++ b/plugins/Goals/lang/hi.json
@@ -14,7 +14,6 @@
"CategoryTextReferrers_Referrers": "सन्दर्भदाता",
"CategoryTextVisitsSummary_VisitsSummary": "उपयोगकर्ता विशेषता",
"CategoryTextGeneral_Visit": "नियम",
- "ChooseGoal": "लक्ष्य चुनें",
"ClickOutlink": "एक बाहरी वेबसाइट के लिए एक लिंक पर क्लिक करें",
"SendEvent": "एक घटना भेजें",
"ColumnAverageOrderRevenueDocumentation": "औसत ऑर्डर मूल्य (AOV) आदेश की संख्या से विभाजित सभी ईकॉमर्स आदेश से कुल राजस्व है.",
diff --git a/plugins/Goals/lang/it.json b/plugins/Goals/lang/it.json
index def1f9ea93..a9237185cd 100644
--- a/plugins/Goals/lang/it.json
+++ b/plugins/Goals/lang/it.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Attributo utente",
"CategoryTextDevicesDetection_DevicesDetection": "Dispositivi",
"CategoryTextGeneral_Visit": "impegno",
- "ChooseGoal": "Scegli Goal",
"ClickOutlink": "Click su un Link a un sito esterno",
"SendEvent": "Invia un evento",
"ColumnAverageOrderRevenueDocumentation": "Il valore medio ordini (Average Order Value, AOV) è il ricavo totale di tutti gli ordini Ecommerce diviso per il numero di ordini.",
diff --git a/plugins/Goals/lang/ja.json b/plugins/Goals/lang/ja.json
index 4da8548247..d71d18306e 100644
--- a/plugins/Goals/lang/ja.json
+++ b/plugins/Goals/lang/ja.json
@@ -15,7 +15,6 @@
"CategoryTextReferrers_Referrers": "リファラー",
"CategoryTextVisitsSummary_VisitsSummary": "ユーザー属性",
"CategoryTextGeneral_Visit": "エンゲージメント",
- "ChooseGoal": "Choose Goal",
"ClickOutlink": "外部ウェブサイトへのリンクをクリック",
"SendEvent": "イベントを送信",
"ColumnAverageOrderRevenueDocumentation": "平均注文値(AOV)は、全てのeコマース注文の総収益を注文数で割ったものです。",
diff --git a/plugins/Goals/lang/ko.json b/plugins/Goals/lang/ko.json
index b4bfa79114..0f79a2fac9 100644
--- a/plugins/Goals/lang/ko.json
+++ b/plugins/Goals/lang/ko.json
@@ -15,7 +15,6 @@
"CategoryTextReferrers_Referrers": "리퍼러",
"CategoryTextVisitsSummary_VisitsSummary": "사용자 속성",
"CategoryTextGeneral_Visit": "약속",
- "ChooseGoal": "목표 선택",
"ClickOutlink": "외부 웹사이트에 대한 링크 클릭",
"SendEvent": "이벤트 보내기",
"ColumnAverageOrderRevenueDocumentation": "평균 주문액 (AOV)은 모든 전자상 거래 주문의 총수익을 주문수로 나눈 것입니다.",
diff --git a/plugins/Goals/lang/nb.json b/plugins/Goals/lang/nb.json
index 31d852d8b8..a114b698da 100644
--- a/plugins/Goals/lang/nb.json
+++ b/plugins/Goals/lang/nb.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Brukerattributt",
"CategoryTextDevicesDetection_DevicesDetection": "Enheter",
"CategoryTextGeneral_Visit": "engasjement",
- "ChooseGoal": "Velg mål",
"ClickOutlink": "Klikk på en lenke til et eksternt nettsted",
"SendEvent": "Send en hendelse",
"ColumnAverageOrderRevenueDocumentation": "Gjennomsnittlig bestillingsverdi (AOV) er den totale omsetningen fra alle Ecommerce-bestillinger delt på antallet bestillinger.",
@@ -30,11 +29,19 @@
"ColumnPurchasedProductsDocumentation": "Antallet kjøpte produkter er summen av produktvolumene som er solgt alle Ecommerce-bestillinger.",
"ColumnQuantityDocumentation": "Mengden er det totale antallet produkter som er solgt for hver %s.",
"ColumnRevenueDocumentation": "De totale inntektene som er generert av %s.",
+ "ColumnRevenuePerVisitDocumentation": "Total inntjening generert av %s delt på antall besøk.",
+ "ColumnVisits": "Totalt antall besøk, uavhengig av om mål ble utløst eller ikke.",
+ "ColumnVisitsProductDocumentation": "Antallet besøk på produkt-\/kategori-siden. Dette brukes også for å beregne konverteringsraten for %s. Dette måltallet er i rapporten hvis sporing av e-handel ble satt opp på produkt-\/kategori-sider.",
"Contains": "inneholder %s",
"ConversionRate": "%s konverteringsrate",
"Conversions": "%s konverteringer",
+ "ConversionsDescription": "konverteringer",
+ "ConversionsOverview": "Oversikt over konverteringer",
+ "ConversionsOverviewBy": "Konverteringsoversikt etter besøkstype",
"DaysToConv": "Dager til konvertering",
"Details": "Måldetaljer",
+ "DefaultGoalConvertedOncePerVisit": "(standard) Mål kan kun konverteres én gang per besøk",
+ "DefaultRevenue": "Standardinntekt for mål er",
"DeleteGoalConfirm": "Er du sikker på at du vil slette målet %s?",
"DocumentationRevenueGeneratedByProductSales": "Produktsalg. Ekskluderer skatt, frakt og rabatt",
"Download": "Last ned en fil",
diff --git a/plugins/Goals/lang/nl.json b/plugins/Goals/lang/nl.json
index cb20fa7f4e..9f0dbea476 100644
--- a/plugins/Goals/lang/nl.json
+++ b/plugins/Goals/lang/nl.json
@@ -15,7 +15,6 @@
"CategoryTextReferrers_Referrers": "Herkomst",
"CategoryTextVisitsSummary_VisitsSummary": "Gebruikers eigenschap",
"CategoryTextGeneral_Visit": "engagement",
- "ChooseGoal": "Kies het doel",
"ClickOutlink": "Klik op een link naar een externe website",
"SendEvent": "Stuur een gebeurtenis",
"ColumnAverageOrderRevenueDocumentation": "Gemiddelde orderwaarde (AOV) zijnde de totale inkomsten van alle Ecommerce orders, gedeeld door het aantal orders.",
diff --git a/plugins/Goals/lang/pl.json b/plugins/Goals/lang/pl.json
index 369720adc2..5d8c876cb8 100644
--- a/plugins/Goals/lang/pl.json
+++ b/plugins/Goals/lang/pl.json
@@ -10,7 +10,6 @@
"BestKeywords": "Pochodzenie najlepszych słów kluczowych:",
"BestReferrers": "Pochodzenie najlepszych serwisów internetowych jako odsyłających do nas:",
"CaseSensitive": "dopasowanie czułości",
- "ChooseGoal": "Wybierz cel",
"ClickOutlink": "kliknij na link do zewnętrznej strony",
"SendEvent": "Wyślij zdarzenie",
"ColumnAveragePriceDocumentation": "Średni dochód dla tego %s.",
diff --git a/plugins/Goals/lang/pt-br.json b/plugins/Goals/lang/pt-br.json
index 5a3125584f..275ed25d8d 100644
--- a/plugins/Goals/lang/pt-br.json
+++ b/plugins/Goals/lang/pt-br.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Característica do usuário",
"CategoryTextDevicesDetection_DevicesDetection": "Dispositivos",
"CategoryTextGeneral_Visit": "envolvimento",
- "ChooseGoal": "Escolha Objetivo",
"ClickOutlink": "Clique num link para um website externo",
"SendEvent": "Enviar um evento",
"ColumnAverageOrderRevenueDocumentation": "Valor médio do pedido (VMP) é a receita total de todas as Ordens de comércio eletrônico dividido pelo número de pedidos.",
diff --git a/plugins/Goals/lang/pt.json b/plugins/Goals/lang/pt.json
index e723e5308e..09371cd731 100644
--- a/plugins/Goals/lang/pt.json
+++ b/plugins/Goals/lang/pt.json
@@ -10,6 +10,7 @@
"BestKeywords": "As suas melhores palavras-passe de conversões são:",
"BestReferrers": "Os meus melhores websites referentes de conversões são:",
"CaseSensitive": "Correspondência sensível a maiúsculas",
+ "CategoryTextDevicesDetection_DevicesDetection": "Equipamentos",
"ClickOutlink": "Clicar num Link para um website externo",
"ColumnAverageOrderRevenueDocumentation": "Valor Média de Ordens é o total de receitas de todas as Ordens de Comércio Electrónico dividido pelo número de ordens.",
"ColumnAveragePriceDocumentation": "As receitas médias para este %s.",
diff --git a/plugins/Goals/lang/ru.json b/plugins/Goals/lang/ru.json
index a0d224db4d..1be3af16ea 100644
--- a/plugins/Goals/lang/ru.json
+++ b/plugins/Goals/lang/ru.json
@@ -15,7 +15,6 @@
"CategoryTextReferrers_Referrers": "Источники",
"CategoryTextVisitsSummary_VisitsSummary": "Свойство пользователя",
"CategoryTextGeneral_Visit": "Вовлеченность",
- "ChooseGoal": "Выберите цель",
"ClickOutlink": "Переходят по ссылке на внешний сайт",
"SendEvent": "Отправляют событие",
"ColumnAverageOrderRevenueDocumentation": "Средняя цена за заказ – общая прибыль за все эл. заказы, разделенная на число заказов.",
diff --git a/plugins/Goals/lang/sq.json b/plugins/Goals/lang/sq.json
index c2e872a6ef..8d0b3ddba3 100644
--- a/plugins/Goals/lang/sq.json
+++ b/plugins/Goals/lang/sq.json
@@ -16,7 +16,6 @@
"CategoryTextVisitsSummary_VisitsSummary": "Atribut përdoruesi",
"CategoryTextDevicesDetection_DevicesDetection": "Pajisje",
"CategoryTextGeneral_Visit": "angazhim",
- "ChooseGoal": "Zgjidhni Objektiv",
"ClickOutlink": "Klikon mbi një Lidhje për te një sajt i jashtëm",
"SendEvent": "Dërgoni një akt",
"ColumnAverageOrderRevenueDocumentation": "Vlera Mesatare për Porosi (VMP) është shifra e marrë nga pjesëtimi i të ardhurave gjithsej nga krejt Porositë E-tregti me numrin e porosive.",
diff --git a/plugins/Goals/lang/sv.json b/plugins/Goals/lang/sv.json
index 2ff331c67e..d5b5c9b251 100644
--- a/plugins/Goals/lang/sv.json
+++ b/plugins/Goals/lang/sv.json
@@ -15,7 +15,6 @@
"CategoryTextReferrers_Referrers": "hänvisningar",
"CategoryTextVisitsSummary_VisitsSummary": "användarinformation",
"CategoryTextGeneral_Visit": "engagemang",
- "ChooseGoal": "Välj mål",
"ClickOutlink": "klickar på en länk till en extern webbplats",
"SendEvent": "triggar en händelse",
"ColumnAverageOrderRevenueDocumentation": "Genomsnittligt ordervärde (AOV) är de totala intäkterna från alla E-handelsordrar dividerat med antalet ordrar.",
diff --git a/plugins/Goals/lang/ta.json b/plugins/Goals/lang/ta.json
index d839b81d38..80da418f5f 100644
--- a/plugins/Goals/lang/ta.json
+++ b/plugins/Goals/lang/ta.json
@@ -3,7 +3,6 @@
"AddGoal": "இலக்கை இணைக்க",
"AddNewGoal": "புதிய இலக்கை இணைத்திடுங்கள்",
"CategoryTextGeneral_Visitors": "பயனர் இடம்",
- "ChooseGoal": "இலக்கைத் தேர்ந்தெடுங்கள்",
"Details": "இலக்கு விவரங்கள்",
"DeleteGoalConfirm": "%s இலக்கை நீக்குவதில் நீங்கள் உறுதியாக இருக்கிறீர்களா?",
"Download": "ஒரு கோப்பை தரவிறக்கம் செய்",
diff --git a/plugins/Goals/lang/tr.json b/plugins/Goals/lang/tr.json
index 9d4a29bc78..f472186a4d 100644
--- a/plugins/Goals/lang/tr.json
+++ b/plugins/Goals/lang/tr.json
@@ -12,7 +12,6 @@
"CaseSensitive": "Büyük-küçük harf duyarlı eşleşme",
"CancelAndReturnToGoals": "Vazgeç ve %1$shedefler listesine geri dön%2$s",
"CategoryTextDevicesDetection_DevicesDetection": "Aygıtlar",
- "ChooseGoal": "Hedef Seç",
"ClickOutlink": "Harici bir web sayfasına olan Bağlantıya tıklayın",
"SendEvent": "Etkinlik gönder",
"ColumnAverageOrderRevenueDocumentation": "Ortalama Sipariş Değeri (OSD) tüm E-ticaret Siparişlerinden elde edilen toplam kazancın sipariş sayısına oranıdır.",
diff --git a/plugins/Goals/lang/uk.json b/plugins/Goals/lang/uk.json
index 21f866b7f1..146bdc94aa 100644
--- a/plugins/Goals/lang/uk.json
+++ b/plugins/Goals/lang/uk.json
@@ -14,8 +14,8 @@
"CategoryTextGeneral_Visitors": "Місцезнаходження користувача",
"CategoryTextReferrers_Referrers": "Джерела",
"CategoryTextVisitsSummary_VisitsSummary": "Властивість користувача",
+ "CategoryTextDevicesDetection_DevicesDetection": "Пристрої",
"CategoryTextGeneral_Visit": "Залученість",
- "ChooseGoal": "Виберіть ціль",
"ClickOutlink": "Переходять по посиланню на зовнішній сайт",
"SendEvent": "Відправляють подію",
"ColumnAverageOrderRevenueDocumentation": "Середня ціна за замовлення - загальний прибуток за усі електронні замовлення, розділені на число замовлень.",
@@ -36,6 +36,7 @@
"ConversionByTypeReportDocumentation": "Цей звіт містить детальну інформацію про цілі (конверсія, відсоток конверсії і прибуток за відвідування) по кожній доступній в лівій панелі категорії. %1$s Будь ласка, клікніть на одну з категорій, щоб побачити детальний звіт. %2$s Більше інформації у %3$sВідстеження цілей на piwik.org%4$s",
"ConversionRate": "%s коефіцієнт конверсій",
"Conversions": "%s конверсій",
+ "ConversionsDescription": "конверсії",
"ConversionsOverview": "Огляд переходів",
"ConversionsOverviewBy": "Огляд конверсій за типами відвідування",
"DaysToConv": "Конверсія по днях",
@@ -79,6 +80,8 @@
"NoConversionsNoReportsMessage": "Звіти не показані, тому що дані перетворення для обраних цілей і періоду відсутні.",
"NeedAccess": "Тільки Адміністратор або користувач з доступом Суперкористувача може управляти цілями для даного сайту.",
"Optional": "(необов'язково)",
+ "OverallConversionRate": "загальний коефіцієнт конверсії (відвідування з завершеними цілями)",
+ "OverallRevenue": "загальний прибуток",
"PageTitle": "Заголовок сторінки",
"Pattern": "Шаблон",
"PluginDescription": "Створіть Цілі і дивіться детальні звіти про цільові конверсії: зміна за часом, дохід від візиту, конверсії з посилання, з ключового слова та ін.",
@@ -99,6 +102,7 @@
"VisitUrl": "Відвідують даний URL (сторінку або групу сторінок)",
"WhenVisitors": "відвідувачі",
"WhereThe": "де",
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "Завантажена сторінка повинна містити виклик до JavaScript 'trackGoal' метод (%1$slearn more%2$s)",
"YouCanEnableEcommerceReports": "Ви можете активувати %1$s для цього сайту на сторінці %2$s."
}
} \ No newline at end of file
diff --git a/plugins/Goals/templates/_formAddGoal.twig b/plugins/Goals/templates/_formAddGoal.twig
index b027622af8..6b72514f34 100644
--- a/plugins/Goals/templates/_formAddGoal.twig
+++ b/plugins/Goals/templates/_formAddGoal.twig
@@ -10,11 +10,13 @@
<div piwik-form>
<div piwik-field uicontrol="text" name="goal_name"
ng-model="manageGoals.goal.name"
+ maxlength="50"
title="{{ 'Goals_GoalName'|translate|e('html_attr') }}">
</div>
<div piwik-field uicontrol="text" name="goal_description"
ng-model="manageGoals.goal.description"
+ maxlength="255"
title="{{ 'General_Description'|translate|e('html_attr') }}">
</div>
@@ -85,6 +87,7 @@
<div class="col s12 m6 l4">
<div piwik-field uicontrol="text" name="pattern"
ng-model="manageGoals.goal.pattern"
+ maxlength="255"
title="{{ 'Goals_Pattern'|translate|e('html_attr') }}"
full-width="true">
</div>
diff --git a/plugins/Goals/templates/conversionOverview.twig b/plugins/Goals/templates/conversionOverview.twig
index 64f7512600..b3dd870db3 100644
--- a/plugins/Goals/templates/conversionOverview.twig
+++ b/plugins/Goals/templates/conversionOverview.twig
@@ -18,5 +18,7 @@
<a href="javascript:;" class="segmentedlog" onclick="SegmentedVisitorLog.show('Goals.getMetrics', 'visitConvertedGoalId=={{ idGoal }}', {})">
{{ 'Live_RowActionTooltipWithDimension'|translate('General_Goal'|translate) }}
</a>
+{{ postEvent("Template.afterGoalConversionOverviewReport") }}
<br style="clear:left"/>
+
</div> \ No newline at end of file
diff --git a/plugins/Installation/View.php b/plugins/Installation/View.php
index 82d24beb71..24db423dc7 100644
--- a/plugins/Installation/View.php
+++ b/plugins/Installation/View.php
@@ -7,6 +7,7 @@
*
*/
namespace Piwik\Plugins\Installation;
+use Piwik\Version;
/**
*
@@ -45,6 +46,8 @@ class View extends \Piwik\View
$this->previousPreviousModuleName = $this->steps[$this->currentStepId - 2];
}
+ $this->piwikVersion = Version::VERSION;
+
return parent::render();
}
}
diff --git a/plugins/Installation/lang/id.json b/plugins/Installation/lang/id.json
index 2a750834e7..22dbaf79cc 100644
--- a/plugins/Installation/lang/id.json
+++ b/plugins/Installation/lang/id.json
@@ -1,5 +1,6 @@
{
"Installation": {
+ "CollaborativeProject": "Piwik merupakan proyek kolaborasi yang dibangun dengan cinta oleh orang-orang di seluruh dunia.",
"ConfigurationHelp": "Tampaknya berkas konfigurasi Piwik Anda terdapat kesalahan. Anda dapat menghapus config\/config.ini.php dan melanjutkan instalasi, atau memperbaiki pengaturan sambungan basisdata.",
"ConfirmDeleteExistingTables": "Apakan Anda yakin menghapus tabel: %s dari basisdata Anda? PERINGATAN: DATA DALAM TABEL TERSEBUT TAK DAPAT DIKEMBALIKAN!",
"Congratulations": "Selesai",
@@ -14,12 +15,17 @@
"DatabaseSetupLogin": "masuk-log",
"DatabaseSetupServer": "peladen basisdata",
"DatabaseSetupTablePrefix": "awalan tabel",
+ "Email": "Surel",
"Extension": "ekstensi",
"Filesystem": "Sistem Berkas",
+ "GetInvolved": "Bila Anda menyukai apa yang Anda lihat, Anda dapat juga %1$sterlibat%2$s.",
"GoBackAndDefinePrefix": "Kembali dan tetapkan kode awalan untuk tabel Piwik",
+ "HappyAnalysing": "Selamat menganalisiis!",
"Installation": "Instalasi",
"InstallationStatus": "Status Instalasi",
"InsufficientPrivilegesHelp": "Anda dapat menambah hak akses tersrbut menggunakan perangkat seperti phpMyAdmin atau mengeksekusi kueri SQL yang sesuai. Apabila Anda tak mengetahui bagaimana melakukannya, harap bertanya kepada pengurus sistem Anda untuk memperoleh hak tersebut.",
+ "InsufficientPrivilegesMain": "Basisdata tidak ada (dan tidak dapat dibuat), atau Pengguna tersebut tidak memiliki perizinan yang memadai. Pengguna basisdata harus memiliki perizinan sebagai berikut: %s",
+ "InvalidStateError": "Galat: Piwik telah terpasang sebelumnya. %1$s Kembali %2$s ke Piwik%3$s.",
"JsTagArchivingHelp1": "Untuk kunjungan situs menengah dan tinggi terdapat beberapa optimasi yang haris dibuat untuk membantu Piwik berjalan lebih cepat (seperti %1$smengatur pengarsipan-otomatis%2$s).",
"JSTracking_EndNote": "Catatan: Setelah proses pemasangan, Anda dapat membangkitkan kode pelacakan tersesuaikan di bidang %1$sKode Pelacakan%2$s dalam halaman pengelola.",
"JSTracking_Intro": "Untuk melacak lalu lintas ramatraya menggunakan Piwik, Anda harus menambah beberapa kode tambahan untuk setiap halaman situs Anda.",
diff --git a/plugins/Installation/lang/uk.json b/plugins/Installation/lang/uk.json
index b1b7323665..244462565a 100644
--- a/plugins/Installation/lang/uk.json
+++ b/plugins/Installation/lang/uk.json
@@ -1,9 +1,11 @@
{
"Installation": {
+ "CollaborativeProject": "Piwik являє собою спільний проект, побудований з любов'ю, людьми з усього світу.",
"ConfigurationHelp": "Файл конфігурації Piwik не налаштований. Видаліть файл config\/config.ini.php та перезапустіть інсталяцію, або виправте налаштування підєднання до бази даних.",
"ConfirmDeleteExistingTables": "Впевнені що хочете видалити таблиці: %s з бази даних? ЗАСТЕРЕЖЕННЯ: ДАНІ З ЦИХ ТАБЛИЦЬ НЕМОЖУТЬ БУТИ ВІДНОВЛЕНІ!",
"Congratulations": "Вітання!",
"CongratulationsHelp": "<p>Вітання! Встановлення Piwik завершено.<\/p><p>Переконайтеся що JavaScript код додано на кожну вашу сторінку, та очікуйте на перших відвідувачів!<\/p>",
+ "DatabaseAbilities": "Можливості бази даних",
"DatabaseCreation": "Створення бази даних",
"DatabaseErrorConnect": "Помилка при спробі встановити з’єднання з сервером баз даних",
"DatabaseServerVersion": "Версія сервера баз даних",
@@ -15,23 +17,50 @@
"DatabaseSetupTablePrefix": "префікс таблиць",
"Email": "Email",
"Extension": "Розширення",
+ "Filesystem": "Файлова система",
+ "GetInvolved": "Якщо вам подобається те, що ви бачите, ви можете %1$sвзяти участь%2$s.",
"GoBackAndDefinePrefix": "Повернутися і встановити префікс для таблиць Piwik",
+ "HappyAnalysing": "Щасливої аналітики!",
"Installation": "Встановлення",
"InstallationStatus": "Статус встановлення",
+ "InsufficientPrivilegesHelp": "Ви можете додати ці привілеї за допомогою такого інструменту, як phpMyAdmin або шляхом реалізації права SQL запиту. Якщо ви не знаєте, як зробити ці речі, будь ласка, зверніться до системного адміністратора щоб вам надали ці привілеї для вас.",
+ "InsufficientPrivilegesMain": "Або база даних не існує (і не може бути створений), або вказаний користувач не має достатніх привілеїв. Користувач бази даних повинен мати такі привілеї: %s",
+ "InvalidStateError": "Помилка: Piwik вже встановлено. %1$s Поверніться %2$s до Piwik%3$s.",
"LargePiwikInstances": "Доомога для великих інсталяцій Piwik",
"Legend": "Підказка",
+ "NfsFilesystemWarning": "Ваш сервер використовує файлову систему NFS.",
+ "NfsFilesystemWarningSuffixAdmin": "Це означає, що Piwik буде вкрай повільним при використанні сесій на основі файлів.",
+ "YouMayInstallPiwikNow": "Ви можете %1$sвстановити Piwik прямо зараз%2$s",
"Optional": "Не обовязково",
+ "Password": "Пароль",
"PasswordDoNotMatch": "пароль не співпадає",
"PasswordRepeat": "Пароль ще раз",
"PercentDone": "%s %% Завершено",
+ "ProfessionalServicesAdTitle": "Просунута Аналітика і Послуги",
+ "ProfessionalServicesfessionalServicesAdText": "Наша мережа експертів може допомогти вашій організації розблокувати всю міць Piwik аналітики.",
+ "ProfessionalServicesfessionalDiscoverHow": "Дізнайтеся про %1$sдодаткові продукти і послуги%2$s для Piwik і про те, як збільшити число переходів і доходів.",
"PleaseFixTheFollowingErrors": "Виправте наступні помилки",
+ "DefaultSettings": "Налаштування Piwik за замовчуванням",
+ "DefaultSettingsHelp": "Piwik поставляється з настройками за замовчуванням. Ви можете налаштувати їх зараз або зробити це пізніше в панелі адміністратора.",
"Requirements": "Системні вимоги Piwik",
+ "RestartWebServer": "Після внесення цих змін, перезавантажте веб-сервер.",
+ "ReusingTables": "Повторне використання Таблиць",
+ "SeeBelowForMoreInfo": "Дивіться нижче для отримання додаткової інформації.",
"SetupWebsite": "Налаштувати веб-сайт",
"SetupWebsiteError": "Виникла помилка при додаванні веб-сайту",
+ "SetupWebSiteName": "Назва сайту",
"SetupWebsiteSetupSuccess": "Веб-сайт %s створено успішно!",
+ "SetupWebSiteURL": "URL веб-сайту",
+ "SiteSetup": "Будь ласка, встановіть перший сайт, який би ви хотіли б відслідковувати і аналізувати з допомогою Piwik:",
+ "SiteSetupFootnote": "Примітка: після того, як встановлення Piwik буде завершено, ви зможете додати більше сайтів для відстеження!",
+ "SuperUser": "Супер Користувач",
+ "SuperUserLogin": "Логін супер-користувача",
+ "SuperUserSetupError": "Сталася помилка при додаванні Супер Користувача",
+ "SuperUserSetupSuccess": "Супер Користувач успішно створений!",
"SystemCheck": "Перевірка системи",
"SystemCheckAutoUpdateHelp": "Примітка: Поновлення в-одне-клацання Piwik-а вимагає доступу на запис в папку Piwik та дочірні папки\/файли.",
"SystemCheckCreateFunctionHelp": "Piwik використовує анонімні функції для зворотніх-викликів.",
+ "SystemCheckDatabaseExtensions": "Розширення MySQL",
"SystemCheckDatabaseHelp": "Piwik вимагає або mysqli розширення або обидва розшинення PDO та pdo_mysql.",
"SystemCheckDebugBacktraceHelp": "View::factory неможе створити інтерфейс для модуля що робить виклик.",
"SystemCheckError": "Виникла помилка - треба виправити перед тим як рухатись далі",
@@ -39,15 +68,20 @@
"SystemCheckExtensions": "Інші необхідні розширення",
"SystemCheckFileIntegrity": "Цілісність файлу",
"SystemCheckFunctions": "Необхідні функції",
+ "SystemCheckFunctionHelp": "Вам необхідно включити цю вбудовану функцію.",
+ "SystemCheckGDFreeType": "GD > 2.x + Freetype (графіка)",
"SystemCheckGDHelp": "Міні-графіки не будуть відображатися.",
"SystemCheckGlobHelp": "Ця вбудована функція було заблокована на вашому хостингу. Piwik спробує емулювати цю функцію але може зістикнутися з подальшими обмеженнями по безпеці. Функціональність може бути обмежена.",
"SystemCheckGzcompressHelp": "Необхідно увімкнути розширення zlib та функцію gzcompress.",
"SystemCheckGzuncompressHelp": "Необхідно увімкнути розширення zlib та функцію gzuncompress.",
"SystemCheckIconvHelp": "Необхідно переконфігурувати та перезібрати PHP з підтримкою \"iconv\", --with-iconv.",
+ "SystemCheckJsonHelp": "Розширення php5-json потрібно для Piwik для читання і запису даних в форматі JSON.",
"SystemCheckMailHelp": "Е-майл повідомлення форми відгуку та відновлення паролю не будуть надсилатися без функції mail().",
"SystemCheckMbstring": "mbstring",
"SystemCheckMemoryLimit": "Граничний розмір пам'яті",
"SystemCheckMemoryLimitHelp": "На сайті з високим трафіком процес стистення даних може потребувати більше пам'яті ніж дозволено зараз.<br\/>Дивіться детальніше про директиву memory_limit у файлі php.ini.",
+ "SystemCheckNoErrorsOrWarnings": "Немає ніяких помилок або попереджень",
+ "SystemCheckViewFullSystemCheck": "Перегляд звіту про повну перевірку системи",
"SystemCheckOpenURL": "Відкрити URL",
"SystemCheckOpenURLHelp": "Підписка на емайл-розсилку, повідомлення про поновлення, та поновлення в-одне-клацання (що вимагає \"curl\" розширення, allow_url_fopen=On або fsockopen() дозволено)",
"SystemCheckOtherExtensions": "Інші розширення",
@@ -68,15 +102,25 @@
"SystemCheckWriteDirs": "Директорії з доступом на запис",
"SystemCheckWriteDirsHelp": "Щоб вирішити цю проблему на Linux системі, спробуйте ввести наступні команду(-и)",
"SystemCheckZlibHelp": "Необхідно переконфігурувати та перезібрати PHP з підтримкою \"zlib\", --with-zlib.",
+ "SystemCheckCronArchiveProcess": "Архів Cron",
+ "SystemCheckCronArchiveProcessCLI": "Управління процесами за допомогою CLI",
+ "SystemCheckPhpSetting": "Щоб запобігти деяким критичним проблемам, необхідно встановити наступні параметри в вашому php.ini файлі: %s",
+ "SystemCheckUpdateHttps": "Оновлення через HTTPS",
+ "NotSupported": "не підтримується",
"Tables": "Стровення таблиць",
"TablesCreatedSuccess": "Таблиці створено успішно!",
"TablesDelete": "Видалити знайдені таблиці",
"TablesDeletedSuccess": "Існуючі таблиці Piwik видалено успішно",
"TablesFound": "Наступні таблиці знайдено в базі даних",
"TablesReuse": "Використати існуючі таблиці",
+ "TablesUpdatedSuccess": "База даних була успішно оновлена ​​з %1$s до %2$s!",
"TablesWarningHelp": "Оберіть, чи хочете Ви використати існуючі таблиці, або виберіть установку \"з нуля\", щоб видалити всі існуючі таблиці в базі даних",
"TablesWithSameNamesFound": "Деякі %1$s таблиці в базі даних %2$s мають імена тих таблиць що створюються Piwik-ом.",
+ "Timezone": "Часовий пояс сайту",
+ "WeHopeYouWillEnjoyPiwik": "Ми сподіваємося, що ви будете насолоджуватися, використовуючи Piwik стільки, скільки нам подобається робити це.",
"Welcome": "Вітання!",
- "WelcomeHelp": "<p>Piwik - це <a href=\"http:\/\/ru.wikipedia.org\/wiki\/Open_source\">open source<\/a> програмне забезпечення для веб-аналітики, за допомогою якого ви можете з легкісню отримати аналітичну інформацию про ваших відвідувачів.<\/p><p>Цей процес складається з %s простих кроків і займе не більше 5 хвилин.<\/p>"
+ "WelcomeHelp": "<p>Piwik - це <a href=\"http:\/\/ru.wikipedia.org\/wiki\/Open_source\">open source<\/a> програмне забезпечення для веб-аналітики, за допомогою якого ви можете з легкісню отримати аналітичну інформацию про ваших відвідувачів.<\/p><p>Цей процес складається з %s простих кроків і займе не більше 5 хвилин.<\/p>",
+ "WelcomeToCommunity": "Ласкаво просимо до спільноти Piwik!",
+ "CannotConnectToDb": "Неможливо підключитися до бази даних"
}
} \ No newline at end of file
diff --git a/plugins/Installation/templates/layout.twig b/plugins/Installation/templates/layout.twig
index 457837fe58..df9e7a538f 100644
--- a/plugins/Installation/templates/layout.twig
+++ b/plugins/Installation/templates/layout.twig
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
- <title>Piwik &rsaquo; {{ 'Installation_Installation'|translate }}</title>
+ <title>Piwik {{ piwikVersion }} &rsaquo; {{ 'Installation_Installation'|translate }}</title>
<link rel="stylesheet" type="text/css" href="index.php?module=Installation&action=getInstallationCss"/>
<script type="text/javascript" src="index.php?module=Installation&action=getInstallationJs"></script>
@@ -16,7 +16,7 @@
<div class="header">
<div class="logo">
- <img src="plugins/Morpheus/images/logo.png"/>
+ <img title="Piwik {{ piwikVersion }} - {{ 'General_OpenSourceWebAnalytics'|translate|escape('html_attr') }}" src="plugins/Morpheus/images/logo.png"/>
<p>{{ 'General_OpenSourceWebAnalytics'|translate }}</p>
</div>
<div class="language-selector">
diff --git a/plugins/LanguagesManager/Commands/CreatePull.php b/plugins/LanguagesManager/Commands/CreatePull.php
index 0af07259ff..9348739932 100644
--- a/plugins/LanguagesManager/Commands/CreatePull.php
+++ b/plugins/LanguagesManager/Commands/CreatePull.php
@@ -144,8 +144,15 @@ class CreatePull extends TranslationBase
if (!empty($modifiedFiles[1])) {
foreach ($modifiedFiles[1] as $modifiedFile) {
- $languageInfo = $this->getLanguageInfoByIsoCode($modifiedFile);
- $messages[$modifiedFile] = sprintf('- Updated %s (%s changes / %s translated)\n', $languageInfo['english_name'], $linesSumByLang[$modifiedFile], $languageInfo['percentage_complete']);
+ if ($linesSumByLang[$modifiedFile]) {
+ $languageInfo = $this->getLanguageInfoByIsoCode($modifiedFile);
+ $messages[$modifiedFile] = sprintf(
+ '- Updated %s (%s changes / %s translated)\n',
+ $languageInfo['english_name'],
+ $linesSumByLang[$modifiedFile],
+ $languageInfo['percentage_complete']
+ );
+ }
}
$languageCodesTouched = array_merge($languageCodesTouched, $modifiedFiles[1]);
}
diff --git a/plugins/LogViewer b/plugins/LogViewer
-Subproject d8428ae283482b747cb11bc231f201c35563697
+Subproject a79a661c0e967c5c57cd57f0aabb115caa33682
diff --git a/plugins/Login/lang/uk.json b/plugins/Login/lang/uk.json
index a9ce22941f..51c46e05b8 100644
--- a/plugins/Login/lang/uk.json
+++ b/plugins/Login/lang/uk.json
@@ -12,8 +12,11 @@
"LoginOrEmail": "Ім'я користувача або E-mail",
"LoginPasswordNotCorrect": "Логін або пароль невірні",
"LostYourPassword": "Втратили пароль?",
+ "ChangeYourPassword": "Змініть ваш пароль",
"MailPasswordChangeBody": "Привіт %1$s,\n\nA Запит на скидання пароля був отриманий від %2$s. Щоб підтвердити цю зміна пароля, так щоб ви могли увійти в систему з новими обліковими даними, перейдіть за наступним посиланням:\n\n%3$s\n\nУвага: Зміна пароля також змінить ваш token_auth. Ви можете подивитися Ваш новий token_auth на сторінці налаштувань.\n\nЯкщо ви використовуєте Ваш API token_auth у будь-яких зовнішніх програмах чи для архівування, обов'язково оновіть token_auth для запитів до API, тому що він зміниться.\n\nПримітка: це посилання діє протягом 24 годин.\n\nІ спасибі за використання Piwik!",
"MailTopicPasswordChange": "Підтвердіть зміну пароля",
+ "NewPassword": "Новий пароль",
+ "NewPasswordRepeat": "Новий пароль (повторно)",
"PasswordChanged": "Ваш пароль був змінений.",
"PasswordRepeat": "Пароль ще раз",
"PasswordsDoNotMatch": "Паролі не співпадають.",
diff --git a/plugins/LoginHttpAuth b/plugins/LoginHttpAuth
-Subproject a285693bd66bc3758483d4da839d2466a1700e8
+Subproject d9226082e7cf08172d6b21932d4a9de6d37bda0
diff --git a/plugins/Marketplace/API.php b/plugins/Marketplace/API.php
new file mode 100644
index 0000000000..0ebdaec905
--- /dev/null
+++ b/plugins/Marketplace/API.php
@@ -0,0 +1,106 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Exception;
+use Piwik\Piwik;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Plugins\Marketplace\Plugins\InvalidLicenses;
+
+/**
+ * The Marketplace API lets you manage your license key so you can download & install in one-click <a target="_blank" rel="noreferrer" href="https://plugins.piwik.org/premium">paid premium plugins</a> you have subscribed to.
+ *
+ * @method static \Piwik\Plugins\Marketplace\API getInstance()
+ */
+class API extends \Piwik\Plugin\API
+{
+ /**
+ * @var Client
+ */
+ private $marketplaceClient;
+
+ /**
+ * @var Service
+ */
+ private $marketplaceService;
+
+ /**
+ * @var InvalidLicenses
+ */
+ private $expired;
+
+ public function __construct(Service $service, Client $client, InvalidLicenses $expired)
+ {
+ $this->marketplaceService = $service;
+ $this->marketplaceClient = $client;
+ $this->expired = $expired;
+ }
+
+ /**
+ * Deletes an existing license key if one is set.
+ *
+ * @return bool
+ */
+ public function deleteLicenseKey()
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ $this->setLicenseKey(null);
+ return true;
+ }
+
+ /**
+ * Saves the given license key in case the key is actually valid (exists on the Piwik Marketplace and is not
+ * yet expired).
+ *
+ * @param string $licenseKey
+ * @return bool
+ *
+ * @throws Exception In case of an invalid license key
+ * @throws Service\Exception In case of any network problems
+ */
+ public function saveLicenseKey($licenseKey)
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ $licenseKey = trim($licenseKey);
+
+ // we are currently using the Marketplace service directly to 1) change LicenseKey and 2) not use any cache
+ $this->marketplaceService->authenticate($licenseKey);
+
+ try {
+ $consumer = $this->marketplaceService->fetch('consumer/validate', array());
+ } catch (Api\Service\Exception $e) {
+ if ($e->getCode() === Api\Service\Exception::HTTP_ERROR) {
+ throw $e;
+ }
+
+ $consumer = array();
+ }
+
+ if (empty($consumer['isValid'])) {
+ throw new Exception(Piwik::translate('Marketplace_ExceptionLinceseKeyIsNotValid'));
+ }
+
+ $this->setLicenseKey($licenseKey);
+
+ return true;
+ }
+
+ private function setLicenseKey($licenseKey)
+ {
+ $key = new LicenseKey();
+ $key->set($licenseKey);
+
+ $this->marketplaceClient->clearAllCacheEntries();
+ $this->expired->clearCache();
+ }
+
+}
diff --git a/plugins/Marketplace/Api/Client.php b/plugins/Marketplace/Api/Client.php
new file mode 100644
index 0000000000..0b4589f33a
--- /dev/null
+++ b/plugins/Marketplace/Api/Client.php
@@ -0,0 +1,326 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace\Api;
+
+use Piwik\Cache;
+use Piwik\Common;
+use Piwik\Container\StaticContainer;
+use Piwik\Filesystem;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Environment;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\SettingsServer;
+use Exception as PhpException;
+use Psr\Log\LoggerInterface;
+
+/**
+ *
+ */
+class Client
+{
+ const CACHE_TIMEOUT_IN_SECONDS = 3600;
+ const HTTP_REQUEST_TIMEOUT = 60;
+
+ /**
+ * @var Service
+ */
+ private $service;
+
+ /**
+ * @var Cache\Lazy
+ */
+ private $cache;
+
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @var Environment
+ */
+ private $environment;
+
+ public function __construct(Service $service, Cache\Lazy $cache, LoggerInterface $logger, Environment $environment)
+ {
+ $this->service = $service;
+ $this->cache = $cache;
+ $this->logger = $logger;
+ $this->pluginManager = Plugin\Manager::getInstance();
+ $this->environment = $environment;
+ }
+
+ public function setEnvironment($environment)
+ {
+ $this->environment = $environment;
+ }
+
+ public function getEnvironment()
+ {
+ return $this->environment;
+ }
+
+ public function getPluginInfo($name)
+ {
+ $action = sprintf('plugins/%s/info', $name);
+
+ $plugin = $this->fetch($action, array());
+
+ if (!empty($plugin) && $this->shouldIgnorePlugin($plugin)) {
+ return;
+ }
+
+ return $plugin;
+ }
+
+ public function getInfo()
+ {
+ try {
+ $info = $this->fetch('info', array());
+ } catch (Exception $e) {
+ $info = null;
+ }
+
+ return $info;
+ }
+
+ public function getConsumer()
+ {
+ try {
+ $licenses = $this->fetch('consumer', array());
+ } catch (Exception $e) {
+ $licenses = null;
+ }
+
+ return $licenses;
+ }
+
+ public function isValidConsumer()
+ {
+ try {
+ $consumer = $this->fetch('consumer/validate', array());
+ } catch (Exception $e) {
+ $consumer = null;
+ }
+
+ return !empty($consumer['isValid']);
+ }
+
+ private function getRandomTmpPluginDownloadFilename()
+ {
+ $tmpPluginPath = StaticContainer::get('path.tmp') . '/latest/plugins/';
+
+ // we generate a random unique id as filename to prevent any user could possibly download zip directly by
+ // opening $piwikDomain/tmp/latest/plugins/$pluginName.zip in the browser. Instead we make it harder here
+ // and try to make sure to delete file in case of any error.
+ $tmpPluginFolder = Common::generateUniqId();
+
+ return $tmpPluginPath . $tmpPluginFolder . '.zip';
+ }
+
+ public function download($pluginOrThemeName)
+ {
+ @ignore_user_abort(true);
+ SettingsServer::setMaxExecutionTime(0);
+
+ $downloadUrl = $this->getDownloadUrl($pluginOrThemeName);
+
+ if (empty($downloadUrl)) {
+ return false;
+ }
+
+ // in the beginning we allowed to specify a download path but this way we make sure security is always taken
+ // care of and we always generate a random download filename.
+ $target = $this->getRandomTmpPluginDownloadFilename();
+
+ Filesystem::deleteFileIfExists($target);
+
+ $success = $this->service->download($downloadUrl, $target, static::HTTP_REQUEST_TIMEOUT);
+
+ if ($success) {
+ return $target;
+ }
+
+ return false;
+ }
+
+ /**
+ * @param \Piwik\Plugin[] $plugins
+ * @return array|mixed
+ */
+ public function checkUpdates($plugins)
+ {
+ $params = array();
+
+ foreach ($plugins as $plugin) {
+ $pluginName = $plugin->getPluginName();
+ if (!$this->pluginManager->isPluginBundledWithCore($pluginName)) {
+ $params[] = array('name' => $plugin->getPluginName(), 'version' => $plugin->getVersion());
+ }
+ }
+
+ if (empty($params)) {
+ return array();
+ }
+
+ $params = array('plugins' => $params);
+
+ $hasUpdates = $this->fetch('plugins/checkUpdates', array('plugins' => json_encode($params)));
+
+ if (empty($hasUpdates)) {
+ return array();
+ }
+
+ return $hasUpdates;
+ }
+
+ /**
+ * @param \Piwik\Plugin[] $plugins
+ * @return array
+ */
+ public function getInfoOfPluginsHavingUpdate($plugins)
+ {
+ $hasUpdates = $this->checkUpdates($plugins);
+
+ $pluginDetails = array();
+
+ foreach ($hasUpdates as $pluginHavingUpdate) {
+ if (empty($pluginHavingUpdate)) {
+ continue;
+ }
+
+ try {
+ $plugin = $this->getPluginInfo($pluginHavingUpdate['name']);
+ } catch (PhpException $e) {
+ $this->logger->error($e->getMessage());
+ $plugin = null;
+ }
+
+ if (!empty($plugin)) {
+ $plugin['repositoryChangelogUrl'] = $pluginHavingUpdate['repositoryChangelogUrl'];
+ $pluginDetails[] = $plugin;
+ }
+
+ }
+
+ return $pluginDetails;
+ }
+
+ public function searchForPlugins($keywords, $query, $sort, $purchaseType)
+ {
+ $response = $this->fetch('plugins', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort, 'purchase_type' => $purchaseType));
+
+ if (!empty($response['plugins'])) {
+ return $this->removeNotNeededPluginsFromResponse($response);
+ }
+
+ return array();
+ }
+
+ private function removeNotNeededPluginsFromResponse($response)
+ {
+ foreach ($response['plugins'] as $index => $plugin) {
+ if ($this->shouldIgnorePlugin($plugin)) {
+ unset($response['plugins'][$index]);
+ continue;
+ }
+ }
+ return array_values($response['plugins']);
+ }
+
+ private function shouldIgnorePlugin($plugin)
+ {
+ return !empty($plugin['isCustomPlugin']);
+ }
+
+ public function searchForThemes($keywords, $query, $sort, $purchaseType)
+ {
+ $response = $this->fetch('themes', array('keywords' => $keywords, 'query' => $query, 'sort' => $sort, 'purchase_type' => $purchaseType));
+
+ if (!empty($response['plugins'])) {
+ return $this->removeNotNeededPluginsFromResponse($response);
+ }
+
+ return array();
+ }
+
+ private function fetch($action, $params)
+ {
+ ksort($params); // sort params so cache is reused more often even if param order is different
+
+ $releaseChannel = $this->environment->getReleaseChannel();
+
+ if (!empty($releaseChannel)) {
+ $params['release_channel'] = $releaseChannel;
+ }
+
+ $params['prefer_stable'] = (int) $this->environment->doesPreferStable();
+ $params['piwik'] = $this->environment->getPiwikVersion();
+ $params['php'] = $this->environment->getPhpVersion();
+ $params['mysql'] = $this->environment->getMySQLVersion();
+ $params['num_users'] = $this->environment->getNumUsers();
+ $params['num_websites'] = $this->environment->getNumWebsites();
+
+ $query = http_build_query($params);
+ $cacheId = $this->getCacheKey($action, $query);
+
+ $result = $this->cache->fetch($cacheId);
+
+ if ($result !== false) {
+ return $result;
+ }
+
+ try {
+ $result = $this->service->fetch($action, $params);
+ } catch (Service\Exception $e) {
+ throw new Exception($e->getMessage(), $e->getCode());
+ }
+
+ $this->cache->save($cacheId, $result, self::CACHE_TIMEOUT_IN_SECONDS);
+
+ return $result;
+ }
+
+ public function clearAllCacheEntries()
+ {
+ $this->cache->flushAll();
+ }
+
+ private function getCacheKey($action, $query)
+ {
+ $version = $this->service->getVersion();
+
+ return sprintf('marketplace.api.%s.%s.%s', $version, str_replace('/', '.', $action), md5($query));
+ }
+
+ /**
+ * @param $pluginOrThemeName
+ * @throws Exception
+ * @return string
+ */
+ public function getDownloadUrl($pluginOrThemeName)
+ {
+ $plugin = $this->getPluginInfo($pluginOrThemeName);
+
+ if (empty($plugin['versions'])) {
+ throw new Exception('Plugin has no versions.');
+ }
+
+ $latestVersion = array_pop($plugin['versions']);
+ $downloadUrl = $latestVersion['download'];
+
+ return $this->service->getDomain() . $downloadUrl . '?coreVersion=' . $this->environment->getPiwikVersion();
+ }
+
+}
diff --git a/plugins/CorePluginsAdmin/MarketplaceApiException.php b/plugins/Marketplace/Api/Exception.php
index 616a9b89b1..7dce508bf9 100644
--- a/plugins/CorePluginsAdmin/MarketplaceApiException.php
+++ b/plugins/Marketplace/Api/Exception.php
@@ -7,11 +7,11 @@
*
*/
-namespace Piwik\Plugins\CorePluginsAdmin;
+namespace Piwik\Plugins\Marketplace\Api;
/**
*/
-class MarketplaceApiException extends \Exception
+class Exception extends \Exception
{
}
diff --git a/plugins/Marketplace/Api/Service.php b/plugins/Marketplace/Api/Service.php
new file mode 100644
index 0000000000..e493b69941
--- /dev/null
+++ b/plugins/Marketplace/Api/Service.php
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace\Api;
+
+use Piwik\Http;
+
+/**
+ *
+ */
+class Service
+{
+ const CACHE_TIMEOUT_IN_SECONDS = 1200;
+ const HTTP_REQUEST_TIMEOUT = 60;
+
+ /**
+ * @var string
+ */
+ private $domain;
+
+ /**
+ * @var null|string
+ */
+ private $accessToken;
+
+ /**
+ * API version to use on the Marketplace
+ * @var string
+ */
+ private $version = '2.0';
+
+ public function __construct($domain)
+ {
+ $this->domain = $domain;
+ }
+
+ public function authenticate($accessToken)
+ {
+ if (empty($accessToken)) {
+ $this->accessToken = null;
+ } elseif (ctype_alnum($accessToken)) {
+ $this->accessToken = $accessToken;
+ }
+ }
+
+ /**
+ * The API version that will be used on the Marketplace.
+ * @return string eg 2.0
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+
+ /**
+ * Returns the currently set access token
+ * @return null|string
+ */
+ public function getAccessToken()
+ {
+ return $this->accessToken;
+ }
+
+ public function hasAccessToken()
+ {
+ return !empty($this->accessToken);
+ }
+
+ /**
+ * Downloads data from the given URL via a POST request. If a destination path is given, the downloaded data
+ * will be stored in the given path and returned otherwise.
+ *
+ * Make sure to call {@link authenticate()} to download paid plugins.
+ *
+ * @param string $url An absolute URL to the marketplace including domain.
+ * @param null|string $destinationPath
+ * @param null|int $timeout Defaults to 60 seconds see {@link self::HTTP_REQUEST_METHOD}
+ * @return bool|string Returns the downloaded data or true if a destination path was given.
+ * @throws \Exception
+ */
+ public function download($url, $destinationPath = null, $timeout = null)
+ {
+ $method = Http::getTransportMethod();
+
+ if (!isset($timeout)) {
+ $timeout = static::HTTP_REQUEST_TIMEOUT;
+ }
+
+ $post = null;
+ if ($this->accessToken) {
+ $post = array('access_token' => $this->accessToken);
+ }
+
+ $file = Http::ensureDestinationDirectoryExists($destinationPath);
+
+ $response = Http::sendHttpRequestBy($method,
+ $url,
+ $timeout,
+ $userAgent = null,
+ $destinationPath,
+ $file,
+ $followDepth = 0,
+ $acceptLanguage = false,
+ $acceptInvalidSslCertificate = false,
+ $byteRange = false, $getExtendedInfo = false, $httpMethod = 'POST',
+ $httpUsername = null, $httpPassword = null, $post);
+
+ return $response;
+ }
+
+ /**
+ * Executes the given API action on the Marketplace using the given params and returns the result.
+ *
+ * Make sure to call {@link authenticate()} to download paid plugins.
+ *
+ * @param string $action eg 'plugins', 'plugins/$pluginName/info', ...
+ * @param array $params eg array('sort' => 'alpha')
+ * @return mixed
+ * @throws Service\Exception
+ */
+ public function fetch($action, $params)
+ {
+ $endpoint = sprintf('%s/api/%s/', $this->domain, $this->version);
+
+ $query = http_build_query($params);
+ $url = sprintf('%s%s?%s', $endpoint, $action, $query);
+
+ $response = $this->download($url);
+
+ $result = json_decode($response, true);
+
+ if (is_null($result)) {
+ $message = sprintf('There was an error reading the response from the Marketplace: Please try again later.');
+ throw new Service\Exception($message, Service\Exception::HTTP_ERROR);
+ }
+
+ if (!empty($result['error'])) {
+ throw new Service\Exception($result['error'], Service\Exception::API_ERROR);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Get the domain that is used in order to access the Marketplace. Eg http://plugins.piwik.org
+ * @return string
+ */
+ public function getDomain()
+ {
+ return $this->domain;
+ }
+
+}
diff --git a/plugins/Marketplace/Api/Service/Exception.php b/plugins/Marketplace/Api/Service/Exception.php
new file mode 100644
index 0000000000..181c0be568
--- /dev/null
+++ b/plugins/Marketplace/Api/Service/Exception.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Api\Service;
+
+/**
+ */
+class Exception extends \Exception
+{
+ const HTTP_ERROR = 100;
+ const API_ERROR = 101;
+
+}
diff --git a/plugins/Marketplace/Consumer.php b/plugins/Marketplace/Consumer.php
new file mode 100644
index 0000000000..1ae8ed490b
--- /dev/null
+++ b/plugins/Marketplace/Consumer.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace;
+
+/**
+ * A consumer is a user having specified a license key in the Marketplace.
+ */
+class Consumer
+{
+ /**
+ * @var Api\Client
+ */
+ private $marketplaceClient;
+
+ private $consumer = false;
+ private $isValid = null;
+
+ public function __construct(Api\Client $marketplaceClient)
+ {
+ $this->marketplaceClient = $marketplaceClient;
+ }
+
+ /**
+ * For tests only.
+ * @internal
+ * @return Api\Client
+ */
+ public function getApiClient()
+ {
+ return $this->marketplaceClient;
+ }
+
+ public function clearCache()
+ {
+ $this->consumer = false;
+ $this->isValid = null;
+ }
+
+ public function getConsumer()
+ {
+ if ($this->consumer === false) {
+ $consumer = $this->marketplaceClient->getConsumer();
+ if (!empty($consumer)) {
+ $this->consumer = $consumer;
+ } else {
+ $this->consumer = array();
+ }
+ }
+
+ return $this->consumer;
+ }
+
+ public function isValidConsumer()
+ {
+ if (!isset($this->isValid)) {
+ $this->isValid = $this->marketplaceClient->isValidConsumer();
+ }
+
+ return $this->isValid;
+ }
+
+}
diff --git a/plugins/Marketplace/Controller.php b/plugins/Marketplace/Controller.php
new file mode 100644
index 0000000000..986ee5cf9a
--- /dev/null
+++ b/plugins/Marketplace/Controller.php
@@ -0,0 +1,459 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Common;
+use Piwik\Date;
+use Piwik\Filesystem;
+use Piwik\Log;
+use Piwik\Nonce;
+use Piwik\Notification;
+use Piwik\Piwik;
+use Piwik\Plugin;
+use Piwik\Plugins\CorePluginsAdmin\Controller as PluginsController;
+use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
+use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
+use Piwik\Plugins\Marketplace\Input\Mode;
+use Piwik\Plugins\Marketplace\Input\PluginName;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Plugins\Marketplace\Input\Sort;
+use Piwik\ProxyHttp;
+use Piwik\SettingsPiwik;
+use Piwik\Url;
+use Piwik\View;
+use Exception;
+
+class Controller extends \Piwik\Plugin\ControllerAdmin
+{
+ const UPDATE_NONCE = 'Marketplace.updatePlugin';
+ const INSTALL_NONCE = 'Marketplace.installPlugin';
+
+ /**
+ * @var LicenseKey
+ */
+ private $licenseKey;
+ /**
+ * @var Plugins
+ */
+ private $plugins;
+
+ /**
+ * @var Api\Client
+ */
+ private $marketplaceApi;
+
+ /**
+ * @var Consumer
+ */
+ private $consumer;
+
+ /**
+ * @var PluginInstaller
+ */
+ private $pluginInstaller;
+
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @var Environment
+ */
+ private $environment;
+
+ public function __construct(LicenseKey $licenseKey, Plugins $plugins, Api\Client $marketplaceApi, Consumer $consumer, PluginInstaller $pluginInstaller, Environment $environment)
+ {
+ $this->licenseKey = $licenseKey;
+ $this->plugins = $plugins;
+ $this->marketplaceApi = $marketplaceApi;
+ $this->consumer = $consumer;
+ $this->pluginInstaller = $pluginInstaller;
+ $this->pluginManager = Plugin\Manager::getInstance();
+ $this->environment = $environment;
+
+ parent::__construct();
+ }
+
+ public function subscriptionOverview()
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ // we want to make sure to fetch the latest results, eg in case user has purchased a subscription meanwhile
+ // this is also like a self-repair to clear the caches :)
+ $this->marketplaceApi->clearAllCacheEntries();
+ $this->consumer->clearCache();
+
+ $hasLicenseKey = $this->licenseKey->has();
+
+ $consumer = $this->consumer->getConsumer();
+
+ $subscriptions = array();
+ $loginUrl = '';
+
+ if (!empty($consumer['loginUrl'])) {
+ $loginUrl = $consumer['loginUrl'];
+ }
+
+ if (!empty($consumer['licenses'])) {
+ foreach ($consumer['licenses'] as $subscription) {
+ $subscription['start'] = $this->getPrettyLongDate($subscription['startDate']);
+ $subscription['end'] = $this->getPrettyLongDate($subscription['endDate']);
+ $subscription['nextPayment'] = $this->getPrettyLongDate($subscription['nextPaymentDate']);
+ $subscriptions[] = $subscription;
+ }
+ }
+
+ return $this->renderTemplate('@Marketplace/subscription-overview', array(
+ 'hasLicenseKey' => $hasLicenseKey,
+ 'subscriptions' => $subscriptions,
+ 'loginUrl' => $loginUrl,
+ 'numUsers' => $this->environment->getNumUsers()
+ ));
+ }
+
+ private function getPrettyLongDate($date)
+ {
+ if (empty($date)) {
+ return '';
+ }
+
+ return Date::factory($date)->getLocalized(Date::DATE_FORMAT_LONG);
+ }
+
+ public function pluginDetails()
+ {
+ $view = $this->configureViewAndCheckPermission('@Marketplace/plugin-details');
+
+ $pluginName = new PluginName();
+ $pluginName = $pluginName->getPluginName();
+
+ $activeTab = Common::getRequestVar('activeTab', '', 'string');
+ if ('changelog' !== $activeTab) {
+ $activeTab = '';
+ }
+
+ try {
+ $plugin = $this->plugins->getPluginInfo($pluginName);
+
+ if (empty($plugin['name'])) {
+ throw new Exception('Plugin does not exist');
+ }
+ } catch (Exception $e) {
+ $plugin = null;
+ $view->errorMessage = $e->getMessage();
+ }
+
+ $view->plugin = $plugin;
+ $view->isSuperUser = Piwik::hasUserSuperUserAccess();
+ $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
+ $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
+ $view->activeTab = $activeTab;
+ $view->isAutoUpdatePossible = SettingsPiwik::isAutoUpdatePossible();
+ $view->isAutoUpdateEnabled = SettingsPiwik::isAutoUpdateEnabled();
+ $view->numUsers = $this->environment->getNumUsers();
+
+ return $view->render();
+ }
+
+ public function download()
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ $this->dieIfPluginsAdminIsDisabled();
+
+ $pluginName = new PluginName();
+ $pluginName = $pluginName->getPluginName();
+
+ Nonce::checkNonce($pluginName);
+
+ $filename = $pluginName . '.zip';
+
+ try {
+ $pathToPlugin = $this->marketplaceApi->download($pluginName);
+ ProxyHttp::serverStaticFile($pathToPlugin, 'application/zip', $expire = 0, $start = false, $end = false, $filename);
+ } catch (Exception $e) {
+ Common::sendResponseCode(500);
+ Log::warning('Could not download file . ' . $e->getMessage());
+ }
+
+ if (!empty($pathToPlugin)) {
+ Filesystem::deleteFileIfExists($pathToPlugin);
+ }
+ }
+
+ public function overview()
+ {
+ $view = $this->configureViewAndCheckPermission('@Marketplace/overview');
+
+ $show = Common::getRequestVar('show', 'plugins', 'string');
+ $query = Common::getRequestVar('query', '', 'string', $_POST);
+
+ $sort = new Sort();
+ $sort = $sort->getSort();
+
+ $mode = new Mode();
+ $mode = $mode->getMode();
+
+ // we're fetching all available plugins to decide which tabs need to be shown in the UI and to know the number
+ // of total available plugins
+ $allPlugins = $this->plugins->getAllPlugins();
+ $allThemes = $this->plugins->getAllThemes();
+ $paidPlugins = $this->plugins->getAllPaidPlugins();
+
+ $showThemes = ($show === 'themes');
+ $showPlugins = !$showThemes;
+ $showPaid = ($show === 'premium');
+ $showAll = !$showPaid;
+
+ if ($showPlugins && $showPaid) {
+ $type = PurchaseType::TYPE_PAID;
+ $view->numAvailablePlugins = count($paidPlugins);
+ } elseif ($showPlugins && $showAll) {
+ $type = PurchaseType::TYPE_ALL;
+ $view->numAvailablePlugins = count($allPlugins);
+ } else {
+ $type = PurchaseType::TYPE_ALL;
+ $view->numAvailablePlugins = count($allThemes);
+ }
+
+ $pluginsToShow = $this->plugins->searchPlugins($query, $sort, $showThemes, $type);
+
+ $paidPluginsToInstallAtOnce = array();
+ if (SettingsPiwik::isAutoUpdatePossible()) {
+ foreach ($paidPlugins as $paidPlugin) {
+ if ($this->canPluginBeInstalled($paidPlugin)
+ || ($this->pluginManager->isPluginInstalled($paidPlugin['name'])
+ && !$this->pluginManager->isPluginActivated($paidPlugin['name']))) {
+ $paidPluginsToInstallAtOnce[] = $paidPlugin['name'];
+ }
+ }
+ }
+
+ $view->paidPluginsToInstallAtOnce = $paidPluginsToInstallAtOnce;
+ $view->pluginsToShow = $pluginsToShow;
+ $view->isValidConsumer = $this->consumer->isValidConsumer();
+ $view->paidPlugins = $paidPlugins;
+ $view->freePlugins = $allPlugins;
+ $view->themes = $allThemes;
+ $view->showThemes = $showThemes;
+ $view->showPlugins = $showPlugins;
+ $view->showFree = $showAll;
+ $view->showPaid = $showPaid;
+ $view->pluginType = $show;
+ $view->pluginTypeOptions = array(
+ 'plugins' => Piwik::translate('General_Plugins'),
+ 'premium' => Piwik::translate('Marketplace_PaidPlugins'),
+ 'themes' => Piwik::translate('CorePluginsAdmin_Themes')
+ );
+ $view->pluginSortOptions = array(
+ Sort::METHOD_LAST_UPDATED => Piwik::translate('Marketplace_SortByLastUpdated'),
+ Sort::METHOD_POPULAR => Piwik::translate('Marketplace_SortByPopular'),
+ Sort::METHOD_NEWEST => Piwik::translate('Marketplace_SortByNewest'),
+ Sort::METHOD_ALPHA => Piwik::translate('Marketplace_SortByAlpha'),
+ );
+ $view->mode = $mode;
+ $view->query = $query;
+ $view->sort = $sort;
+ $view->hasLicenseKey = $this->licenseKey->has();
+ $view->hasSomeAdminAccess = Piwik::isUserHasSomeAdminAccess();
+ $view->installNonce = Nonce::getNonce(static::INSTALL_NONCE);
+ $view->updateNonce = Nonce::getNonce(static::UPDATE_NONCE);
+ $view->deactivateNonce = Nonce::getNonce(PluginsController::DEACTIVATE_NONCE);
+ $view->activateNonce = Nonce::getNonce(PluginsController::ACTIVATE_NONCE);
+ $view->isSuperUser = Piwik::hasUserSuperUserAccess();
+ $view->isPluginsAdminEnabled = CorePluginsAdmin::isPluginsAdminEnabled();
+ $view->isAutoUpdatePossible = SettingsPiwik::isAutoUpdatePossible();
+ $view->isAutoUpdateEnabled = SettingsPiwik::isAutoUpdateEnabled();
+
+ return $view->render();
+ }
+
+ public function installAllPaidPlugins()
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ $this->dieIfPluginsAdminIsDisabled();
+ Plugin\ControllerAdmin::displayWarningIfConfigFileNotWritable();
+
+ Nonce::checkNonce(static::INSTALL_NONCE);
+
+ $paidPlugins = $this->plugins->getAllPaidPlugins();
+
+ $hasErrors = false;
+ foreach ($paidPlugins as $paidPlugin) {
+ if (!$this->canPluginBeInstalled($paidPlugin)) {
+ continue;
+ }
+
+ $pluginName = $paidPlugin['name'];
+
+ try {
+
+ $this->pluginInstaller->installOrUpdatePluginFromMarketplace($pluginName);
+
+ } catch (\Exception $e) {
+
+ $notification = new Notification($e->getMessage());
+ $notification->context = Notification::CONTEXT_ERROR;
+ Notification\Manager::notify('Marketplace_Install' . $pluginName, $notification);
+
+ $hasErrors = true;
+ }
+ }
+
+ if ($hasErrors) {
+ Url::redirectToReferrer();
+ return;
+ }
+
+ $dependency = new Plugin\Dependency();
+
+ for ($i = 0; $i <= 10; $i++) {
+ foreach ($paidPlugins as $index => $paidPlugin) {
+ $pluginName = $paidPlugin['name'];
+
+ if ($this->pluginManager->isPluginActivated($pluginName)) {
+ unset($paidPlugins[$index]);
+ continue;
+ }
+
+ if (empty($paidPlugin['require'])
+ || !$dependency->hasDependencyToDisabledPlugin($paidPlugin['require'])) {
+
+ unset($paidPlugins[$index]);
+
+ try {
+ $this->pluginManager->activatePlugin($pluginName);
+ } catch (Exception $e) {
+
+ $hasErrors = true;
+ $notification = new Notification($e->getMessage());
+ $notification->context = Notification::CONTEXT_ERROR;
+ Notification\Manager::notify('Marketplace_Install' . $pluginName, $notification);
+ }
+ }
+ }
+ }
+
+ if ($hasErrors) {
+ $notification = new Notification(Piwik::translate('Marketplace_OnlySomePaidPluginsInstalledAndActivated'));
+ $notification->context = Notification::CONTEXT_INFO;
+ } else {
+ $notification = new Notification(Piwik::translate('Marketplace_AllPaidPluginsInstalledAndActivated'));
+ $notification->context = Notification::CONTEXT_SUCCESS;
+ }
+
+ Notification\Manager::notify('Marketplace_InstallAll', $notification);
+
+ Url::redirectToReferrer();
+ }
+
+ public function updatePlugin()
+ {
+ $view = $this->createUpdateOrInstallView('updatePlugin', static::UPDATE_NONCE);
+ return $view->render();
+ }
+
+ public function installPlugin()
+ {
+ $view = $this->createUpdateOrInstallView('installPlugin', static::INSTALL_NONCE);
+ $view->nonce = Nonce::getNonce(PluginsController::ACTIVATE_NONCE);
+
+ return $view->render();
+ }
+
+ private function createUpdateOrInstallView($template, $nonceName)
+ {
+ Piwik::checkUserHasSuperUserAccess();
+ $this->dieIfPluginsAdminIsDisabled();
+ $this->displayWarningIfConfigFileNotWritable();
+
+ $pluginName = $this->getPluginNameIfNonceValid($nonceName);
+
+ $view = new View('@Marketplace/' . $template);
+ $this->setBasicVariablesView($view);
+ $view->errorMessage = '';
+ $view->plugin = array('name' => $pluginName);
+
+ try {
+ $this->pluginInstaller->installOrUpdatePluginFromMarketplace($pluginName);
+
+ } catch (\Exception $e) {
+
+ $notification = new Notification($e->getMessage());
+ $notification->context = Notification::CONTEXT_ERROR;
+ $notification->type = Notification::TYPE_PERSISTENT;
+ $notification->flags = Notification::FLAG_CLEAR;
+ Notification\Manager::notify('CorePluginsAdmin_InstallPlugin', $notification);
+
+ Url::redirectToReferrer();
+ return;
+ }
+
+ $view->plugin = $this->plugins->getPluginInfo($pluginName);
+
+ return $view;
+ }
+
+ private function getPluginNameIfNonceValid($nonceName)
+ {
+ $nonce = Common::getRequestVar('nonce', null, 'string');
+
+ if (!Nonce::verifyNonce($nonceName, $nonce)) {
+ throw new \Exception(Piwik::translate('General_ExceptionNonceMismatch'));
+ }
+
+ Nonce::discardNonce($nonceName);
+
+ $pluginName = Common::getRequestVar('pluginName', null, 'string');
+
+ if (!$this->pluginManager->isValidPluginName($pluginName)) {
+ throw new Exception('Invalid plugin name');
+ }
+
+ return $pluginName;
+ }
+
+ private function dieIfPluginsAdminIsDisabled()
+ {
+ if (!CorePluginsAdmin::isPluginsAdminEnabled()) {
+ throw new \Exception('Enabling, disabling and uninstalling plugins has been disabled by Piwik admins.
+ Please contact your Piwik admins with your request so they can assist you.');
+ }
+ }
+
+ private function canPluginBeInstalled($plugin)
+ {
+ if (empty($plugin['isDownloadable'])) {
+ return false;
+ }
+
+ $pluginName = $plugin['name'];
+
+ $isAlreadyInstalled = $this->pluginManager->isPluginInstalled($pluginName)
+ || $this->pluginManager->isPluginLoaded($pluginName)
+ || $this->pluginManager->isPluginActivated($pluginName);
+
+ return !$isAlreadyInstalled;
+ }
+
+ protected function configureViewAndCheckPermission($template)
+ {
+ Piwik::checkUserIsNotAnonymous();
+
+ $view = new View($template);
+ $this->setBasicVariablesView($view);
+ $this->displayWarningIfConfigFileNotWritable();
+
+ $view->errorMessage = '';
+
+ return $view;
+ }
+}
diff --git a/plugins/Marketplace/Environment.php b/plugins/Marketplace/Environment.php
new file mode 100644
index 0000000000..0cfa124d9e
--- /dev/null
+++ b/plugins/Marketplace/Environment.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Common;
+use Piwik\Db;
+use Piwik\Plugin\ReleaseChannels;
+use Piwik\Plugins\CoreUpdater\ReleaseChannel;
+use Piwik\Version;
+
+class Environment
+{
+ /**
+ * @var ReleaseChannel
+ */
+ private $releaseChannel;
+
+ private $usersCache = null;
+ private $websitesCache = null;
+ private $mySqlCache = null;
+ private $piwikVersion = null;
+
+ public function __construct(ReleaseChannels $releaseChannels)
+ {
+ $this->releaseChannel = $releaseChannels->getActiveReleaseChannel();
+ }
+
+ public function setPiwikVersion($piwikVersion)
+ {
+ $this->piwikVersion = $piwikVersion;
+ }
+
+ public function getNumUsers()
+ {
+ if (!isset($this->usersCache)) {
+ $this->usersCache = (int) Db::get()->fetchOne('SELECT count(login) FROM ' . Common::prefixTable('user') . ' WHERE login <> "anonymous" ');
+ }
+
+ return $this->usersCache;
+ }
+
+ public function getNumWebsites()
+ {
+ if (!isset($this->websitesCache)) {
+ $this->websitesCache = (int) Db::get()->fetchOne('SELECT count(idsite) FROM ' . Common::prefixTable('site'));
+ }
+
+ return $this->websitesCache;
+ }
+
+ public function getPhpVersion()
+ {
+ return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION;
+ }
+
+ public function getPiwikVersion()
+ {
+ if (!empty($this->piwikVersion)) {
+ return $this->piwikVersion;
+ }
+
+ return Version::VERSION;
+ }
+
+ public function doesPreferStable()
+ {
+ if (!empty($this->releaseChannel)) {
+ return $this->releaseChannel->doesPreferStable();
+ }
+
+ return true;
+ }
+
+ public function getReleaseChannel()
+ {
+ if (!empty($this->releaseChannel)) {
+ return $this->releaseChannel->getId();
+ }
+ }
+
+ public function getMySQLVersion()
+ {
+ if (isset($this->mySqlCache)) {
+ return $this->mySqlCache;
+ }
+
+ $this->mySqlCache = '';
+
+ $db = Db::get();
+ if (method_exists($db, 'getServerVersion')) {
+ $this->mySqlCache = $db->getServerVersion();
+ }
+
+ return $this->mySqlCache;
+ }
+
+
+}
diff --git a/plugins/Marketplace/Input/Mode.php b/plugins/Marketplace/Input/Mode.php
new file mode 100644
index 0000000000..12ec883b3f
--- /dev/null
+++ b/plugins/Marketplace/Input/Mode.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+use Piwik\Common;
+
+/**
+ */
+class Mode
+{
+
+ public function getMode()
+ {
+ $mode = Common::getRequestVar('mode', 'admin', 'string');
+
+ if (!in_array($mode, array('user', 'admin'))) {
+ $mode = 'admin';
+ }
+
+ return $mode;
+ }
+
+}
diff --git a/plugins/Marketplace/Input/PluginName.php b/plugins/Marketplace/Input/PluginName.php
new file mode 100644
index 0000000000..354b7ff9d9
--- /dev/null
+++ b/plugins/Marketplace/Input/PluginName.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+use Piwik\Common;
+use Piwik\Plugin;
+use Exception;
+
+/**
+ */
+class PluginName
+{
+ private $requestParam = '';
+
+ public function __construct($requestParam = 'pluginName')
+ {
+ $this->requestParam = $requestParam;
+ }
+
+ public function getPluginName()
+ {
+ $pluginName = Common::getRequestVar($this->requestParam, null, 'string');
+
+ $this->dieIfPluginNameIsInvalid($pluginName);
+
+ return $pluginName;
+ }
+
+ private function dieIfPluginNameIsInvalid($pluginName)
+ {
+ if (!Plugin\Manager::getInstance()->isValidPluginName($pluginName)){
+ throw new Exception('Invalid plugin name given');
+ }
+ }
+
+}
diff --git a/plugins/Marketplace/Input/PurchaseType.php b/plugins/Marketplace/Input/PurchaseType.php
new file mode 100644
index 0000000000..7a76450c56
--- /dev/null
+++ b/plugins/Marketplace/Input/PurchaseType.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+
+/**
+ */
+class PurchaseType
+{
+ const TYPE_FREE = 'free';
+ const TYPE_PAID = 'paid';
+ const TYPE_ALL = '';
+
+}
diff --git a/plugins/Marketplace/Input/Sort.php b/plugins/Marketplace/Input/Sort.php
new file mode 100644
index 0000000000..ba9aec307e
--- /dev/null
+++ b/plugins/Marketplace/Input/Sort.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Plugins\Marketplace\Input;
+use Piwik\Common;
+
+/**
+ */
+class Sort
+{
+ const METHOD_POPULAR = 'popular';
+ const METHOD_ALPHA = 'alpha';
+ const METHOD_LAST_UPDATED = 'lastupdated';
+ const METHOD_NEWEST = 'newest';
+ const DEFAULT_SORT = self::METHOD_LAST_UPDATED;
+
+ public function getSort()
+ {
+ $sort = Common::getRequestVar('sort', self::DEFAULT_SORT, 'string');
+
+ if (!$this->isValidSortMethod($sort)) {
+ $sort = self::DEFAULT_SORT;
+ }
+
+ return $sort;
+ }
+
+ private function isValidSortMethod($sortMethod)
+ {
+ $valid = array(self::METHOD_POPULAR, self::METHOD_NEWEST, self::METHOD_ALPHA);
+
+ return in_array($sortMethod, $valid, $strict = true);
+ }
+
+}
diff --git a/plugins/Marketplace/LicenseKey.php b/plugins/Marketplace/LicenseKey.php
new file mode 100644
index 0000000000..cc53142b61
--- /dev/null
+++ b/plugins/Marketplace/LicenseKey.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Option;
+
+class LicenseKey
+{
+ public function get()
+ {
+ return Option::get('marketplace_license_key');
+ }
+
+ public function has()
+ {
+ $key = $this->get();
+
+ return isset($key) && $key !== false && $key !== '';
+ }
+
+ /**
+ * @param string|null|false $licenseKey `null` or `false` will delete an existing a license key
+ */
+ public function set($licenseKey)
+ {
+ if (!isset($licenseKey) || $licenseKey === false) {
+ $this->delete();
+ } else {
+ Option::set('marketplace_license_key', (string) $licenseKey);
+ }
+ }
+
+ private function delete()
+ {
+ Option::delete('marketplace_license_key');
+ }
+
+}
diff --git a/plugins/Marketplace/Marketplace.php b/plugins/Marketplace/Marketplace.php
new file mode 100644
index 0000000000..50f7682a05
--- /dev/null
+++ b/plugins/Marketplace/Marketplace.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Plugin;
+
+class Marketplace extends \Piwik\Plugin
+{
+ /**
+ * @see \Piwik\Plugin::registerEvents
+ */
+ public function registerEvents()
+ {
+ return array(
+ 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
+ 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
+ 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
+ );
+ }
+
+ public function getStylesheetFiles(&$stylesheets)
+ {
+ $stylesheets[] = "plugins/Marketplace/stylesheets/marketplace.less";
+ $stylesheets[] = "plugins/Marketplace/stylesheets/plugin-details.less";
+ $stylesheets[] = "plugins/Marketplace/stylesheets/marketplace-widget.less";
+ }
+
+ public function getJsFiles(&$jsFiles)
+ {
+ $jsFiles[] = "libs/bower_components/iframe-resizer/js/iframeResizer.min.js";
+
+ $jsFiles[] = "plugins/Marketplace/angularjs/plugins/plugin-name.directive.js";
+ $jsFiles[] = "plugins/Marketplace/angularjs/licensekey/licensekey.controller.js";
+ $jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.controller.js";
+ $jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.directive.js";
+ }
+
+ public function getClientSideTranslationKeys(&$translationKeys)
+ {
+ $translationKeys[] = 'Marketplace_LicenseKeyActivatedSuccess';
+ $translationKeys[] = 'Marketplace_LicenseKeyDeletedSuccess';
+ }
+
+ public static function isMarketplaceEnabled()
+ {
+ return self::getPluginManager()->isPluginActivated('Marketplace');
+ }
+
+ /**
+ * @return Plugin\Manager
+ */
+ private static function getPluginManager()
+ {
+ return Plugin\Manager::getInstance();
+ }
+
+}
diff --git a/plugins/Marketplace/Menu.php b/plugins/Marketplace/Menu.php
new file mode 100644
index 0000000000..ae67515a9c
--- /dev/null
+++ b/plugins/Marketplace/Menu.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Menu\MenuAdmin;
+use Piwik\Piwik;
+
+/**
+ */
+class Menu extends \Piwik\Plugin\Menu
+{
+
+ public function configureAdminMenu(MenuAdmin $menu)
+ {
+ if (!Piwik::isUserIsAnonymous()) {
+ $menu->addPlatformItem('Marketplace_Marketplace',
+ $this->urlForAction('overview', array('activated' => '', 'mode' => 'admin', 'type' => '', 'show' => '')),
+ $order = 5);
+ }
+ }
+
+}
diff --git a/plugins/Marketplace/Plugins.php b/plugins/Marketplace/Plugins.php
new file mode 100644
index 0000000000..558a83c4da
--- /dev/null
+++ b/plugins/Marketplace/Plugins.php
@@ -0,0 +1,318 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace;
+
+use Piwik\Date;
+use Piwik\ProfessionalServices\Advertising;
+use Piwik\Plugin\Dependency as PluginDependency;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Plugins\Marketplace\Input\Sort;
+
+/**
+ *
+ */
+class Plugins
+{
+ /**
+ * @var Api\Client
+ */
+ private $marketplaceClient;
+
+ /**
+ * @var Consumer
+ */
+ private $consumer;
+
+ /**
+ * @var Advertising
+ */
+ private $advertising;
+
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @internal for tests only
+ * @var array
+ */
+ private $activatedPluginNames = array();
+
+ private $pluginsHavingUpdateCache = null;
+
+ public function __construct(Api\Client $marketplaceClient, Consumer $consumer, Advertising $advertising)
+ {
+ $this->marketplaceClient = $marketplaceClient;
+ $this->consumer = $consumer;
+ $this->advertising = $advertising;
+ $this->pluginManager = Plugin\Manager::getInstance();
+ }
+
+ public function getPluginInfo($pluginName)
+ {
+ $plugin = $this->marketplaceClient->getPluginInfo($pluginName);
+ $plugin = $this->enrichPluginInformation($plugin);
+
+ return $plugin;
+ }
+
+ public function getAvailablePluginNames($themesOnly)
+ {
+ if ($themesOnly) {
+ // we do not use getAllThemes() or getAllPlugins() since those methods would apply a whitelist
+ // github organization filter and here we actually want to get all plugin names.
+ $plugins = $this->marketplaceClient->searchForThemes('', '', Sort::DEFAULT_SORT, PurchaseType::TYPE_ALL);
+ } else {
+ $plugins = $this->marketplaceClient->searchForPlugins('', '', Sort::DEFAULT_SORT, PurchaseType::TYPE_ALL);
+ }
+
+ $names = array();
+ foreach ($plugins as $plugin) {
+ $names[] = $plugin['name'];
+ }
+
+ return $names;
+ }
+
+ public function getAllAvailablePluginNames()
+ {
+ return array_merge(
+ $this->getAvailablePluginNames(true),
+ $this->getAvailablePluginNames(false)
+ );
+ }
+
+ public function searchPlugins($query, $sort, $themesOnly, $purchaseType = '')
+ {
+ if ($themesOnly) {
+ $plugins = $this->marketplaceClient->searchForThemes('', $query, $sort, $purchaseType);
+ } else {
+ $plugins = $this->marketplaceClient->searchForPlugins('', $query, $sort, $purchaseType);
+ }
+
+ foreach ($plugins as $index => $plugin) {
+ $plugins[$index] = $this->enrichPluginInformation($plugin);
+ }
+
+ return array_values($plugins);
+ }
+
+ public function getAllPaidPlugins()
+ {
+ return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = false, PurchaseType::TYPE_PAID);
+ }
+
+ public function getAllFreePlugins()
+ {
+ return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = false, PurchaseType::TYPE_FREE);
+ }
+
+ public function getAllThemes()
+ {
+ return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = true, PurchaseType::TYPE_ALL);
+ }
+
+ public function getAllPlugins()
+ {
+ return $this->searchPlugins($query = '', Sort::DEFAULT_SORT, $themes = false, PurchaseType::TYPE_ALL);
+ }
+
+ private function getPluginUpdateInformation($plugin)
+ {
+ if (empty($plugin['name'])) {
+ return;
+ }
+
+ if (!isset($this->pluginsHavingUpdateCache)) {
+ $this->pluginsHavingUpdateCache = $this->getPluginsHavingUpdate();
+ }
+
+ foreach ($this->pluginsHavingUpdateCache as $pluginHavingUpdate) {
+ if ($plugin['name'] == $pluginHavingUpdate['name']) {
+ return $pluginHavingUpdate;
+ }
+ }
+ }
+
+ /**
+ * for tests only
+ * @internal
+ * @ignore
+ * @param $plugins
+ */
+ public function setPluginsHavingUpdateCache($plugins)
+ {
+ $this->pluginsHavingUpdateCache = $plugins;
+ }
+
+ private function hasPluginUpdate($plugin)
+ {
+ $update = $this->getPluginUpdateInformation($plugin);
+
+ return !empty($update);
+ }
+
+ /**
+ * @param bool $themesOnly
+ * @return array
+ */
+ public function getPluginsHavingUpdate()
+ {
+ $this->pluginManager->loadAllPluginsAndGetTheirInfo();
+ $loadedPlugins = $this->pluginManager->getLoadedPlugins();
+
+ try {
+ $pluginsHavingUpdate = $this->marketplaceClient->getInfoOfPluginsHavingUpdate($loadedPlugins);
+ } catch (\Exception $e) {
+ $pluginsHavingUpdate = array();
+ }
+
+ foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
+ foreach ($loadedPlugins as $loadedPlugin) {
+ if (!empty($updatePlugin['name'])
+ && $loadedPlugin->getPluginName() == $updatePlugin['name']
+ ) {
+ $updatePlugin['currentVersion'] = $loadedPlugin->getVersion();
+ $updatePlugin['isActivated'] = $this->pluginManager->isPluginActivated($updatePlugin['name']);
+ $pluginsHavingUpdate[$key] = $this->addMissingRequirements($updatePlugin);
+ break;
+ }
+ }
+ }
+
+ // remove plugins that have updates but for some reason are not loaded
+ foreach ($pluginsHavingUpdate as $key => $updatePlugin) {
+ if (empty($updatePlugin['currentVersion'])) {
+ unset($pluginsHavingUpdate[$key]);
+ }
+ }
+
+ return $pluginsHavingUpdate;
+ }
+
+ /**
+ * for tests only
+ * @param array $pluginNames
+ * @internal
+ * @ignore
+ */
+ public function setActivatedPluginNames($pluginNames)
+ {
+ $this->activatedPluginNames = $pluginNames;
+ }
+
+ private function isPluginActivated($pluginName)
+ {
+ if (in_array($pluginName, $this->activatedPluginNames)) {
+ return true;
+ }
+
+ return $this->pluginManager->isPluginActivated($pluginName);
+ }
+
+ private function isPluginInstalled($pluginName)
+ {
+ if (in_array($pluginName, $this->activatedPluginNames)) {
+ return true;
+ }
+
+ return $this->pluginManager->isPluginInstalled($pluginName);
+ }
+
+ private function enrichPluginInformation($plugin)
+ {
+ if (empty($plugin)) {
+ return $plugin;
+ }
+
+ $plugin['isInstalled'] = $this->isPluginInstalled($plugin['name']);
+ $plugin['isActivated'] = $this->isPluginActivated($plugin['name']);
+ $plugin['isInvalid'] = $this->pluginManager->isPluginThirdPartyAndBogus($plugin['name']);
+ $plugin['canBeUpdated'] = $plugin['isInstalled'] && $this->hasPluginUpdate($plugin);
+ $plugin['lastUpdated'] = $this->toShortDate($plugin['lastUpdated']);
+ $plugin['hasExceededLicense'] = !empty($plugin['isInstalled']) && !empty($plugin['shop']) && empty($plugin['isFree']) && empty($plugin['isDownloadable']) && !empty($plugin['consumer']['license']['isValid']) && !empty($plugin['consumer']['license']['isExceeded']);
+ $plugin['isMissingLicense'] = !empty($plugin['isInstalled']) && !empty($plugin['shop']) && empty($plugin['isFree']) && empty($plugin['isDownloadable']) && empty($plugin['consumer']['license']);
+
+ if (!empty($plugin['owner'])
+ && strtolower($plugin['owner']) === 'piwikpro'
+ && !empty($plugin['homepage'])
+ && strpos($plugin['homepage'], 'pk_campaign') === false) {
+ $plugin['homepage'] = $this->advertising->addPromoCampaignParametersToUrl($plugin['homepage'], Advertising::CAMPAIGN_NAME_PROFESSIONAL_SERVICES, 'Marketplace', $plugin['name']);
+ }
+
+ if ($plugin['canBeUpdated']) {
+ $pluginUpdate = $this->getPluginUpdateInformation($plugin);
+ $plugin['repositoryChangelogUrl'] = $pluginUpdate['repositoryChangelogUrl'];
+ $plugin['currentVersion'] = $pluginUpdate['currentVersion'];
+ }
+
+ if (!empty($plugin['activity']['lastCommitDate'])
+ && false === strpos($plugin['activity']['lastCommitDate'], '0000')
+ && false === strpos($plugin['activity']['lastCommitDate'], '1970')) {
+ $plugin['activity']['lastCommitDate'] = $this->toLongDate($plugin['activity']['lastCommitDate']);
+ } else {
+ $plugin['activity']['lastCommitDate'] = null;
+ }
+
+ if (!empty($plugin['versions'])) {
+ foreach ($plugin['versions'] as $index => $version) {
+ $plugin['versions'][$index]['release'] = $this->toLongDate($version['release']);
+ }
+ }
+
+ $plugin = $this->addMissingRequirements($plugin);
+
+ return $plugin;
+ }
+
+ private function toLongDate($date)
+ {
+ if (!empty($date)) {
+ $date = Date::factory($date)->getLocalized(Date::DATE_FORMAT_LONG);
+ }
+
+ return $date;
+ }
+
+ private function toShortDate($date)
+ {
+ if (!empty($date)) {
+ $date = Date::factory($date)->getLocalized(Date::DATE_FORMAT_SHORT);
+ }
+
+ return $date;
+ }
+
+ /**
+ * @param $plugin
+ */
+ private function addMissingRequirements($plugin)
+ {
+ $plugin['missingRequirements'] = array();
+
+ if (empty($plugin['versions']) || !is_array($plugin['versions'])) {
+ return $plugin;
+ }
+
+ $latestVersion = $plugin['versions'][count($plugin['versions']) - 1];
+
+ if (empty($latestVersion['requires'])) {
+ return $plugin;
+ }
+
+ $requires = $latestVersion['requires'];
+
+ $dependency = new PluginDependency();
+ $plugin['missingRequirements'] = $dependency->getMissingDependencies($requires);
+
+ return $plugin;
+ }
+}
diff --git a/plugins/Marketplace/Plugins/InvalidLicenses.php b/plugins/Marketplace/Plugins/InvalidLicenses.php
new file mode 100644
index 0000000000..1a0a198f67
--- /dev/null
+++ b/plugins/Marketplace/Plugins/InvalidLicenses.php
@@ -0,0 +1,238 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Marketplace\Plugins;
+
+use Piwik\Cache;
+use Piwik\Piwik;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Plugins;
+use Piwik\Translation\Translator;
+use Piwik\Url;
+
+/**
+ *
+ */
+class InvalidLicenses
+{
+ /**
+ * @var Client
+ */
+ private $client;
+
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @var Translator
+ */
+ private $translator;
+
+ /**
+ * @var Cache\Eager
+ */
+ private $cache;
+
+ /**
+ * @var array
+ */
+ private $activatedPluginNames = array();
+
+ private $plugins;
+
+ private $cacheKey = 'Marketplace_ExpiredPlugins';
+
+ public function __construct(Client $client, Cache\Eager $cache, Translator $translator, Plugins $plugins)
+ {
+ $this->client = $client;
+ $this->translator = $translator;
+ $this->pluginManager = Plugin\Manager::getInstance();
+ $this->cache = $cache;
+ $this->plugins = $plugins;
+ }
+
+ public function getPluginNamesOfInvalidLicenses()
+ {
+ // it is very important this is cached, otherwise performance may decrease a lot. Eager cache is currently
+ // cached for 12 hours. In case we lower ttl for eager cache it might be worth considering to change to another
+ // cache
+ if ($this->cache->contains($this->cacheKey)) {
+ $expiredPlugins = $this->cache->fetch($this->cacheKey);
+ } else {
+ $expiredPlugins = $this->getPluginNamesToExpireInCaseLicenseIsInvalid();
+ $this->cache->save($this->cacheKey, $expiredPlugins);
+ }
+
+ return $expiredPlugins;
+ }
+
+ public function clearCache()
+ {
+ $this->cache->delete($this->cacheKey);
+ }
+
+ public function getMessageExceededLicenses()
+ {
+ $plugins = $this->getPluginNamesOfInvalidLicenses();
+
+ if (empty($plugins['exceeded'])) {
+ return;
+ }
+
+ $plugins = '<strong>' . implode('</strong>, <strong>', $plugins['exceeded']) . '</strong>';
+ $loginUrl = $this->getLoginLink();
+ $loginUrlEnd = '';
+ if (!empty($loginUrl)) {
+ $loginUrlEnd = '</a>';
+ }
+
+ $message = $this->translator->translate('Marketplace_LicenseExceededDescription', array($plugins, '<br/>', "<strong>" . $loginUrl, $loginUrlEnd . "</strong>"));
+
+ if (Piwik::hasUserSuperUserAccess()) {
+ $message .= ' ' . $this->getSubscritionSummaryMessage();
+ }
+
+ return $message;
+ }
+
+ public function getMessageNoLicense()
+ {
+ $plugins = $this->getPluginNamesOfInvalidLicenses();
+
+ if (empty($plugins['noLicense'])) {
+ return;
+ }
+
+ $plugins = '<strong>' . implode('</strong>, <strong>', $plugins['noLicense']) . '</strong>';
+ $loginUrl = $this->getLoginLink();
+ $loginUrlEnd = '';
+ if (!empty($loginUrl)) {
+ $loginUrlEnd = '</a>';
+ }
+
+ $message = $this->translator->translate('Marketplace_LicenseMissingDescription', array($plugins, '<br/>', "<strong>" . $loginUrl, $loginUrlEnd. "</strong>"));
+
+ if (Piwik::hasUserSuperUserAccess()) {
+ $message .= ' ' . $this->getSubscritionSummaryMessage();
+ }
+
+ return $message;
+ }
+
+ public function getMessageExpiredLicenses()
+ {
+ $plugins = $this->getPluginNamesOfInvalidLicenses();
+
+ if (empty($plugins['expired'])) {
+ return;
+ }
+
+ $plugins = '<strong>' . implode('</strong>, <strong>', $plugins['expired']) . '</strong>';
+ $loginUrl = $this->getLoginLink();
+ $loginUrlEnd = '';
+ if (!empty($loginUrl)) {
+ $loginUrlEnd = '</a>';
+ }
+
+ $message = $this->translator->translate('Marketplace_LicenseExpiredDescription', array($plugins, '<br/>', "<strong>" . $loginUrl, $loginUrlEnd . "</strong>"));
+
+ if (Piwik::hasUserSuperUserAccess()) {
+ $message .= ' ' . $this->getSubscritionSummaryMessage();
+ }
+
+ return $message;
+ }
+
+ private function getLoginLink()
+ {
+ $info = $this->client->getInfo();
+
+ if (empty($info['loginUrl'])) {
+ return '';
+ }
+
+ return '<a href="' . $info['loginUrl'] . '" target="_blank" rel="noreferrer">';
+ }
+
+ private function getSubscritionSummaryMessage()
+ {
+ $url = Url::getCurrentQueryStringWithParametersModified(array(
+ 'module' => 'Marketplace', 'action' => 'subscriptionOverview'
+ ));
+
+ $link = '<a href="' . $url . '">';
+
+ return "<br/>" . $this->translator->translate('Marketplace_ViewSubscriptionsSummary', array($link, '</a>'));
+ }
+
+ private function getPluginNamesToExpireInCaseLicenseIsInvalid()
+ {
+ $pluginNames = array(
+ 'exceeded' => array(),
+ 'expired' => array(),
+ 'noLicense' => array()
+ );
+
+ try {
+ $paidPlugins = $this->plugins->getAllPaidPlugins();
+ } catch (\Exception $e) {
+ return $pluginNames;
+ }
+
+ if (!empty($paidPlugins)) {
+ foreach ($paidPlugins as $plugin) {
+ $pluginName = $plugin['name'];
+ if ($this->isPluginActivated($pluginName)) {
+ if (empty($plugin['consumer']['license'])) {
+ $pluginNames['noLicense'][] = $pluginName;
+ } elseif (!empty($plugin['consumer']['license']['isExceeded'])) {
+ $pluginNames['exceeded'][] = $pluginName;
+ } elseif (isset($plugin['consumer']['license']['isValid'])
+ && empty($plugin['consumer']['license']['isValid'])) {
+ $pluginNames['expired'][] = $pluginName;
+ }
+ }
+ }
+ }
+
+ return $pluginNames;
+ }
+
+ /**
+ * for tests only
+ * @param array $pluginNames
+ * @internal
+ * @ignore
+ */
+ public function setActivatedPluginNames($pluginNames)
+ {
+ $this->activatedPluginNames = $pluginNames;
+ }
+
+ protected function isPluginInstalled($pluginName)
+ {
+ if (in_array($pluginName, $this->activatedPluginNames)) {
+ return true;
+ }
+
+ return $this->pluginManager->isPluginInstalled($pluginName);
+ }
+
+ protected function isPluginActivated($pluginName)
+ {
+ if (in_array($pluginName, $this->activatedPluginNames)) {
+ return true;
+ }
+
+ return $this->pluginManager->isPluginActivated($pluginName);
+ }
+
+}
diff --git a/plugins/CorePluginsAdmin/Tasks.php b/plugins/Marketplace/Tasks.php
index 8354694e3b..81d27d4f62 100644
--- a/plugins/CorePluginsAdmin/Tasks.php
+++ b/plugins/Marketplace/Tasks.php
@@ -6,7 +6,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\CorePluginsAdmin;
+namespace Piwik\Plugins\Marketplace;
class Tasks extends \Piwik\Plugin\Tasks
{
@@ -15,24 +15,26 @@ class Tasks extends \Piwik\Plugin\Tasks
*/
private $updateCommunication;
- public function __construct(UpdateCommunication $updateCommunication)
+ /**
+ * @var Api\Client
+ */
+ private $api;
+
+ public function __construct(UpdateCommunication $updateCommunication, Api\Client $api)
{
$this->updateCommunication = $updateCommunication;
+ $this->api = $api;
}
public function schedule()
{
$this->daily('clearAllCacheEntries', null, self::LOWEST_PRIORITY);
-
- if (CorePluginsAdmin::isMarketplaceEnabled()) {
- $this->daily('sendNotificationIfUpdatesAvailable', null, self::LOWEST_PRIORITY);
- }
+ $this->daily('sendNotificationIfUpdatesAvailable', null, self::LOWEST_PRIORITY);
}
public function clearAllCacheEntries()
{
- $marketplace = new MarketplaceApiClient();
- $marketplace->clearAllCacheEntries();
+ $this->api->clearAllCacheEntries();
}
public function sendNotificationIfUpdatesAvailable()
diff --git a/plugins/CorePluginsAdmin/UpdateCommunication.php b/plugins/Marketplace/UpdateCommunication.php
index da9f379324..efebfa899b 100644
--- a/plugins/CorePluginsAdmin/UpdateCommunication.php
+++ b/plugins/Marketplace/UpdateCommunication.php
@@ -6,9 +6,10 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\CorePluginsAdmin;
+namespace Piwik\Plugins\Marketplace;
use Piwik\Config;
+use Piwik\Container\StaticContainer;
use Piwik\Mail;
use Piwik\Option;
use Piwik\Piwik;
@@ -56,7 +57,7 @@ class UpdateCommunication
{
$isEnabled = Config::getInstance()->General['enable_update_communication'];
- return CorePluginsAdmin::isMarketplaceEnabled() && !empty($isEnabled);
+ return Marketplace::isMarketplaceEnabled() && !empty($isEnabled);
}
/**
@@ -164,13 +165,10 @@ class UpdateCommunication
protected function getPluginsHavingUpdate()
{
- $marketplace = new Marketplace();
- $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false);
- $themesHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = true);
+ $marketplace = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins');
+ $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate();
- $plugins = array_merge($pluginsHavingUpdate, $themesHavingUpdate);
-
- return $plugins;
+ return $pluginsHavingUpdate;
}
protected function buildNotificationMessage($pluginsToBeNotified, $hasThemeUpdate, $hasPluginUpdate)
diff --git a/plugins/CorePluginsAdmin/Widgets/GetNewPlugins.php b/plugins/Marketplace/Widgets/GetNewPlugins.php
index a45b35e0b6..6079c1a8e8 100644
--- a/plugins/CorePluginsAdmin/Widgets/GetNewPlugins.php
+++ b/plugins/Marketplace/Widgets/GetNewPlugins.php
@@ -6,22 +6,22 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
-namespace Piwik\Plugins\CorePluginsAdmin\Widgets;
+namespace Piwik\Plugins\Marketplace\Widgets;
use Piwik\Common;
-use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Input\Sort;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
class GetNewPlugins extends Widget
{
/**
- * @var MarketplaceApiClient
+ * @var Client
*/
private $marketplaceApiClient;
- public function __construct(MarketplaceApiClient $marketplaceApiClient)
+ public function __construct(Client $marketplaceApiClient)
{
$this->marketplaceApiClient = $marketplaceApiClient;
}
@@ -29,9 +29,6 @@ class GetNewPlugins extends Widget
public static function configure(WidgetConfig $config)
{
$config->setCategoryId('About Piwik');
- // TODO it actually shows "recently updated plugins currently". Need a new sort filter in the Marketplace
- // TODO when decided whether to show new plugins or recently updated plugins add translation key
- // we want to show new plugins likely (when changed Marketplace to support actually "newest" plugins)
$config->setName('Latest Marketplace Updates');
$config->setOrder(19);
}
@@ -46,7 +43,7 @@ class GetNewPlugins extends Widget
$template = 'getNewPlugins';
}
- $plugins = $this->marketplaceApiClient->searchForPlugins('', '', 'newest');
+ $plugins = $this->marketplaceApiClient->searchForPlugins('', '', Sort::METHOD_LAST_UPDATED, '');
return $this->renderTemplate($template, array(
'plugins' => array_splice($plugins, 0, 3)
diff --git a/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js b/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js
new file mode 100644
index 0000000000..15a3cfa6cc
--- /dev/null
+++ b/plugins/Marketplace/angularjs/licensekey/licensekey.controller.js
@@ -0,0 +1,63 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+(function () {
+ angular.module('piwikApp').controller('PiwikMarketplaceLicenseController', PiwikMarketplaceLicenseController);
+
+ PiwikMarketplaceLicenseController.$inject = ['piwik', 'piwikApi'];
+
+ function PiwikMarketplaceLicenseController(piwik, piwikApi) {
+
+ this.licenseKey = '';
+ this.enableUpdate = false;
+ this.isUpdating = false;
+
+ var self = this;
+
+ function updateLicenseKey(action, licenseKey, onSuccessMessage)
+ {
+
+ piwikApi.withTokenInUrl();
+ piwikApi.post({
+ module: 'API',
+ method: 'Marketplace.' + action,
+ format: 'JSON'
+ }, {licenseKey: licenseKey}).then(function (response) {
+ self.isUpdating = false;
+
+ if (response && response.value) {
+ var UI = require('piwik/UI');
+ var notification = new UI.Notification();
+ notification.show(onSuccessMessage, {context: 'success'});
+
+ piwik.helper.redirect();
+ }
+ }, function () {
+ self.isUpdating = false;
+ });
+ }
+
+ this.updatedLicenseKey = function () {
+ this.enableUpdate = !!this.licenseKey;
+ };
+
+ this.updateLicense = function () {
+ this.enableUpdate = false;
+ this.isUpdating = true;
+
+ updateLicenseKey('saveLicenseKey', this.licenseKey, _pk_translate('Marketplace_LicenseKeyActivatedSuccess'));
+ };
+
+ this.removeLicense = function () {
+ piwik.helper.modalConfirm('#confirmRemoveLicense', {yes: function () {
+ self.enableUpdate = false;
+ self.isUpdating = true;
+ updateLicenseKey('deleteLicenseKey', '', _pk_translate('Marketplace_LicenseKeyDeletedSuccess'));
+ }});
+ };
+
+ }
+})(); \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js b/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js
index 0f55e6da31..0f55e6da31 100644
--- a/plugins/CorePluginsAdmin/angularjs/marketplace/marketplace.controller.js
+++ b/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js
diff --git a/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js b/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js
new file mode 100644
index 0000000000..96812865d6
--- /dev/null
+++ b/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js
@@ -0,0 +1,132 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+/**
+ * Usage:
+ * <div piwik-marketplace>
+ */
+(function () {
+
+ angular.module('piwikApp').directive('piwikMarketplace', piwikMarketplace);
+
+ piwikMarketplace.$inject = ['piwik', '$timeout'];
+
+ function piwikMarketplace(piwik, $timeout){
+
+ return {
+ restrict: 'A',
+ compile: function (element, attrs) {
+
+ return function (scope, element, attrs) {
+
+ $timeout(function () {
+
+
+ $('.installAllPaidPlugins').click(function (event) {
+ event.preventDefault();
+
+ piwikHelper.modalConfirm('#installAllPaidPluginsAtOnce');
+ });
+
+ $('.uploadPlugin').click(function (event) {
+ event.preventDefault();
+
+ piwikHelper.modalConfirm('#installPluginByUpload', {});
+ });
+
+
+ $('#uploadPluginForm').submit(function (event) {
+
+ var $zipFile = $('[name=pluginZip]');
+ var fileName = $zipFile.val();
+
+ if (!fileName || '.zip' != fileName.slice(-4)) {
+ event.preventDefault();
+ alert(_pk_translate('CorePluginsAdmin_NoZipFileSelected'));
+ }
+ });
+
+ // Keeps the plugin descriptions the same height
+ $('.marketplace .plugin .description').dotdotdot({
+ after: 'a.more',
+ watch: 'window'
+ });
+
+ function syncMaxHeight2 (selector) {
+
+ if (!selector) {
+ return;
+ }
+
+ var $nodes = $(selector);
+
+ if (!$nodes || !$nodes.length) {
+ return;
+ }
+
+ var maxh3 = null;
+ var maxMeta = null;
+ var maxFooter = null;
+ var nodesToUpdate = [];
+ var lastTop = 0;
+ $nodes.each(function (index, node) {
+ var $node = $(node);
+ var top = $node.offset().top;
+
+ if (lastTop !== top) {
+ nodesToUpdate = [];
+ lastTop = top;
+ maxh3 = null;
+ maxMeta = null;
+ maxFooter = null;
+ }
+
+ nodesToUpdate.push($node);
+
+ var heightH3 = $node.find('h3').height();
+ var heightMeta = $node.find('.metadata').height();
+ var heightFooter = $node.find('.footer').height();
+
+ if (!maxh3) {
+ maxh3 = heightH3;
+ } else if (maxh3 < heightH3) {
+ maxh3 = heightH3;
+ }
+
+ if (!maxMeta) {
+ maxMeta = heightMeta;
+ } else if (maxMeta < heightMeta) {
+ maxMeta = heightMeta;
+ }
+
+ if (!maxFooter) {
+ maxFooter = heightFooter;
+ } else if (maxFooter < heightFooter) {
+ maxFooter = heightFooter;
+ }
+
+ $.each(nodesToUpdate, function (index, $node) {
+ if (maxh3) {
+ $node.find('h3').height(maxh3 + 'px');
+ }
+ if (maxMeta) {
+ $node.find('.metadata').height(maxMeta + 'px');
+ }
+ if (maxFooter) {
+ $node.find('.footer').height(maxFooter + 'px');
+ }
+ });
+ });
+ }
+ syncMaxHeight2('.marketplace .plugin');
+
+ });
+ };
+ }
+ };
+ }
+})(); \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js b/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
index 26c38c6443..aeaacea5b7 100644
--- a/plugins/CorePluginsAdmin/angularjs/plugins/plugin-name.directive.js
+++ b/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
@@ -20,7 +20,7 @@
pluginName = value.substr(0, value.indexOf('!'));
}
- var url = 'module=CorePluginsAdmin&action=pluginDetails&pluginName=' + encodeURIComponent(pluginName);
+ var url = 'module=Marketplace&action=pluginDetails&pluginName=' + encodeURIComponent(pluginName);
if (activeTab) {
url += '&activeTab=' + encodeURIComponent(activeTab);
diff --git a/plugins/Marketplace/config/config.php b/plugins/Marketplace/config/config.php
new file mode 100644
index 0000000000..ffab9b07b4
--- /dev/null
+++ b/plugins/Marketplace/config/config.php
@@ -0,0 +1,32 @@
+<?php
+
+use Interop\Container\ContainerInterface;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Plugins\Marketplace\LicenseKey;
+
+return array(
+ 'MarketplaceEndpoint' => function (ContainerInterface $c) {
+ $domain = 'http://plugins.piwik.org';
+ $updater = $c->get('Piwik\Plugins\CoreUpdater\Updater');
+
+ if ($updater->isUpdatingOverHttps()) {
+ $domain = str_replace('http://', 'https://', $domain);
+ }
+
+ return $domain;
+ },
+ 'Piwik\Plugins\Marketplace\Api\Service' => function (ContainerInterface $c) {
+ /** @var \Piwik\Plugins\Marketplace\Api\Service $previous */
+
+ $domain = $c->get('MarketplaceEndpoint');
+
+ $service = new Service($domain);
+
+ $key = new LicenseKey();
+ $accessToken = $key->get();
+
+ $service->authenticate($accessToken);
+
+ return $service;
+ }
+); \ No newline at end of file
diff --git a/plugins/Marketplace/config/test.php b/plugins/Marketplace/config/test.php
new file mode 100644
index 0000000000..8c21be15f8
--- /dev/null
+++ b/plugins/Marketplace/config/test.php
@@ -0,0 +1,144 @@
+<?php
+
+use Interop\Container\ContainerInterface;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer as MockConsumer;
+use Piwik\Plugins\Marketplace\LicenseKey;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as MockService;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+
+return array(
+ 'MarketplaceEndpoint' => function (ContainerInterface $c) {
+ // if you wonder why this here is configured here again, and the same as in `config.php`,
+ // it is because someone might have overwritten MarketplaceEndpoit in local config.php and we want
+ // to make sure system tests of marketplace are ran against plugins.piwik.org
+ $domain = 'http://plugins.piwik.org';
+ $updater = $c->get('Piwik\Plugins\CoreUpdater\Updater');
+
+ if ($updater->isUpdatingOverHttps()) {
+ $domain = str_replace('http://', 'https://', $domain);
+ }
+
+ return $domain;
+ },
+ 'Piwik\Plugins\Marketplace\Consumer' => function (ContainerInterface $c) {
+ $consumerTest = $c->get('test.vars.consumer');
+ $licenseKey = new LicenseKey();
+
+ if ($consumerTest == 'validLicense') {
+ $consumer = MockConsumer::buildValidLicense();
+ $licenseKey->set('123456789');
+ } elseif ($consumerTest == 'exceededLicense') {
+ $consumer = MockConsumer::buildExceededLicense();
+ $licenseKey->set('1234567891');
+ } elseif ($consumerTest == 'expiredLicense') {
+ $consumer = MockConsumer::buildExpiredLicense();
+ $licenseKey->set('1234567892');
+ } else {
+ $consumer = MockConsumer::buildNoLicense();
+ $licenseKey->set(null);
+ }
+
+ return $consumer;
+ },
+ 'Piwik\Plugins\Marketplace\Plugins' => DI\decorate(function ($previous, ContainerInterface $c) {
+ /** @var \Piwik\Plugins\Marketplace\Plugins $previous */
+ $previous->setPluginsHavingUpdateCache(null);
+
+ $pluginNames = $c->get('test.vars.mockMarketplaceAssumePluginNamesActivated');
+
+ if (!empty($pluginNames)) {
+ /** @var \Piwik\Plugins\Marketplace\Plugins $previous */
+ $previous->setActivatedPluginNames($pluginNames);
+ }
+
+ return $previous;
+ }),
+ 'Piwik\Plugins\Marketplace\Api\Client' => DI\decorate(function ($previous) {
+ /** @var \Piwik\Plugins\Marketplace\Api\Client $previous */
+ $previous->clearAllCacheEntries();
+
+ return $previous;
+ }),
+ 'Piwik\Plugins\Marketplace\Plugins\InvalidLicenses' => DI\decorate(function ($previous, ContainerInterface $c) {
+
+ $pluginNames = $c->get('test.vars.mockMarketplaceAssumePluginNamesActivated');
+
+ if (!empty($pluginNames)) {
+ /** @var \Piwik\Plugins\Marketplace\Plugins\InvalidLicenses $previous */
+ $previous->setActivatedPluginNames($pluginNames);
+ $previous->clearCache();
+ }
+
+ return $previous;
+
+ }),
+ 'Piwik\Plugins\Marketplace\Api\Service' => DI\decorate(function ($previous, ContainerInterface $c) {
+ if (!$c->get('test.vars.mockMarketplaceApiService')) {
+ return $previous;
+ }
+
+ // for ui tests
+ $service = new MockService();
+
+ $key = new LicenseKey();
+ $accessToken = $key->get();
+
+ $service->authenticate($accessToken);
+
+ function removeReviewsUrl($content)
+ {
+ $content = json_decode($content, true);
+ if (!empty($content['shop']['reviews']['embedUrl'])) {
+ $content['shop']['reviews']['embedUrl'] = '';
+ }
+ return json_encode($content);
+ }
+
+ $isExceededUser = $c->get('test.vars.consumer') === 'exceededLicense';
+ $isExpiredUser = $c->get('test.vars.consumer') === 'expiredLicense';
+ $isValidUser = $c->get('test.vars.consumer') === 'validLicense';
+
+ $service->setOnDownloadCallback(function ($action, $params) use ($service, $isExceededUser, $isValidUser, $isExpiredUser) {
+ if ($action === 'info') {
+ return $service->getFixtureContent('v2.0_info.json');
+ } elseif ($action === 'consumer' && $service->getAccessToken() === 'valid') {
+ return $service->getFixtureContent('v2.0_consumer-access_token-consumer2_paid1.json');
+ } elseif ($action === 'consumer/validate' && $service->getAccessToken() === 'valid') {
+ return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer2_paid1.json');
+ } elseif ($action === 'consumer' && $service->getAccessToken() === 'invalid') {
+ return $service->getFixtureContent('v2.0_consumer-access_token-notexistingtoken.json');
+ } elseif ($action === 'consumer/validate' && $service->getAccessToken() === 'invalid') {
+ return $service->getFixtureContent('v2.0_consumer_validate-access_token-notexistingtoken.json');
+ } elseif ($action === 'plugins' && empty($params['purchase_type']) && empty($params['query'])) {
+ return $service->getFixtureContent('v2.0_plugins.json');
+ } elseif ($action === 'plugins' && $isExceededUser && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json');
+ } elseif ($action === 'plugins' && $isExpiredUser && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json');
+ } elseif ($action === 'plugins' && ($service->hasAccessToken() || $isValidUser) && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json');
+ } elseif ($action === 'plugins' && !$service->hasAccessToken() && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID && empty($params['query'])) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json');
+ } elseif ($action === 'themes' && empty($params['purchase_type']) && empty($params['query'])) {
+ return $service->getFixtureContent('v2.0_themes.json');
+ } elseif ($action === 'plugins/Barometer/info') {
+ return $service->getFixtureContent('v2.0_plugins_Barometer_info.json');
+ } elseif ($action === 'plugins/TreemapVisualization/info') {
+ return $service->getFixtureContent('v2.0_plugins_TreemapVisualization_info.json');
+ } elseif ($action === 'plugins/PaidPlugin1/info' && $service->hasAccessToken() && $isExceededUser) {
+ $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json');
+ return removeReviewsUrl($content);
+ } elseif ($action === 'plugins/PaidPlugin1/info' && $service->hasAccessToken()) {
+ $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json');
+ return removeReviewsUrl($content);
+ } elseif ($action === 'plugins/PaidPlugin1/info' && !$service->hasAccessToken()) {
+ $content = $service->getFixtureContent('v2.0_plugins_PaidPlugin1_info.json');
+ return removeReviewsUrl($content);
+ } elseif ($action === 'plugins/checkUpdates') {
+ return $service->getFixtureContent('v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json');
+ }
+ });
+
+ return $service;
+ })
+); \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/images/rating_important.png b/plugins/Marketplace/images/rating_important.png
index 662df523a8..662df523a8 100755
--- a/plugins/CorePluginsAdmin/images/rating_important.png
+++ b/plugins/Marketplace/images/rating_important.png
Binary files differ
diff --git a/plugins/Marketplace/lang/en.json b/plugins/Marketplace/lang/en.json
new file mode 100644
index 0000000000..1278adf2c2
--- /dev/null
+++ b/plugins/Marketplace/lang/en.json
@@ -0,0 +1,112 @@
+{
+ "Marketplace": {
+ "ActivateLicenseKey": "Activate",
+ "ActionActivatePlugin": "Activate plugin",
+ "ActionActivateTheme": "Activate theme",
+ "ActionInstall": "Install",
+ "AddToCart": "Add to cart",
+ "AllowedUploadFormats": "You may upload a plugin or theme in .zip format via this page.",
+ "Authors": "Authors",
+ "BackToMarketplace": "Back to Marketplace",
+ "BrowseMarketplace": "Browse Marketplace",
+ "ByXDevelopers": "by %s developers",
+ "CannotInstall": "Cannot install",
+ "CannotUpdate": "Cannot update",
+ "ClickToCompletePurchase": "Click to complete purchase.",
+ "CurrentNumPiwikUsers": "Your Piwik currently has %1$s registered users.",
+ "ConfirmRemoveLicense": "Are you sure you want to remove your license key? You will no longer receive any updates for any of your purchased plugins.",
+ "Developer": "Developer",
+ "DevelopersLearnHowToDevelopPlugins": "Developers: Learn how you can extend and customize Piwik by %1$sdeveloping plugins or themes%2$s.",
+ "Marketplace": "Marketplace",
+ "PaidPlugins": "Premium Features",
+ "FeaturedPlugin": "Featured plugin",
+ "InstallingNewPluginViaMarketplaceOrUpload": "You may automatically install %1$s from the Marketplace or %2$supload a %3$s%4$s in .zip format.",
+ "InstallingPlugin": "Installing %s",
+ "InstallPurchasedPlugins": "Install purchased plugins",
+ "LastCommitTime": "(last commit %s)",
+ "LastUpdated": "Last Updated",
+ "License": "License",
+ "LicenseKey": "License key",
+ "LicenseKeyActivatedSuccess": "License key successfully activated!",
+ "LicenseKeyDeletedSuccess": "License key successfully deleted.",
+ "Exceeded": "Exceeded",
+ "LicenseMissing": "License missing",
+ "LicenseMissingDescription": "You are using the following plugins without a license: %1$s. %2$sTo resolve this issue either update your license key, %3$sget a subscription now%4$s or deactivate the plugin.",
+ "PluginLicenseMissingDescription": "You are not allowed to download this plugin because there is no license for this plugin. To resolve this issue either update your license key, get a subscription or uninstall the plugin.",
+ "LicenseExceeded": "License exceeded",
+ "LicenseExceededDescription": "The licenses for the following plugins are no longer valid as the number of authorized users for the license is exceeded: %1$s. %2$sYou will not be able to download updates for these plugins. To resolve this issue either delete some users or %3$supgrade the subscription now%4$s.",
+ "PluginLicenseExceededDescription": "You are not allowed to download this plugin. The license for this plugin is no longer valid as the number of authorized users for the license is exceeded. To resolve this issue either delete some users or upgrade your subscription now.",
+ "LicenseExpired": "License expired",
+ "LicenseExpiredDescription": "The licenses for the following plugins are expired: %1$s. %2$sYou will no longer receive any updates for these plugins. To resolve this issue either %3$srenew your subscription now%4$s, or deactivate the plugin if you no longer use it.",
+ "LicenseRenewsNextPaymentDate": "Renews at next payment date",
+ "UpgradeSubscription": "Upgrade Subscription",
+ "ViewSubscriptionsSummary": "%1$sView your plugin subscriptions.%2$s",
+ "ViewSubscriptions": "View subscriptions",
+ "ExceptionLinceseKeyIsExpired": "This license key is expired.",
+ "ExceptionLinceseKeyIsNotValid": "This license key is not valid.",
+ "LicenseKeyIsValidShort": "License key is valid!",
+ "RemoveLicenseKey": "Remove license key",
+ "InstallAllPurchasedPlugins": "Install all purchased plugins at once",
+ "InstallAllPurchasedPluginsAction": "Install and activate %d purchased plugins",
+ "InstallThesePlugins": "This will install and activate the following plugins:",
+ "AllPaidPluginsInstalledAndActivated": "All paid plugins were successfully installed and activated.",
+ "OnlySomePaidPluginsInstalledAndActivated": "Some paid plugins were not installed successfully.",
+ "NewVersion": "new version",
+ "NotAllowedToBrowseMarketplacePlugins": "You can browse the list of plugins that can be installed to customize or extend your Piwik platform. Please contact your administrator if you need any of these installed.",
+ "NotAllowedToBrowseMarketplaceThemes": "You can browse the list of themes that can be installed to customize the appearance of the Piwik platform. Please contact your administrator to get any of these installed for you.",
+ "NoPluginsFound": "No plugins found",
+ "NoThemesFound": "No themes found",
+ "NoSubscriptionsFound": "No subscriptions found",
+ "NumDownloadsLatestVersion": "Latest version: %s Downloads",
+ "OverviewPluginSubscriptions": "Overview of your plugin subscriptions",
+ "OverviewPluginSubscriptionsMissingLicense": "You do not have a license key set. If you have purchased a plugin subscription, go to the %1$sMarketplace%2$s and enter your license key.",
+ "OverviewPluginSubscriptionsAllDetails": "To see all details, or to change a subscription, log into your account.",
+ "OverviewPluginSubscriptionsMissingInfo": "It may be possible that a subscription is missing, for example if a payment is not through yet. In such a case try again in a few hours, or contact the Piwik team.",
+ "NoValidSubscriptionNoUpdates": "Once a subscription is expired you will no longer receive any updates for this plugin.",
+ "PluginSubscriptionsList": "This is a list of subscriptions associated with your license key.",
+ "PaidPluginsNoLicenseKeyIntro": "If you have purchased a %1$spremium paid plugin%2$s, please insert the received licence key below.",
+ "PaidPluginsWithLicenseKeyIntro": "A valid license key has been set up. For security reasons we do not show the license key here. If you have lost your license key please contact the Piwik team.",
+ "PaidPluginsNoLicenseKeyIntroNoSuperUserAccess": "In case you have purchased a %1$spremium paid plugin%2$s on the Marketplace please ask a user with Super User access to add the license key.",
+ "PluginDescription": "Extend and expand the functionality of Piwik via the Marketplace by downloading plugins and themes.",
+ "PluginKeywords": "Keywords",
+ "PluginUpdateAvailable": "You are using version %1$s and a new version %2$s is available.",
+ "PluginVersionInfo": "%1$s from %2$s",
+ "PluginWebsite": "Plugin Website",
+ "PriceExclTax": "%1$s %2$s excl. tax.",
+ "PriceFromPerPeriod": "From %1$s / %2$s",
+ "Reviews": "Reviews",
+ "ShownPriceIsExclTax": "Shown price is excl. tax.",
+ "Screenshots": "Screenshots",
+ "SortByNewest": "Newest",
+ "SortByAlpha": "Alpha",
+ "SortByLastUpdated": "Last updated",
+ "SortByPopular": "Popular",
+ "StepDownloadingPluginFromMarketplace": "Downloading plugin from Marketplace",
+ "StepDownloadingThemeFromMarketplace": "Downloading theme from Marketplace",
+ "StepUnzippingPlugin": "Unzipping plugin",
+ "StepUnzippingTheme": "Unzipping theme",
+ "StepThemeSuccessfullyInstalled": "You have successfully installed the theme %1$s %2$s.",
+ "StepPluginSuccessfullyInstalled": "You have successfully installed the plugin %1$s %2$s.",
+ "StepPluginSuccessfullyUpdated": "You have successfully updated the plugin %1$s %2$s.",
+ "StepReplaceExistingPlugin": "Replacing existing plugin",
+ "StepReplaceExistingTheme": "Replacing existing theme",
+ "StepThemeSuccessfullyUpdated": "You have successfully updated the theme %1$s %2$s.",
+ "SubscriptionType": "Type",
+ "SubscriptionStartDate": "Start date",
+ "SubscriptionEndDate": "End date",
+ "SubscriptionNextPaymentDate": "Next payment date",
+ "SubscriptionInvalid": "This subscription is invalid or expired",
+ "SubscriptionExpiresSoon": "This subscription expires soon",
+ "Support": "Support",
+ "TeaserExtendPiwikByUpload": "Extend Piwik by uploading a ZIP file",
+ "LicenseExceededPossibleCause": "The license is exceeded. There are possibly more users on this Piwik installation than the subscription authorizes.",
+ "Updated": "Updated",
+ "UpdatingPlugin": "Updating %1$s",
+ "UploadZipFile": "Upload ZIP file",
+ "LicenseKeyExpiresSoon": "Your license key expires soon, please contact %1$s.",
+ "LicenseKeyIsExpired": "Your license key is expired, please contact %1$s.",
+ "MultiServerEnvironmentWarning": "You cannot install or update the plugin directly as you are using Piwik on multiple servers. The plugin would be only installed on one server. Instead download the plugin and deploy it manually to all your servers.",
+ "AutoUpdateDisabledWarning": "You cannot install or update the plugin directly as automatic updates are disabled in the config. To enable automatic updates set %1$s in %2$s.",
+ "ViewRepositoryChangelog": "View the changes"
+ }
+} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less b/plugins/Marketplace/stylesheets/marketplace-widget.less
index 3438983825..3438983825 100644
--- a/plugins/CorePluginsAdmin/stylesheets/marketplace-widget.less
+++ b/plugins/Marketplace/stylesheets/marketplace-widget.less
diff --git a/plugins/CorePluginsAdmin/stylesheets/marketplace.less b/plugins/Marketplace/stylesheets/marketplace.less
index 3c1371ffb8..2a4115e60f 100644
--- a/plugins/CorePluginsAdmin/stylesheets/marketplace.less
+++ b/plugins/Marketplace/stylesheets/marketplace.less
@@ -1,8 +1,63 @@
+.subscriptionOverview {
+ .icon-error, .errorMessage {
+ color: #D4291F;
+ }
+
+ .icon-ok {
+ color: #009874;
+ }
+
+ .icon-warning {
+ color: #CA8100;
+ }
+ .subscriptionName,
+ .subscriptionType,
+ .subscriptionStatus {
+ white-space: nowrap;
+ }
+}
+
+.marketplace-paid-intro {
+ .licenseKeyText {
+ min-width: 210px;
+ .form-group {
+ margin-top: 0;
+ }
+ }
+
+ .licenseToolbar {
+ > a, > div:not(.licenseKeyText) {
+ margin-right: 16px;
+ white-space: nowrap;
+ }
+ }
+
+}
+
+#installAllPaidPluginsAtOnce {
+ ul {
+ li {
+ list-style-type: disc;
+ list-style-position: inside;
+ margin-top: 8px;
+ }
+ }
+
+ a.btn {
+ color: #fff;
+ }
+}
+
.marketplace {
- > .row {
+ .marketplaceActions.row,
+ .pluginListContainer.row {
margin: 0 -0.75rem;
}
+ input.btn[disabled] {
+ background-color: @theme-color-brand !important;
+ }
+
.marketplaceActions {
margin-bottom: 0;
}
@@ -22,7 +77,7 @@
.plugin {
h3 {
- word-break: break-all;
+ word-wrap: break-word;
}
text-align: center;
.description {
@@ -40,6 +95,12 @@
max-width: 250px;
width: 100%;
}
+ .footer {
+ .download.plugin-details {
+ padding-left: 0;
+ padding-right: 0;
+ }
+ }
.metadata {
color: @color-silver-l50;
font-size: 95%;
@@ -70,15 +131,24 @@
}
.footer {
padding: 12px 40px;
+
+ .btn-link.plugin-details {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .purchaseable {
+ background-color: #1e93d1;
+ }
}
}
.footer-message {
margin-top:30px;
- font-style: italic;
}
}
+
#installPluginByUpload {
.description {
margin-top: 30px;
@@ -88,4 +158,4 @@
margin-top: 20px;
margin-bottom: 20px;
}
-}
+} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/stylesheets/plugin-details.less b/plugins/Marketplace/stylesheets/plugin-details.less
index 1dee1eb224..445dcc7d21 100644
--- a/plugins/CorePluginsAdmin/stylesheets/plugin-details.less
+++ b/plugins/Marketplace/stylesheets/plugin-details.less
@@ -3,45 +3,44 @@
text-align: left;
line-height: 20px;
- .header {
- .intro {
- width:75%;
- float:left;
- margin-bottom: 8px;
- }
- .actionButton {
- width:25%;
- float:left;
- }
+ > .row > .col {
+ padding-left: 0;
+ padding-right: 0;
}
#pluginDetailsTabs > .col {
padding: 0 16px 0 0;
}
- .content {
- .contentDetails {
- width:75%;
- float:left;
- }
- .metadata {
- width:25%;
- float:left;
- padding-top: 16px;
- }
- }
-
h3, h4, h5, h6 {
- margin: 20px 0px 10px 0px;
+ margin: 20px 0 10px 0;
color: #000000;
}
- p {
+ iframe{
+ width:100%;
+ border: 0;
+ background-image: url('plugins/Morpheus/images/loading-blue.gif');
+ background-repeat: no-repeat;
+ background-position: center;
+ }
+
+ .tab-content ul, .tab-content ol {
+ list-style: initial;
+ padding-left: 20px;
+ }
+
+ p, .tab-content ul, .tab-content li {
text-align: left;
line-height: 20px;
+ list-style: initial;
+ }
+
+ #pluginDetailsTabs {
+ margin-top: 25px;
}
- .content p {
+ .contentDetails p {
margin: 0 0 10px;
}
@@ -49,6 +48,20 @@
padding-right: 25px;
}
+ .variationPicker {
+ margin-top: 0;
+ margin-bottom: 15px;
+ input.select-dropdown {
+ font-size: 15px;
+ }
+ }
+
+ .contentDetails a {
+ color: @theme-color-link;
+ text-decoration: none;
+ }
+
+ .download,
.install {
padding: 11px 19px;
font-size: 17.5px;
@@ -61,6 +74,7 @@
text-decoration: none;
}
+ .download:hover,
.install:hover {
text-decoration: underline;
}
diff --git a/plugins/CorePluginsAdmin/templates/getNewPlugins.twig b/plugins/Marketplace/templates/getNewPlugins.twig
index 0c68e552e3..0c68e552e3 100644
--- a/plugins/CorePluginsAdmin/templates/getNewPlugins.twig
+++ b/plugins/Marketplace/templates/getNewPlugins.twig
diff --git a/plugins/CorePluginsAdmin/templates/getNewPluginsAdmin.twig b/plugins/Marketplace/templates/getNewPluginsAdmin.twig
index b929a48430..b929a48430 100644
--- a/plugins/CorePluginsAdmin/templates/getNewPluginsAdmin.twig
+++ b/plugins/Marketplace/templates/getNewPluginsAdmin.twig
diff --git a/plugins/Marketplace/templates/installPlugin.twig b/plugins/Marketplace/templates/installPlugin.twig
new file mode 100644
index 0000000000..7182ed9d16
--- /dev/null
+++ b/plugins/Marketplace/templates/installPlugin.twig
@@ -0,0 +1,41 @@
+{% extends 'admin.twig' %}
+
+{% block content %}
+
+ <div style="max-width:980px;">
+
+ <h2>{{ 'Marketplace_InstallingPlugin'|translate(plugin.name) }}</h2>
+
+ <div>
+
+ {% if plugin.isTheme %}
+
+ <p>{{ 'Marketplace_StepDownloadingThemeFromMarketplace'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+ <p><strong><a class="btn" href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce, 'redirectTo': 'marketplace'}) }}">{{ 'Marketplace_ActionActivateTheme'|translate }}</a></strong>
+
+ |
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': 'themes'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a></p>
+
+ {% else %}
+
+ <p>{{ 'Marketplace_StepDownloadingPluginFromMarketplace'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+ <p><strong><a class="btn" href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce, 'redirectTo': 'marketplace'}) }}">{{ 'Marketplace_ActionActivatePlugin'|translate }}</a></strong>
+
+ |
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': ''}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a></p>
+
+ {% endif %}
+ </div>
+ </div>
+
+{% endblock %}
diff --git a/plugins/Marketplace/templates/licenseform.twig b/plugins/Marketplace/templates/licenseform.twig
new file mode 100644
index 0000000000..c43a4fd4df
--- /dev/null
+++ b/plugins/Marketplace/templates/licenseform.twig
@@ -0,0 +1,75 @@
+{% set defaultLicenseKeyFields %}
+ <div piwik-field uicontrol="text" name="license_key"
+ class="valign licenseKeyText"
+ full-width="true"
+ ng-model="licenseController.licenseKey"
+ ng-change="licenseController.updatedLicenseKey()"
+ placeholder="{% if isValidConsumer %}{{ 'Marketplace_LicenseKeyIsValidShort'|translate }}{% else %}{{ 'Marketplace_LicenseKey'|translate|e('html_attr') }}{% endif %}">
+ </div>
+ <div piwik-save-button
+ class="valign"
+ onconfirm="licenseController.updateLicense()"
+ disabled="!licenseController.enableUpdate"
+ value="{% if hasLicenseKey %}{{ 'CoreUpdater_UpdateTitle'|translate|e('html_attr') }}{% else %}{{ 'Marketplace_ActivateLicenseKey'|translate|e('html_attr') }}{% endif %}"
+ id="submit_license_key"></div>
+{% endset %}
+
+<div class="marketplace-max-width" ng-controller="PiwikMarketplaceLicenseController as licenseController">
+ <div class="marketplace-paid-intro">
+ {% if isValidConsumer %}
+ {% if isSuperUser %}
+ {{ 'Marketplace_PaidPluginsWithLicenseKeyIntro'|translate('')|raw }}
+ <br/>
+
+ <div class="licenseToolbar valign-wrapper">
+ {{ defaultLicenseKeyFields|raw }}
+
+ <div piwik-save-button
+ class="valign"
+ id="remove_license_key"
+ onconfirm="licenseController.removeLicense()"
+ value="{{ 'Marketplace_RemoveLicenseKey'|translate|e('html_attr') }}"
+ ></div>
+
+ <a href="{{ linkTo({'action': 'subscriptionOverview'}) }}" class="btn valign">
+ {{ 'Marketplace_ViewSubscriptions'|translate }}
+ </a>
+
+ {% if isAutoUpdatePossible and isPluginsAdminEnabled and paidPluginsToInstallAtOnce|length %}
+ <a href="javascript:;" class="btn installAllPaidPlugins valign">
+ {{ 'Marketplace_InstallPurchasedPlugins'|translate }}
+ </a>
+ {% include '@Marketplace/paid-plugins-install-list.twig' %}
+ {% endif %}
+
+ </div>
+
+ <div piwik-activity-indicator loading="licenseController.isUpdating"></div>
+ {% endif %}
+
+ {% else %}
+ {% if isSuperUser %}
+ {{ 'Marketplace_PaidPluginsNoLicenseKeyIntro'|translate("<a target='_blank' href='?module=Proxy&action=redirect&url=https://plugins.piwik.org/premium'>", "</a>")|raw }}
+
+ <br/>
+
+ <div class="licenseToolbar valign-wrapper">
+ {{ defaultLicenseKeyFields|raw }}
+ </div>
+
+ <div piwik-activity-indicator loading="licenseController.isUpdating"></div>
+
+ {% else %}
+ {{ 'Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess'|translate("<a target='_blank' href='?module=Proxy&action=redirect&url=https://plugins.piwik.org/premium'>", "</a>")|raw }}
+ {% endif %}
+
+ {% endif %}
+ </div>
+</div>
+
+
+<div class="ui-confirm" id="confirmRemoveLicense">
+ <h2>{{ 'Marketplace_ConfirmRemoveLicense'|translate }}</h2>
+ <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
+ <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
+</div>
diff --git a/plugins/Marketplace/templates/macros.twig b/plugins/Marketplace/templates/macros.twig
new file mode 100644
index 0000000000..50aa06af8d
--- /dev/null
+++ b/plugins/Marketplace/templates/macros.twig
@@ -0,0 +1,25 @@
+
+{% macro pluginDeveloper(owner) %}
+ {% if 'piwik' == owner %}<img title="Piwik" alt="Piwik" style="padding-bottom:2px;height:11px;" src="plugins/Morpheus/images/logo-marketplace.png"/>{% else %}{{ owner }}{% endif %}
+{% endmacro %}
+
+{% macro featuredIcon(align='') %}
+ <img class="featuredIcon"
+ title="{{ 'Marketplace_FeaturedPlugin'|translate }}"
+ src="plugins/Marketplace/images/rating_important.png"
+ align="{{ align }}" />
+{% endmacro %}
+
+{% macro missingRequirementsPleaseUpdateNotice(plugin) %}
+ {% if plugin.missingRequirements and 0 < plugin.missingRequirements|length %}
+ {% for req in plugin.missingRequirements -%}
+ <div class="alert alert-danger">
+ {% set requirement = req.requirement|capitalize %}
+ {% if 'Php' == requirement %}
+ {% set requirement = 'PHP' %}
+ {% endif %}
+ {{ 'CorePluginsAdmin_MissingRequirementsNotice'|translate(requirement, req.actualVersion, req.requiredVersion) }}
+ </div>
+ {%- endfor %}
+ {% endif %}
+{% endmacro %}
diff --git a/plugins/CorePluginsAdmin/templates/marketplace.twig b/plugins/Marketplace/templates/overview.twig
index 61f46f8cd2..9541ab0a16 100644
--- a/plugins/CorePluginsAdmin/templates/marketplace.twig
+++ b/plugins/Marketplace/templates/overview.twig
@@ -1,7 +1,7 @@
{% extends "admin.twig" %}
{% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
-{% set title %}{{ 'CorePluginsAdmin_Marketplace'|translate }}{% endset %}
+{% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
{% block content %}
@@ -9,48 +9,41 @@
<div piwik-content-intro>
<h2 piwik-enriched-headline feature-name="{{ 'CorePluginsAdmin_Marketplace'|translate }}"
- >{{ title|e('html_attr') }}</h2>
+ >{{ title|e('html_attr') }}</h2>
<p>
- {% if showThemes %}
+ {% if not isSuperUser %}
+ {% if showThemes %}
+ {{ 'Marketplace_NotAllowedToBrowseMarketplaceThemes'|translate }}
+ {% else %}
+ {{ 'Marketplace_NotAllowedToBrowseMarketplacePlugins'|translate }}
+ {% endif %}
+ {% elseif showThemes %}
{{ 'CorePluginsAdmin_ThemesDescription'|translate }}
- {{ 'CorePluginsAdmin_InstallingNewPluginViaMarketplaceOrUpload'|translate('<a href="#" class="uploadPlugin">','</a>')|raw }}
- <br/>
- {{ 'CorePluginsAdmin_BeCarefulUsingThemes'|translate }}
+ {{ 'Marketplace_InstallingNewPluginViaMarketplaceOrUpload'|translate(('CorePluginsAdmin_Themes'|translate), '<a href="#" class="uploadPlugin">', ('CorePluginsAdmin_Theme'|translate), '</a>')|raw }}
{% else %}
{{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
- {{ 'CorePluginsAdmin_InstallingNewPluginViaMarketplaceOrUpload'|translate('<a href="#" class="uploadPlugin">','</a>')|raw }}
- <br/>
- {{ 'CorePluginsAdmin_BeCarefulUsingPlugins'|translate }}
+ {{ 'Marketplace_InstallingNewPluginViaMarketplaceOrUpload'|translate(('General_Plugins'|translate), '<a href="#" class="uploadPlugin">', ('General_Plugin'|translate), '</a>')|raw }}
{% endif %}
</p>
- {% if not isSuperUser %}
- <p>
- {% if showThemes %}
- {{ 'CorePluginsAdmin_NotAllowedToBrowseMarketplaceThemes'|translate }}
- {% else %}
- {{ 'CorePluginsAdmin_NotAllowedToBrowseMarketplacePlugins'|translate }}
- {% endif %}
- </p>
- {% endif %}
-
+ {% include '@Marketplace/licenseform.twig' %}
<div class="ui-confirm" id="installPluginByUpload">
- <h2>{{ 'CorePluginsAdmin_TeaserExtendPiwikByUpload'|translate }}</h2>
+ <h2>{{ 'Marketplace_TeaserExtendPiwikByUpload'|translate }}</h2>
- <p class="description"> {{ 'CorePluginsAdmin_AllowedUploadFormats'|translate }} </p>
+ <p class="description"> {{ 'Marketplace_AllowedUploadFormats'|translate }} </p>
<form enctype="multipart/form-data" method="post" id="uploadPluginForm"
- action="{{ linkTo({'action':'uploadPlugin', 'nonce': installNonce}) }}">
+ action="{{ linkTo({'module':'CorePluginsAdmin', 'action':'uploadPlugin', 'nonce': installNonce}) }}">
<input type="file" name="pluginZip">
<br />
- <input class="startUpload btn" type="submit" value="{{ 'CorePluginsAdmin_UploadZipFile'|translate }}">
+ <input class="startUpload btn" type="submit" value="{{ 'Marketplace_UploadZipFile'|translate }}">
</form>
</div>
<div class="row marketplaceActions" ng-controller="PiwikMarketplaceController as marketplace">
<div piwik-field uicontrol="select" name="plugin_type"
- class="col s12 m4"
+ class="col s12 m6 l4"
ng-model="marketplace.pluginType"
ng-change="marketplace.changePluginType()"
title="{{ 'Show'|translate|e('html_attr') }}"
@@ -64,17 +57,17 @@
value="{{ sort }}"
ng-model="marketplace.pluginSort"
ng-change="marketplace.changePluginSort()"
- class="col s12 m4"
+ class="col s12 m6 l4"
full-width="true"
options="{{ pluginSortOptions|json_encode }}">
</div>
{# Hide filters and search for themes because we don't have many of them #}
- {% if not showThemes %}
- <div class="col s12 m4 ">
+ {% if (pluginsToShow|length) > 20 or query %}
+ <div class="col s12 m12 l4 ">
<form action="{{ linkTo({'sort': ''}) }}" method="post" class="plugin-search">
<div piwik-field uicontrol="text" name="query"
- title="{{ 'General_Search'|translate }} {{ plugins|length }} {{ 'General_Plugins'|translate|lcfirst }}..."
+ title="{{ 'General_Search'|translate }} {{ numAvailablePlugins }} {{ 'General_Plugins'|translate|lcfirst }}..."
value="{{ query }}"
full-width="true">
</div>
@@ -85,15 +78,19 @@
</div>
</div>
- {% include '@CorePluginsAdmin/marketplace/plugin-list.twig' %}
-
- <div class="footer-message">
- {% set marketplaceSellPluginSubject = 'CorePluginsAdmin_MarketplaceSellPluginSubject'|translate %}
- {{ 'CorePluginsAdmin_GetEarlyAccessForPaidPlugins'|translate("<a href='mailto:hello@piwik.org?subject=" ~ marketplaceSellPluginSubject ~ "'>", "</a>")|raw }}
- <br/>
- {{ 'CorePluginsAdmin_DevelopersLearnHowToDevelopPlugins'|translate('<a href="?module=Proxy&action=redirect&url=http://developer.piwik.org/plugins" target="_blank">', '</a>')|raw }}
+ {% include '@Marketplace/plugin-list.twig' %}
+
+ <div class="footer-message center">
+ {{ 'Marketplace_DevelopersLearnHowToDevelopPlugins'|translate('<a href="?module=Proxy&action=redirect&url=http://developer.piwik.org/develop" target="_blank">', '</a>')|raw }}
+ <br />
+ <br />
+ <br />
+ <a rel="noreferrer" href="https://shop.piwik.org/faq/" target="_blank">FAQ</a> |
+ <a rel="noreferrer" href="https://shop.piwik.org/terms-conditions/" target="_blank">Terms</a> |
+ <a rel="noreferrer" href="https://piwik.org/privacy-policy/" target="_blank">Privacy</a> |
+ <a rel="noreferrer" href="https://piwik.org/contact/" target="_blank">Contact</a>
</div>
</div>
-{% endblock %}
+{% endblock %} \ No newline at end of file
diff --git a/plugins/Marketplace/templates/paid-plugins-install-list.twig b/plugins/Marketplace/templates/paid-plugins-install-list.twig
new file mode 100644
index 0000000000..9a322245d7
--- /dev/null
+++ b/plugins/Marketplace/templates/paid-plugins-install-list.twig
@@ -0,0 +1,22 @@
+<div class="ui-confirm" id="installAllPaidPluginsAtOnce">
+ <h2>{{ 'Marketplace_InstallAllPurchasedPlugins'|translate }}</h2>
+ <p>
+ {{ 'Marketplace_InstallThesePlugins'|translate }}
+ <br /><br />
+ </p>
+ <ul>
+ {% for pluginName in paidPluginsToInstallAtOnce %}
+ <li>{{ pluginName }}</li>
+ {% endfor %}
+ </ul>
+
+ <p>
+ <a href="{{ linkTo({'action': 'installAllPaidPlugins', 'nonce': installNonce}) }}" class="btn">
+ {{ 'Marketplace_InstallAllPurchasedPluginsAction'|translate(paidPluginsToInstallAtOnce|length) }}
+ </a>
+
+ <a href="{{ linkTo({'rand': random(999999)}) }}" class="btn-flat">
+ Cancel
+ </a>
+ </p>
+</div> \ No newline at end of file
diff --git a/plugins/Marketplace/templates/plugin-details.twig b/plugins/Marketplace/templates/plugin-details.twig
new file mode 100644
index 0000000000..bed0a19d14
--- /dev/null
+++ b/plugins/Marketplace/templates/plugin-details.twig
@@ -0,0 +1,361 @@
+{% import '@Marketplace/macros.twig' as marketplaceMacro %}
+
+{% block content %}
+
+ <div class="pluginDetails">
+ {% if errorMessage %}
+ {{ errorMessage }}
+ {% elseif plugin %}
+
+ {% if plugin.versions is not empty and plugin.versions[plugin.versions|length - 1] %}
+ {% set latestVersion = plugin.versions[plugin.versions|length - 1] %}
+ {% else %}
+ {% set latestVersion = '' %}
+ {% endif %}
+
+ {% set hasChangelog = plugin.isDownloadable and ((latestVersion and latestVersion.readmeHtml.changelog) or plugin.versions|length > 1) %}
+
+ <div class="row">
+ <div class="col s12 m9">
+ <h2>{{ plugin.displayName }}</h2>
+ <p class="description">
+ {% if plugin.featured %}
+ {{ marketplaceMacro.featuredIcon('left') }}
+ {% endif %}
+ {{ plugin.description }}
+ </p>
+ <div class="contentDetails">
+ <div id="pluginDetailsTabs" class="row">
+ <div class="col s12">
+ <ul class="tabs">
+ <li class="tab col s3"><a href="#tabs-description">{{ 'General_Description'|translate }}</a></li>
+
+ {% if latestVersion.readmeHtml.faq %}
+ <li class="tab col s3"><a href="#tabs-faq">{{ 'General_Faq'|translate }}</a></li>
+ {% endif %}
+
+ {% if latestVersion.readmeHtml.documentation %}
+ <li class="tab col s3"><a href="#tabs-documentation">{{ 'General_Documentation'|translate }}</a></li>
+ {% endif %}
+
+ {% if hasChangelog %}
+ <li class="tab col s3"><a href="#tabs-changelog">{{ 'CorePluginsAdmin_Changelog'|translate }}</a></li>
+ {% endif %}
+
+ {% if plugin.screenshots|length %}
+ <li class="tab col s3"><a href="#tabs-screenshots">{{ 'Marketplace_Screenshots'|translate }}</a></li>
+ {% endif %}
+
+ {% if plugin.support is not empty %}
+ <li class="tab col s3"><a href="#tabs-support">{{ 'Marketplace_Support'|translate }}</a></li>
+ {% endif %}
+
+ {% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
+ <li class="tab col s3"><a href="#tabs-reviews">{{ 'Marketplace_Reviews'|translate }}</a></li>
+ {% endif %}
+ </ul>
+ </div>
+
+ <div id="tabs-description" class="tab-content col s12">
+ {% if isSuperUser and (plugin.isDownloadable or plugin.isInstalled) %}
+ {{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
+
+ {% if isMultiServerEnvironment %}
+ <div class="alert alert-warning">{{ 'Marketplace_MultiServerEnvironmentWarning'|translate }}</div>
+ {% elseif not isAutoUpdateEnabled %}
+ <div class="alert alert-warning">{{ 'Marketplace_AutoUpdateDisabledWarning'|translate("'[General]enable_auto_updates=1'", "'config/config.ini.php'") }}</div>
+ {% endif %}
+ {% endif %}
+
+ {% if hasSomeAdminAccess and plugin.isMissingLicense is defined and plugin.isMissingLicense %}
+ <div class="alert alert-danger">{{ 'Marketplace_PluginLicenseMissingDescription'|translate }}</div>
+ {% elseif hasSomeAdminAccess and plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
+ <div class="alert alert-warning">{{ 'Marketplace_PluginLicenseExceededDescription'|translate }}</div>
+ {% endif %}
+
+ {{ latestVersion.readmeHtml.description|raw }}
+ </div>
+
+ {% if latestVersion.readmeHtml.faq %}
+ <div id="tabs-faq" class="tab-content col s12">
+ {{ latestVersion.readmeHtml.faq|raw }}
+ </div>
+ {% endif %}
+
+ {% if latestVersion.readmeHtml.documentation %}
+ <div id="tabs-documentation" class="tab-content col s12">
+ {{ latestVersion.readmeHtml.documentation|raw }}
+ </div>
+ {% endif %}
+
+ {% if hasChangelog %}
+ <div id="tabs-changelog" class="tab-content col s12">
+ {{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
+ {% if plugin.canBeUpdated %}
+ <div class="alert alert-warning">
+ {{ 'Marketplace_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}
+ {% if plugin.repositoryChangelogUrl %}<a rel="noreferrer" target="_blank" href="{{ plugin.repositoryChangelogUrl }}">{{ 'Marketplace_ViewRepositoryChangelog'|translate }}</a>{% endif %}
+ </div>
+ {% endif %}
+
+ {% if latestVersion.readmeHtml.changelog %}
+ {{ latestVersion.readmeHtml.changelog|raw }}
+ {% endif %}
+
+ <h3>{{ 'CorePluginsAdmin_History'|translate }}</h3>
+
+ <ul>
+ {% for version in plugin.versions|reverse %}
+ <li>
+ {% set versionName %}
+ <strong>
+ {% if version.repositoryChangelogUrl %}
+ <a target="_blank" title="{{ 'CorePluginsAdmin_Changelog'|translate }}" href="{{ version.repositoryChangelogUrl }}">{{ version.name }}</a>
+ {% else %}
+ {{ version.name }}
+ {% endif %}
+ </strong>
+ {% endset %}
+ {{ 'Marketplace_PluginVersionInfo'|translate(versionName, version.release)|raw }}
+ </li>
+ {% endfor %}
+ </ul>
+ </div>
+ {% endif %}
+
+ {% if plugin.screenshots|length %}
+ <div id="tabs-screenshots" class="tab-content col s12">
+ <div class="thumbnails">
+ {% for screenshot in plugin.screenshots %}
+ <div class="thumbnail">
+ <a href="{{ screenshot }}" target="_blank"><img src="{{ screenshot }}?w=400" width="400" alt=""></a>
+ <p>
+ {{ screenshot|split('/')|last|replace({'_': ' ', '.png': '', '.jpg': '', '.jpeg': ''}) }}
+ </p>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ {% endif %}
+
+ {% if plugin.support is not empty %}
+ <div id="tabs-support" class="tab-content col s12">
+ <ul>
+ {% for entry in plugin.support %}
+ {% if entry.name and entry.value %}
+ <li>
+ {{ entry.name }}: {{ entry.value }}
+ </li>
+ {% endif %}
+ {% endfor %}
+ </ul>
+ </div>
+ {% endif %}
+
+ {% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
+ <div id="tabs-reviews" class="tab-content col s12">
+ <iframe class="reviewIframe"
+ style="{% if plugin.shop.reviews.height %}height:{{ plugin.shop.reviews.height }}px;{% endif %}"
+ id="{{ plugin.shop.reviews.embedUrl|md5 }}"
+ src="{{ plugin.shop.reviews.embedUrl|raw }}"></iframe>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ </div>
+ <div class="col s12 m3">
+ <div class="metadata">
+ <div class="actionButton">
+ {% if not plugin.isDownloadable or not isSuperUser %}
+ {% if hasSomeAdminAccess and plugin.hasExceededLicense is defined and plugin.hasExceededLicense and plugin.consumer %}
+ {% if plugin.consumer.loginUrl is defined and plugin.consumer.loginUrl %}
+ <a class="install update"
+ target="_blank"
+ rel="noreferrer"
+ href="{{ plugin.consumer.loginUrl|default('')|e('html_attr') }}"
+ >{{ 'Marketplace_UpgradeSubscription'|translate }}</a>
+ {% endif %}
+
+ {% elseif not plugin.isDownloadable and plugin.isPaid and plugin.shop is defined and plugin.shop %}
+
+ {% if plugin.shop.variations|length %}
+
+ <div class="input-field variationPicker">
+ <select title="{{ 'Marketplace_ShownPriceIsExclTax'|translate|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}">
+ {% for variation in plugin.shop.variations %}
+ <option value="{{ variation.addToCartUrl }}"
+ title="{{ 'Marketplace_PriceExclTax'|translate(variation.price, variation.currency)|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}"
+ {% if variation.recommended is defined and variation.recommended %}selected{% endif %}
+ >{{ variation.name }} - {{ variation.prettyPrice }} / {{ variation.period }}</option>
+ {% endfor %}
+ </select>
+ </div>
+
+ <a class="install update addToCartLink" target="_blank"
+ title="{{ 'Marketplace_ClickToCompletePurchase'|translate|e('html_attr') }}"
+ rel="noreferrer"
+ href="{{ plugin.shop.url|default('')|e('html_attr') }}"
+ >{{ 'Marketplace_AddToCart'|translate }}</a>
+ {% else %}
+ <a class="install update" target="_blank"
+ rel="noreferrer"
+ href="{% if plugin.shop is defined and plugin.shop and plugin.shop.url %}{{ plugin.shop.url|e('html_attr') }}{% else %}{{ plugin.homepage|e('html_attr') }}{% endif %}"
+ >{{ 'General_MoreDetails'|translate }}</a>
+ {% endif %}
+ {% endif %}
+ {% elseif isSuperUser %}
+ {% if not isAutoUpdatePossible %}
+ <a onclick="$(this).css('display', 'none')" href="{{ linkTo({'action': 'download', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}"
+ class="download">{{ 'General_Download'|translate }}</a>
+ {% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
+ <a class="install update"
+ href="{{ linkTo({'module': 'Marketplace', 'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}"
+ >{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
+ {% elseif plugin.isInstalled %}
+ <br />
+ <br />
+ <br />
+ <br />
+ {% elseif 0 < plugin.missingRequirements|length %}
+ <br />
+ <br />
+ <br />
+ <br />
+ {% else %}
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
+ class="install">{{ 'Marketplace_ActionInstall'|translate }}</a>
+ {% endif %}
+ {% else %}
+ <br />
+ <br />
+ <br />
+ <br />
+ {% endif %}
+ </div>
+
+ <p><br /></p>
+ <dl>
+ <dt>{{ 'CorePluginsAdmin_Version'|translate }}</dt>
+ <dd>{{ plugin.latestVersion }}</dd>
+ <dt>{{ 'Marketplace_PluginKeywords'|translate }}</dt>
+ <dd>{{ plugin.keywords|join(', ') }}</dd>
+ {% if plugin.lastUpdated %}
+ <dt>{{ 'Marketplace_LastUpdated'|translate }}</dt>
+ <dd>{{ plugin.lastUpdated }}</dd>
+ {% endif %}
+ {% if plugin.numDownloads %}
+ <dt>{{ 'General_Downloads'|translate }}</dt>
+ <dd title="{{ 'Marketplace_NumDownloadsLatestVersion'|translate(latestVersion.numDownloads|number_format) }}">{{ plugin.numDownloads }}</dd>
+ {% endif %}
+ <dt>{{ 'Marketplace_Developer'|translate }}</dt>
+ <dd>{{ marketplaceMacro.pluginDeveloper(plugin.owner) }}</dd>
+ {% if latestVersion and latestVersion.license is defined and latestVersion.license and latestVersion.license.name is defined and latestVersion.license.name %}
+ <dt>{{ 'Marketplace_License'|translate }}</dt>
+ <dd>
+ {% if latestVersion.license.url is defined and latestVersion.license.url %}
+ <a rel="noreferrer"
+ href="{{ latestVersion.license.url }}"
+ target="_blank">{{ latestVersion.license.name }}</a>
+ {% else %}
+ {{ latestVersion.license.name }}
+ {% endif %}
+ </dd>
+ {% endif %}
+ <dt>{{ 'Marketplace_Authors'|translate }}</dt>
+ <dd>{% for author in plugin.authors if author.name %}
+
+ {% spaceless %}
+ {% if author.homepage %}
+ <a target="_blank" rel="noreferrer" href="{{ author.homepage }}">{{ author.name }}</a>
+ {% elseif author.email %}
+ <a href="mailto:{{ author.email|escape('url') }}">{{ author.name }}</a>
+ {% else %}
+ {{ author.name }}
+ {% endif %}
+
+ {% if loop.index < plugin.authors|length %}
+ ,
+ {% endif %}
+ {% endspaceless %}
+
+ {% endfor %}
+ </dd>
+ <dt>{{ 'CorePluginsAdmin_Websites'|translate }}</dt>
+ <dd>
+ {% if plugin.homepage %}
+ <a target="_blank" rel="noreferrer" href="{{ plugin.homepage }}">{{ 'Marketplace_PluginWebsite'|translate }}</a>,
+ {% endif %}
+ <a target="_blank" href="{{ plugin.repositoryUrl }}">GitHub</a></dd>
+ {% if plugin.activity and plugin.activity.numCommits %}
+ <dt>{{ 'CorePluginsAdmin_Activity'|translate }}</dt>
+ <dd>
+ {{ plugin.activity.numCommits }} commits
+
+ {% if plugin.activity.numContributors > 1 %}
+ {{ 'Marketplace_ByXDevelopers'|translate(plugin.activity.numContributors) }}
+ {% endif %}
+ {% if plugin.activity.lastCommitDate %}
+ {{ 'Marketplace_LastCommitTime'|translate(plugin.activity.lastCommitDate) }}
+ {% endif %}</dd>
+ {% endif %}
+ </dl>
+ <br />
+ </div>
+ </div>
+ </div>
+
+ <script type="text/javascript">
+ $(function() {
+
+ var active = 0;
+ {% if activeTab %}
+ var $activeTab = $('#tabs-{{ activeTab|e('js') }}');
+ if ($activeTab) {
+ active = $activeTab.index() - 1;
+ }
+ {% endif %}
+
+ $('#pluginDetailsTabs .tabs').tabs();
+ $('#pluginDetailsTabs .tabs').tabs('select_tab', active >= 0 ? active : 0);
+
+ $('.pluginDetails a').each(function (index, a) {
+ var link = $(a).attr('href');
+
+ if (link && 0 === link.indexOf('http')) {
+ $(a).attr('target', '_blank');
+ }
+ });
+ });
+ </script>
+
+ {% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
+ <script type="text/javascript">
+ $(function() {
+ var $iFrames = $('.pluginDetails iframe.reviewIframe');
+ for (var i = 0; i < $iFrames.length; i++) {
+ iFrameResize({checkOrigin: ['{{ plugin.shop.reviews.embedUrl|domainOnly }}']}, $iFrames[i]);
+ }
+ });
+ </script>
+ {% endif %}
+
+ <script type="text/javascript">
+ $(function() {
+ var $variationPicker = $('.pluginDetails .variationPicker select');
+ if ($variationPicker.val()) {
+ $('.addToCartLink').attr('href', $variationPicker.val());
+ }
+ $variationPicker.on('change', function () {
+ $('.addToCartLink').attr('href', $variationPicker.val())
+ });
+
+ if ($variationPicker.length) {
+ $variationPicker.material_select();
+ }
+ });
+ </script>
+ {% endif %}
+ </div>
+
+
+{% endblock %}
diff --git a/plugins/Marketplace/templates/plugin-list.twig b/plugins/Marketplace/templates/plugin-list.twig
new file mode 100644
index 0000000000..d071fad3d8
--- /dev/null
+++ b/plugins/Marketplace/templates/plugin-list.twig
@@ -0,0 +1,159 @@
+{% import '@Marketplace/macros.twig' as marketplaceMacro %}
+
+{% if pluginsToShow|length > 0 %}
+ <div class="pluginListContainer row">
+ {% for plugin in pluginsToShow %}
+ <div class="col s12 m6 l4">
+ {% embed 'contentBlock.twig' with {'title': ''} %}
+ {% block content %}
+ <div class="plugin">
+ <h3 class="card-title" title="{{ 'General_MoreDetails'|translate }}">
+ <a href="#" piwik-plugin-name="{{ plugin.name }}">{{ plugin.displayName }}</a>
+ </h3>
+
+ <p class="description">
+ {{ plugin.description }}
+ <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
+ &rsaquo; {{ 'General_MoreLowerCase'|translate }}</a>
+ </p>
+
+ {% if showThemes %}
+ {# Screenshot for themes #}
+ <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}">
+ <img title="{{ 'General_MoreDetails'|translate }}"
+ class="preview" src="{{ plugin.screenshots|first }}?w=250&h=150"/></a>
+ {% endif %}
+
+ <ul class="metadata">
+ <li>
+ {% if plugin.latestVersion %}
+ {{ 'CorePluginsAdmin_Version'|translate }}: {{ plugin.latestVersion }}
+ {% endif %}
+
+ {% if plugin.canBeUpdated %}
+ <a class="update-available" href="#" piwik-plugin-name="{{ plugin.name }}" data-activePluginTab="changelog"
+ title="{{ 'Marketplace_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}">
+ {{ 'Marketplace_NewVersion'|translate }}</a>
+ {% endif %}
+ </li>
+ {% if plugin.lastUpdated %}
+ <li>{{ 'Marketplace_Updated'|translate }}: {{ plugin.lastUpdated }}</li>
+ {% endif %}
+ {% if plugin.numDownloads %}
+ <li>{{ 'General_Downloads'|translate }}: {{ plugin.numDownloads }}</li>
+ {% endif %}
+ <li>{{ 'Marketplace_Developer'|translate }}: {{ marketplaceMacro.pluginDeveloper(plugin.owner) }}</li>
+ </ul>
+
+ {% macro moreDetailsLink(plugin) %}
+ {% set canBePurchased = not plugin.isDownloadable and plugin.shop is defined and plugin.shop and plugin.shop.url %}
+ <a class="btn btn-block plugin-details {% if canBePurchased %}purchaseable{% endif %}" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
+
+ {% if canBePurchased and plugin.shop.variations %}
+ {% set foundCheapest = 0 %}
+ {% for variation in plugin.shop.variations %}
+ {% if not foundCheapest and variation.cheapest is defined and variation.cheapest %}
+ {% set foundCheapest = 1 %}
+ {{ 'Marketplace_PriceFromPerPeriod'|translate(variation.prettyPrice, variation.period) }}
+ {% endif %}
+ {% endfor %}
+ {% if not foundCheapest %}
+ {{ 'Marketplace_PriceFromPerPeriod'|translate(plugin.shop.variations.0.prettyPrice, plugin.shop.variations.0.period) }}
+ {% endif %}
+ {% else %}
+ {{ 'General_MoreDetails'|translate }}
+ {% endif %}
+
+ </a>
+ {% endmacro %}
+
+
+ {% if isSuperUser %}
+ <div class="footer">
+ {% if plugin.isMissingLicense is defined and plugin.isMissingLicense %}
+
+ <div class="alert alert-danger" >
+ {{ 'Marketplace_LicenseMissing'|translate }}
+
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
+ </div>
+
+ {% elseif plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
+
+ <div class="alert alert-danger">
+ {{ 'Marketplace_LicenseExceeded'|translate }}
+
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
+ </div>
+
+ {% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length and isAutoUpdatePossible %}
+ <a class="btn btn-block"
+ href="{{ linkTo({'module': 'Marketplace', 'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">
+ {{ 'CoreUpdater_UpdateTitle'|translate }}
+ </a>
+ {% elseif plugin.missingRequirements|length > 0 or not isAutoUpdatePossible %}
+
+ {% macro downloadButton(showOr, plugin, isAutoUpdatePossible, showBrackets = false) -%}
+ {%- if plugin.missingRequirements|length == 0 and plugin.isDownloadable and not isAutoUpdatePossible -%}
+ {% if showBrackets %}({% endif %}<span onclick="$(this).css('display', 'none')">
+ {%- if showOr %} {{ 'General_Or'|translate }} {% endif -%}
+ <a class="plugin-details download"
+ href="{{ linkTo({'module': 'Marketplace', 'action': 'download', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}"
+ >{{ 'General_Download'|translate }}</a></span>{% if showBrackets %}){% endif %}
+ {%- endif -%}
+ {%- endmacro %}
+
+ {% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
+ {{ 'Marketplace_CannotUpdate'|translate }}
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
+ {% elseif plugin.isInstalled %}
+ {{ 'General_Installed'|translate }}
+ {{ _self.downloadButton(false, plugin, isAutoUpdatePossible, true)|raw }}
+ {% elseif not plugin.isDownloadable %}
+ {{ _self.moreDetailsLink(plugin)|raw }}
+ {% else %}
+ {{ 'Marketplace_CannotInstall'|translate }}
+
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
+ {% endif %}
+
+ {% elseif plugin.isInstalled %}
+ {{ 'General_Installed'|translate }}
+
+ {% if not plugin.isInvalid and not isMultiServerEnvironment and isPluginsAdminEnabled %}
+ ({{ pluginsMacro.pluginActivateDeactivateAction(plugin.name, plugin.isActivated, plugin.missingRequirements, deactivateNonce, activateNonce) }})
+ {% endif %}
+
+ {% elseif plugin.isPaid and not plugin.isDownloadable %}
+ {{ _self.moreDetailsLink(plugin)|raw }}
+ {% else %}
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
+ class="btn">
+ {{ 'Marketplace_ActionInstall'|translate }}
+ </a>
+ {% endif %}
+ </div>
+ {% else %}
+ <div class="footer">
+ {{ _self.moreDetailsLink(plugin)|raw }}
+ </div>
+ {% endif %}
+
+ </div>
+ {% endblock %}
+ {% endembed %}
+ </div>
+ {% endfor %}
+ </div>
+{% endif %}
+
+{% if pluginsToShow|length == 0 %}
+ <div piwik-content-block>
+ {% if showThemes %}
+ {{ 'Marketplace_NoThemesFound'|translate }}
+ {% else %}
+ {{ 'Marketplace_NoPluginsFound'|translate }}
+ {% endif %}
+ </div>
+{% endif %}
+
diff --git a/plugins/Marketplace/templates/subscription-overview.twig b/plugins/Marketplace/templates/subscription-overview.twig
new file mode 100644
index 0000000000..0ace015545
--- /dev/null
+++ b/plugins/Marketplace/templates/subscription-overview.twig
@@ -0,0 +1,101 @@
+{% extends mode is defined and mode == 'user' ? "user.twig" : "admin.twig" %}
+{% import '@Marketplace/macros.twig' as marketplaceMacro %}
+
+{% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
+
+{% block content %}
+
+ <div piwik-content-block
+ content-title="{{ 'Marketplace_OverviewPluginSubscriptions'|translate|e('html_attr') }}"
+ class="subscriptionOverview">
+
+ {% if hasLicenseKey %}
+ <p>
+ {{ 'Marketplace_PluginSubscriptionsList'|translate }}
+ {% if loginUrl %}
+ <a target="_blank" rel="noreferrer" href="{{ loginUrl }}">{{ 'Marketplace_OverviewPluginSubscriptionsAllDetails'|translate }}</a>
+ {% endif %}
+ <br/>
+ {{ 'Marketplace_OverviewPluginSubscriptionsMissingInfo'|translate }}
+ <br />
+
+ {{ 'Marketplace_NoValidSubscriptionNoUpdates'|translate }}
+ {{ 'Marketplace_CurrentNumPiwikUsers'|translate('<strong>' ~ numUsers ~ '</strong>')|raw }}
+ </p>
+
+ <br />
+
+ <table piwik-content-table>
+ <thead>
+ <tr>
+ <th>{{ 'General_Name'|translate }}</th>
+ <th>{{ 'Marketplace_SubscriptionType'|translate }}</th>
+ <th>{{ 'CorePluginsAdmin_Status'|translate }}</th>
+ <th>{{ 'Marketplace_SubscriptionStartDate'|translate }}</th>
+ <th>{{ 'Marketplace_SubscriptionEndDate'|translate }}</th>
+ <th>{{ 'Marketplace_SubscriptionNextPaymentDate'|translate }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% if subscriptions|length %}
+ {% for subscription in subscriptions %}
+ <tr>
+ <td class="subscriptionName">
+ {% if subscription.plugin.htmlUrl %}
+ <a href="{{ subscription.plugin.htmlUrl }}" rel="noreferrer" target="_blank">
+ {% endif %}
+
+ {{ subscription.plugin.displayName }}
+
+ {% if subscription.plugin.htmlUrl %}
+ </a>
+ {% endif %}
+ </td>
+ <td class="subscriptionType">{{ subscription.productType }}</td>
+ <td class="subscriptionStatus"
+ title="{% if not subscription.isValid %}{{ 'Marketplace_SubscriptionInvalid'|translate|e('html_attr') }}{% elseif subscription.isExpiredSoon %}{{ 'Marketplace_SubscriptionExpiresSoon'|translate|e('html_attr') }}{% endif %}">
+ {% if not subscription.isValid %}
+ <span class="icon-error"></span>
+ {% elseif subscription.isExpiredSoon %}
+ <span class="icon-warning"></span>
+ {% else %}
+ <span class="icon-ok"></span>
+ {% endif %}
+
+ {{ subscription.status }}
+
+ {% if subscription.isExceeded is defined and subscription.isExceeded %}
+ <span class="errorMessage" title="{{ 'Marketplace_LicenseExceededPossibleCause'|translate }}"><span class="icon-error"></span> {{ 'Marketplace_Exceeded'|translate }}</span>
+ {% endif %}
+ </td>
+ <td>{{ subscription.start }}</td>
+ <td>{% if subscription.isValid and subscription.nextPayment %}
+ {{ 'Marketplace_LicenseRenewsNextPaymentDate'|translate }}
+ {% else %}
+ {{ subscription.end }}
+ {% endif %}
+ </td>
+ <td>{{ subscription.nextPayment }}</td>
+
+ </tr>
+ {% endfor %}
+ {% else %}
+ <tr><td colspan="6">{{ 'Marketplace_NoSubscriptionsFound'|translate }}</td></tr>
+ {% endif %}
+ </tbody>
+ </table>
+
+ <div class="tableActionBar">
+ <a href="{{ linkTo({'module':"Marketplace", 'action':"overview"}) }}"
+ class="">
+ <span class="icon-table"></span>
+ {{ 'Marketplace_BrowseMarketplace'|translate }}
+ </a>
+ </div>
+
+ {% else %}
+ <p>{{ 'Marketplace_OverviewPluginSubscriptionsMissingLicense'|translate('<a href="'~ linkTo({'module':"Marketplace", 'action':"overview"}) ~'">', '</a>')|raw }}</p>
+ {% endif %}
+ </div>
+
+{% endblock %} \ No newline at end of file
diff --git a/plugins/Marketplace/templates/updatePlugin.twig b/plugins/Marketplace/templates/updatePlugin.twig
new file mode 100644
index 0000000000..ec920cda92
--- /dev/null
+++ b/plugins/Marketplace/templates/updatePlugin.twig
@@ -0,0 +1,41 @@
+{% extends 'admin.twig' %}
+
+{% block content %}
+
+ <div style="max-width:980px;">
+
+ <h2>{{ 'Marketplace_UpdatingPlugin'|translate(plugin.name) }}</h2>
+
+ <div>
+
+ {% if plugin.isTheme %}
+
+ <p>{{ 'Marketplace_StepDownloadingThemeFromMarketplace'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepReplaceExistingTheme'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepThemeSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+ {% else %}
+
+ <p>{{ 'Marketplace_StepDownloadingPluginFromMarketplace'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepReplaceExistingPlugin'|translate }}</p>
+
+ <p>{{ 'Marketplace_StepPluginSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
+
+ {% endif %}
+
+ <p><a href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'plugins'}) }}">{{ 'General_Plugins'|translate }}</a>
+ |
+ <a href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'themes'}) }}">{{ 'CorePluginsAdmin_Themes'|translate }}</a>
+ |
+ <a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_Marketplace'|translate }}</a></p>
+ </div>
+ </div>
+
+{% endblock %}
diff --git a/plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php b/plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php
new file mode 100644
index 0000000000..1da808af4e
--- /dev/null
+++ b/plugins/Marketplace/tests/Fixtures/SimpleFixtureTrackFewVisits.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Plugins\Marketplace\tests\Fixtures;
+
+use Piwik\Date;
+use Piwik\Tests\Framework\Fixture;
+
+class SimpleFixtureTrackFewVisits extends Fixture
+{
+ public $dateTime = '2013-01-23 01:23:45';
+ public $idSite = 1;
+
+ public function setUp()
+ {
+ $this->setUpWebsite();
+ $this->trackVisits();
+ }
+
+ public function tearDown()
+ {
+ // empty
+ }
+
+ private function setUpWebsite()
+ {
+ if (!self::siteCreated($this->idSite)) {
+ $idSite = self::createWebsite($this->dateTime, $ecommerce = 1);
+ $this->assertSame($this->idSite, $idSite);
+ }
+ }
+
+ protected function trackVisits()
+ {
+ $t = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true);
+ $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.1)->getDatetime());
+ $t->setUrl('http://example.com/');
+ self::checkResponse($t->doTrackPageView('Viewing homepage'));
+
+ $t = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true);
+ $t->setIp('56.11.55.73');
+ $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.1)->getDatetime());
+ $t->setUrl('http://example.com/sub/page');
+ self::checkResponse($t->doTrackPageView('Viewing homepage'));
+ }
+} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/Framework/Mock/Client.php b/plugins/Marketplace/tests/Framework/Mock/Client.php
new file mode 100644
index 0000000000..fee4de1afe
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Client.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+use Piwik\Cache\Backend\NullCache;
+use Piwik\Cache\Lazy;
+use Psr\Log\NullLogger;
+
+class Client {
+
+ public static function build($service)
+ {
+ $environment = new Environment();
+ return new \Piwik\Plugins\Marketplace\Api\Client($service, new Lazy(new NullCache()), new NullLogger(), $environment);
+ }
+}
diff --git a/plugins/Marketplace/tests/Framework/Mock/Consumer.php b/plugins/Marketplace/tests/Framework/Mock/Consumer.php
new file mode 100644
index 0000000000..9c72c20c51
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Consumer.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+use \Piwik\Plugins\Marketplace\Consumer as ActualConsumer;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+
+class Consumer {
+
+ public static function build($service)
+ {
+ $client = Client::build($service);
+ return new ActualConsumer($client);
+ }
+
+ public static function buildNoLicense()
+ {
+ $service = new Service();
+ $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+ if ($action === 'info') {
+ return $service->getFixtureContent('v2.0_info.json');
+ } elseif ($action === 'consumer') {
+ return $service->getFixtureContent('v2.0_consumer-access_token-notexistingtoken.json');
+ } elseif ($action === 'consumer/validate') {
+ return $service->getFixtureContent('v2.0_consumer_validate-access_token-notexistingtoken.json');
+ } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json');
+ }
+ });
+ return static::build($service);
+ }
+
+ public static function buildValidLicense()
+ {
+ $service = new Service();
+ $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+ if ($action === 'info') {
+ return $service->getFixtureContent('v2.0_info.json');
+ } elseif ($action === 'consumer') {
+ return $service->getFixtureContent('v2.0_consumer-access_token-consumer2_paid1.json');
+ } elseif ($action === 'consumer/validate') {
+ return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer2_paid1.json');
+ } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json');
+ }
+ });
+ return static::build($service);
+ }
+
+ public static function buildExceededLicense()
+ {
+ $service = new Service();
+ $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+ if ($action === 'info') {
+ return $service->getFixtureContent('v2.0_info.json');
+ } elseif ($action === 'consumer') {
+ return $service->getFixtureContent('v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json');
+ } elseif ($action === 'consumer/validate') {
+ return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json');
+ } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json');
+ }
+ });
+
+ return static::build($service);
+ }
+
+ public static function buildExpiredLicense()
+ {
+ $service = new Service();
+ $service->setOnDownloadCallback(function ($action, $params) use ($service) {
+ if ($action === 'info') {
+ return $service->getFixtureContent('v2.0_info.json');
+ } elseif ($action === 'consumer') {
+ return $service->getFixtureContent('v2.0_consumer-access_token-consumer3_paid1_custom2.json');
+ } elseif ($action === 'consumer/validate') {
+ return $service->getFixtureContent('v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json');
+ } elseif ($action === 'plugins' && !empty($params['purchase_type']) && $params['purchase_type'] === PurchaseType::TYPE_PAID) {
+ return $service->getFixtureContent('v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json');
+ }
+ });
+ return static::build($service);
+ }
+
+}
diff --git a/plugins/Marketplace/tests/Framework/Mock/Environment.php b/plugins/Marketplace/tests/Framework/Mock/Environment.php
new file mode 100644
index 0000000000..354766c9c2
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Environment.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+class Environment extends \Piwik\Plugins\Marketplace\Environment {
+
+ public function __construct()
+ {
+ }
+
+ public function getNumUsers()
+ {
+ return 5;
+ }
+
+ public function getNumWebsites()
+ {
+ return 21;
+ }
+
+ public function getPhpVersion()
+ {
+ return '7.0.1';
+ }
+
+ public function getPiwikVersion()
+ {
+ return '2.16.3';
+ }
+
+ public function doesPreferStable()
+ {
+ return true;
+ }
+
+ public function getReleaseChannel()
+ {
+ return 'latest_stable';
+ }
+
+ public function getMySQLVersion()
+ {
+ return '5.7.1';
+ }
+
+
+}
diff --git a/plugins/Marketplace/tests/Framework/Mock/Service.php b/plugins/Marketplace/tests/Framework/Mock/Service.php
new file mode 100644
index 0000000000..b74c8ce12e
--- /dev/null
+++ b/plugins/Marketplace/tests/Framework/Mock/Service.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Framework\Mock;
+
+use Piwik\Filesystem;
+
+class Service extends \Piwik\Plugins\Marketplace\Api\Service {
+
+ public $action;
+ public $params;
+
+ private $fixtureToReturn;
+ private $exception;
+ private $onFetchCallback;
+ private $onDownloadCallback;
+
+ public function __construct()
+ {
+ parent::__construct('http://plugins.piwik.org');
+ }
+
+ /**
+ * Will cause the service to throw an exception when any data is fetched
+ * @param $exception
+ */
+ public function throwException($exception)
+ {
+ $this->exception = $exception;
+ $this->fixtureToReturn = null;
+ }
+
+ /**
+ * Will cause the service to use the content of the given fixture as a response of the plugins API.
+ * Should be either a filename of a file within the "plugins/Marketplace/tests/resources/" directory or
+ * an array of filenames. An array is useful if the service gets called multiple times and you want to return
+ * different results for each API call. If an array is given, first filename will be returned first, then next, ...
+ *
+ * @param string|array $fixtureName
+ */
+ public function returnFixture($fixtureName)
+ {
+ $this->fixtureToReturn = $fixtureName;
+ $this->exception = null;
+ }
+
+ public function download($url, $destinationPath = null, $timeout = null)
+ {
+ if ($this->onDownloadCallback && is_callable($this->onDownloadCallback)) {
+ $result = call_user_func($this->onDownloadCallback, $this->action, $this->params);
+ if (!empty($result)) {
+ return $result;
+ }
+ }
+
+ if ($destinationPath) {
+ Filesystem::mkdir(@dirname($destinationPath));
+ file_put_contents($destinationPath, $url);
+ return true;
+ }
+
+ if (!empty($this->fixtureToReturn)) {
+ if (is_array($this->fixtureToReturn)) {
+ $fixture = array_shift($this->fixtureToReturn);
+ } else {
+ $fixture = $this->fixtureToReturn;
+ $this->fixtureToReturn = null;
+ }
+
+ return $this->getFixtureContent($fixture);
+ }
+ }
+
+ public function getFixtureContent($fixture)
+ {
+ $path = PIWIK_INCLUDE_PATH . '/plugins/Marketplace/tests/resources/' . $fixture;
+
+ return file_get_contents($path);
+ }
+
+ // here you can set a custom callback and record all actions/ params and even return a custom result for each
+ // action / params if wanted
+ public function setOnFetchCallback($callback)
+ {
+ $this->onFetchCallback = $callback;
+ }
+
+ // here you can set a custom callback and record all actions/ params and even return a custom result for each
+ // action / params if wanted
+ public function setOnDownloadCallback($callback)
+ {
+ $this->onDownloadCallback = $callback;
+ }
+
+ public function fetch($action, $params)
+ {
+ $this->action = $action;
+ $this->params = $params;
+
+ if ($this->onFetchCallback && is_callable($this->onFetchCallback)) {
+ $result = call_user_func($this->onFetchCallback, $action, $params);
+ if (!empty($result)) {
+ return $result;
+ }
+ }
+
+ if (isset($this->exception)) {
+ throw $this->exception;
+ } elseif (!empty($this->fixtureToReturn) || $this->onDownloadCallback) {
+ // we want to make sure to test as much of the service class as possible.
+ // Therefore we only mock the HTTP request in download()
+ return parent::fetch($action, $params);
+ }
+
+ return array();
+ }
+}
diff --git a/plugins/Marketplace/tests/Integration/ApiTest.php b/plugins/Marketplace/tests/Integration/ApiTest.php
new file mode 100644
index 0000000000..8b64948fd7
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/ApiTest.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration;
+
+use Piwik\Plugins\Marketplace\API;
+use Piwik\Plugins\Marketplace\LicenseKey;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\Mock\FakeAccess;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\Api\Service\Exception as ServiceException;
+use Exception;
+
+/**
+ * @group Marketplace
+ * @group ApiTest
+ * @group Api
+ * @group Plugins
+ */
+class ApiTest extends IntegrationTestCase
+{
+ /**
+ * @var API
+ */
+ private $api;
+
+ /**
+ * @var Service
+ */
+ private $service;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ API::unsetInstance();
+ $this->api = API::getInstance();
+
+ Fixture::createSuperUser();
+ if (!Fixture::siteCreated(1)) {
+ Fixture::createWebsite('2012-01-01 00:00:00');
+ }
+
+ $this->setSuperUser();
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage checkUserHasSuperUserAccess
+ */
+ public function test_deleteLicenseKey_requiresSuperUserAccess_IfUser()
+ {
+ $this->setUser();
+ $this->api->deleteLicenseKey();
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage checkUserHasSuperUserAccess
+ */
+ public function test_deleteLicenseKey_requiresSuperUserAccess_IfAnonymous()
+ {
+ $this->setAnonymousUser();
+ $this->api->deleteLicenseKey();
+ }
+
+ public function test_deleteLicenseKey_shouldRemoveAnExistingKey()
+ {
+ $this->buildLicenseKey()->set('key');
+ $this->assertHasLicenseKey();
+
+ $this->api->deleteLicenseKey();
+
+ $this->assertNotHasLicenseKey();
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage checkUserHasSuperUserAccess
+ */
+ public function test_saveLicenseKey_requiresSuperUserAccess_IfUser()
+ {
+ $this->setUser();
+ $this->api->saveLicenseKey('key');
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage checkUserHasSuperUserAccess
+ */
+ public function test_saveLicenseKey_requiresSuperUserAccess_IfAnonymous()
+ {
+ $this->setAnonymousUser();
+ $this->api->saveLicenseKey('key');
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage Marketplace_ExceptionLinceseKeyIsNotValid
+ */
+ public function test_saveLicenseKey_shouldThrowException_IfTokenIsNotValid()
+ {
+ $this->service->returnFixture('v2.0_consumer_validate-access_token-notexistingtoken.json');
+ $this->api->saveLicenseKey('key');
+ }
+
+ public function test_saveLicenseKey_shouldCallTheApiTheCorrectWay()
+ {
+ $this->service->returnFixture('v2.0_consumer-access_token-valid_but_expired.json');
+
+ try {
+ $this->api->saveLicenseKey('key123');
+ } catch (Exception $e) {
+
+ }
+
+ // make sure calls API the correct way
+ $this->assertSame('consumer/validate', $this->service->action);
+ $this->assertSame(array(), $this->service->params);
+ $this->assertSame('key123', $this->service->getAccessToken());
+ $this->assertNotHasLicenseKey();
+ }
+
+ public function test_saveLicenseKey_shouldActuallySaveToken_IfValid()
+ {
+ $this->service->returnFixture('v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json');
+ $success = $this->api->saveLicenseKey('123licensekey');
+ $this->assertTrue($success);
+
+ $this->assertHasLicenseKey();
+ $this->assertSame('123licensekey', $this->buildLicenseKey()->get());
+ }
+
+ /**
+ * @expectedExceptionMessage Host not reachable
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+ */
+ public function test_saveLicenseKey_shouldThrowException_IfConnectionToMarketplaceFailed()
+ {
+ $this->service->throwException(new ServiceException('Host not reachable', ServiceException::HTTP_ERROR));
+ $success = $this->api->saveLicenseKey('123licensekey');
+ $this->assertTrue($success);
+
+ $this->assertHasLicenseKey();
+ $this->assertSame('123licensekey', $this->buildLicenseKey()->get());
+ }
+
+ public function provideContainerConfig()
+ {
+ $this->service = new Service();
+
+ return array(
+ 'Piwik\Access' => new FakeAccess(),
+ 'Piwik\Plugins\Marketplace\Api\Service' => $this->service
+ );
+ }
+
+ protected function setSuperUser()
+ {
+ FakeAccess::clearAccess(true);
+ }
+
+ protected function setUser()
+ {
+ FakeAccess::clearAccess(false);
+ FakeAccess::$idSitesView = array(1);
+ FakeAccess::$idSitesAdmin = array();
+ FakeAccess::$identity = 'aUser';
+ }
+
+ protected function setAnonymousUser()
+ {
+ FakeAccess::clearAccess();
+ FakeAccess::$identity = 'anonymous';
+ }
+
+ protected function buildLicenseKey()
+ {
+ return new LicenseKey();
+ }
+
+ private function assertHasLicenseKey()
+ {
+ $this->assertTrue($this->buildLicenseKey()->has());
+ }
+
+ private function assertNotHasLicenseKey()
+ {
+ $this->assertFalse($this->buildLicenseKey()->has());
+ }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/ClientTest.php b/plugins/Marketplace/tests/Integration/ClientTest.php
new file mode 100644
index 0000000000..22ab948151
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/ClientTest.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Api;
+
+use Piwik\Filesystem;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as TestService;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Client as ClientBuilder;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group ClientTest
+ * @group Client
+ */
+class ClientTest extends IntegrationTestCase
+{
+ /**
+ * @var Client
+ */
+ private $client;
+
+ /**
+ * @var TestService
+ */
+ private $service;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->service = new TestService();
+ $this->client = $this->buildClient();
+ }
+
+ public function test_download()
+ {
+ $this->service->returnFixture('v2.0_plugins_TreemapVisualization_info.json');
+
+ $file = $this->client->download('AnyPluginName');
+
+ $this->assertFileExists($file);
+ $this->assertStringEqualsFile($file, 'http://plugins.piwik.org/api/2.0/plugins/TreemapVisualization/download/1.0.1?coreVersion=2.16.3');
+ Filesystem::deleteFileIfExists($file);
+
+ $this->assertStringStartsWith(PIWIK_INCLUDE_PATH . '/tmp/latest/plugins/', $file);
+ $this->assertStringEndsWith('.zip', $file);
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Exception
+ * @expectedExceptionMessage Requested plugin does not exist.
+ */
+ public function test_getPluginInfo_shouldThrowException_IfNotAllowedToRequestPlugin()
+ {
+ $this->service->returnFixture('v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json');
+ $this->client->getPluginInfo('CustomPlugin1');
+ }
+
+ private function buildClient()
+ {
+ return ClientBuilder::build($this->service);
+ }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/EnvironmentTest.php b/plugins/Marketplace/tests/Integration/EnvironmentTest.php
new file mode 100644
index 0000000000..5c23b28145
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/EnvironmentTest.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Api;
+
+use Piwik\Plugin;
+use Piwik\Plugin\ReleaseChannels;
+use Piwik\Plugins\Marketplace\Environment;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Version;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group EnvironmentTest
+ * @group Environment
+ */
+class EnvironmentTest extends IntegrationTestCase
+{
+ /**
+ * @var Environment
+ */
+ private $environment;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ Fixture::createSuperUser();
+ Fixture::createWebsite('2014-01-01 02:02:02');
+ Fixture::createWebsite('2014-01-01 02:02:02');
+ Fixture::createWebsite('2014-01-01 02:02:02');
+
+ $releaseChannes = new ReleaseChannels(Plugin\Manager::getInstance());
+ $releaseChannes->setActiveReleaseChannelId('latest_stable');
+
+ $this->environment = new Environment($releaseChannes);
+ }
+
+ public function test_getPhpVersion()
+ {
+ $this->assertEquals(phpversion(), $this->environment->getPhpVersion());
+ }
+
+ public function test_getPiwikVersion()
+ {
+ $this->assertEquals(Version::VERSION, $this->environment->getPiwikVersion());
+ }
+
+ public function test_setPiwikVersion_OverwritesCurrentPiwikVersion()
+ {
+ $this->environment->setPiwikVersion('1.12.0');
+ $this->assertSame('1.12.0', $this->environment->getPiwikVersion());
+ }
+
+ public function test_getNumUsers()
+ {
+ $this->assertSame(1, $this->environment->getNumUsers());
+ }
+
+ public function test_getNumWebsites()
+ {
+ $this->assertSame(3, $this->environment->getNumWebsites());
+ }
+
+ public function test_getMySQLVersion()
+ {
+ $this->assertNotEmpty($this->environment->getMySQLVersion());
+ }
+
+ public function test_getReleaseChannel()
+ {
+ $this->assertEquals('latest_stable', $this->environment->getReleaseChannel());
+ }
+
+ public function test_doesPreferStable()
+ {
+ $this->assertTrue($this->environment->doesPreferStable());
+ }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/Input/PluginNameTest.php b/plugins/Marketplace/tests/Integration/Input/PluginNameTest.php
new file mode 100644
index 0000000000..51e8ace8be
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/Input/PluginNameTest.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Input;
+
+use Piwik\Plugins\Marketplace\Input\PluginName;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group PluginNameTest
+ * @group PluginName
+ */
+class PluginNameTest extends IntegrationTestCase
+{
+ public function tearDown()
+ {
+ unset($_GET['pluginName']);
+ }
+
+ public function test_findsPluginName()
+ {
+ $this->setPluginName('CoreFooBar');
+
+ $pluginName = new PluginName();
+ $this->assertSame('CoreFooBar', $pluginName->getPluginName());
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage Invalid plugin name given
+ */
+ public function test_throws_exception_ifInvalidName()
+ {
+ $this->setPluginName('CoreFooBar-?4');
+
+ $pluginName = new PluginName();
+ $pluginName->getPluginName();
+ }
+
+ private function setPluginName($name)
+ {
+ $_GET['pluginName'] = $name;
+ }
+
+
+}
diff --git a/plugins/Marketplace/tests/Integration/LicenseKeyTest.php b/plugins/Marketplace/tests/Integration/LicenseKeyTest.php
new file mode 100644
index 0000000000..5f548b1c31
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/LicenseKeyTest.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration;
+
+use Piwik\Plugins\Marketplace\LicenseKey;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group LicenseKeyTest
+ * @group LicenseKey
+ */
+class LicenseKeyTest extends IntegrationTestCase
+{
+ /**
+ * @var LicenseKey
+ */
+ private $licenseKey;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->licenseKey = $this->buildLicenseKey();
+ }
+
+ public function test_get_noLicenseKeyIsSetByDefault()
+ {
+ $this->assertFalse($this->licenseKey->get());
+ $this->assertFalse($this->licenseKey->has());
+ }
+
+ public function test_set_get_persistsALicenseKey()
+ {
+ $key = 'foobarBaz';
+ $this->licenseKey->set($key);
+ $this->assertSame($key, $this->licenseKey->get());
+
+ // verify it is saved across requests by creating a new instance
+ $this->assertPersistedLicenseKeyEquals($key);
+ }
+
+ public function test_set_shouldOverwriteAnExistingKey()
+ {
+ $this->setExampleLicenseKey();
+
+ $key = 'foobarBaz2Unique299';
+ $this->assertPersistedLicenseKeyNotEquals($key);
+ $this->licenseKey->set($key);
+ $this->assertPersistedLicenseKeyEquals($key);
+ }
+
+ public function test_set_deletesAnExistingLicenseKey_IfValueIsFalse()
+ {
+ $this->setExampleLicenseKey();
+
+ $this->licenseKey->set(false);
+ $this->assertFalse($this->licenseKey->has());
+ }
+
+ public function test_set_deletesAnExistingLicenseKey_IfValueIsNotSet()
+ {
+ $this->setExampleLicenseKey();
+
+ $this->licenseKey->set(null);
+ $this->assertFalse($this->licenseKey->has());
+ }
+
+ public function test_has_detectsWhetherANonEmptyKeyIsSet()
+ {
+ $this->assertNotHasPersistedLicenseKey();
+ $this->setExampleLicenseKey();
+ $this->assertHasPersistedLicenseKey();
+ $this->licenseKey->set('');
+ $this->assertNotHasPersistedLicenseKey();
+ $this->licenseKey->set('1');
+ $this->assertHasPersistedLicenseKey();
+ $this->licenseKey->set('0');
+ $this->assertHasPersistedLicenseKey();
+ $this->licenseKey->set(null);
+ $this->assertNotHasPersistedLicenseKey();
+ }
+
+ private function assertHasPersistedLicenseKey()
+ {
+ // we create a new instance so it's actually persisted and not hold in an object instance
+ $this->assertTrue($this->buildLicenseKey()->has());
+ }
+
+ private function assertNotHasPersistedLicenseKey()
+ {
+ // we create a new instance so it's actually persisted and not hold in an object instance
+ $this->assertFalse($this->buildLicenseKey()->has());
+ }
+
+ private function assertPersistedLicenseKeyEquals($expectedKey)
+ {
+ // we create a new instance so it's actually persisted and not hold in an object instance
+ $this->assertSame($expectedKey, $this->buildLicenseKey()->get());
+ }
+
+ private function assertPersistedLicenseKeyNotEquals($expectedKey)
+ {
+ // we create a new instance so it's actually persisted and not hold in an object instance
+ $this->assertNotSame($expectedKey, $this->buildLicenseKey()->get());
+ }
+
+ private function setExampleLicenseKey()
+ {
+ $this->licenseKey->set('foo');
+ $this->assertTrue($this->licenseKey->has());
+ }
+
+ private function buildLicenseKey()
+ {
+ return new LicenseKey();
+ }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php b/plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php
new file mode 100644
index 0000000000..b31aea1e2e
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/Plugins/InvalidLicensesTest.php
@@ -0,0 +1,290 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Plugins;
+
+use Piwik\Cache\Backend\ArrayCache;
+use Piwik\Cache\Eager;
+use Piwik\Container\StaticContainer;
+use Piwik\Plugins\Marketplace\Consumer;
+use Piwik\Plugins\Marketplace\Plugins;
+use Piwik\Plugins\Marketplace\Plugins\InvalidLicenses;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer as ConsumerBuilder;
+use Piwik\Translate;
+
+class CustomInvalidLicenses extends InvalidLicenses {
+ private $isActivated = true;
+
+ public function setPluginIsActivated($isActivated)
+ {
+ $this->isActivated = $isActivated;
+ }
+
+ public function isPluginActivated($pluginName)
+ {
+ return $this->isActivated;
+ }
+}
+
+/**
+ * @group Marketplace
+ * @group InvalidLicensesTest
+ * @group InvalidLicenses
+ * @group Plugins
+ */
+class InvalidLicensesTest extends IntegrationTestCase
+{
+ /**
+ * @var Eager
+ */
+ private $cache;
+
+ private $cacheKey = 'Marketplace_ExpiredPlugins';
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ Translate::loadEnglishTranslation();
+
+ $this->cache = new Eager(new ArrayCache(), 'test');
+ }
+
+ public function tearDown()
+ {
+ Translate::unloadEnglishTranslation();
+ parent::tearDown();
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_validLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithValidLicense();
+ $expired->setPluginIsActivated(false);
+
+ $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_noLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithNoLicense();
+ $expired->setPluginIsActivated(false);
+
+ $expected = array(
+ 'exceeded' => array(),
+ 'expired' => array(),
+ 'noLicense' => array());
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_invalidLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithExpiredLicense();
+ $expired->setPluginIsActivated(false);
+
+ $expected = array(
+ 'exceeded' => array(),
+ 'expired' => array(),
+ 'noLicense' => array());
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_exceededLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithExceededLicense();
+ $expired->setPluginIsActivated(false);
+
+ $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_validLicenses()
+ {
+ $expired = $this->buildWithValidLicense();
+
+ $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_noLicenses()
+ {
+ $expired = $this->buildWithNoLicense();
+
+ $expected = array(
+ 'exceeded' => array(),
+ 'expired' => array(),
+ 'noLicense' => array('PaidPlugin1'));
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_invalidLicenses()
+ {
+ $expired = $this->buildWithExpiredLicense();
+
+ $expected = array(
+ 'exceeded' => array(),
+ 'expired' => array('PaidPlugin1'),
+ 'noLicense' => array());
+
+ $this->assertSame($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_exceededLicenses()
+ {
+ $expired = $this->buildWithExceededLicense();
+
+ $expected = array(
+ 'exceeded' => array('PaidPlugin2'),
+ 'expired' => array('PaidPlugin1'),
+ 'noLicense' => array());
+ $this->assertEquals($expected, $expired->getPluginNamesOfInvalidLicenses());
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_shouldCacheAnyResult()
+ {
+ $this->assertFalse($this->cache->contains($this->cacheKey));
+
+ $this->buildWithValidLicense()->getPluginNamesOfInvalidLicenses();
+
+ $this->assertTrue($this->cache->contains($this->cacheKey));
+
+ $expected = array('exceeded' => array(), 'expired' => array(), 'noLicense' => array());
+
+ $this->assertSame($expected, $this->cache->fetch($this->cacheKey));
+ }
+
+ public function test_getNamesOfExpiredPaidPlugins_shouldCache_IfNotValidLicenseKeyButPaidPluginsInstalled()
+ {
+ $this->buildWithExpiredLicense()->getPluginNamesOfInvalidLicenses();
+
+ $expected = array(
+ 'exceeded' => array(),
+ 'expired' => array('PaidPlugin1'),
+ 'noLicense' => array());
+
+ $this->assertSame($expected, $this->cache->fetch($this->cacheKey));
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_validLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithValidLicense();
+ $expired->setPluginIsActivated(false);
+
+ $this->assertNull($expired->getMessageExceededLicenses());
+ $this->assertNull($expired->getMessageExpiredLicenses());
+ $this->assertNull($expired->getMessageNoLicense());
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_invalidLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithExpiredLicense();
+ $expired->setPluginIsActivated(false);
+
+ $this->assertNull($expired->getMessageExceededLicenses());
+ $this->assertNull($expired->getMessageExpiredLicenses());
+ $this->assertNull($expired->getMessageNoLicense());
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_exceededLicenses_noPaidPluginActivated()
+ {
+ $expired = $this->buildWithExceededLicense();
+ $expired->setPluginIsActivated(false);
+ $this->assertNull($expired->getMessageExceededLicenses());
+ $this->assertNull($expired->getMessageExpiredLicenses());
+ $this->assertNull($expired->getMessageNoLicense());
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_validLicenses_PaidPluginActivated()
+ {
+ $expired = $this->buildWithValidLicense();
+
+ $this->assertNull($expired->getMessageExceededLicenses());
+ $this->assertNull($expired->getMessageExpiredLicenses());
+ $this->assertNull($expired->getMessageNoLicense());
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_noLicenses_PaidPluginActivated()
+ {
+ // in theory we would need to show a warning as there is no license, but this can also happen if there's some random
+ // error and the user actually has a license, eg if the request aborted when fetching consumer etc
+ $expired = $this->buildWithNoLicense();
+
+ $this->assertEquals('', $expired->getMessageExceededLicenses());
+ $this->assertEquals('', $expired->getMessageExpiredLicenses());
+ $this->assertEquals('You are using the following plugins without a license: <strong>PaidPlugin1</strong>. <br/>To resolve this issue either update your license key, <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">get a subscription now</a></strong> or deactivate the plugin. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageNoLicense());
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_invalidLicenses_PaidPluginActivated()
+ {
+ $expired = $this->buildWithExpiredLicense();
+
+ $this->assertNull($expired->getMessageExceededLicenses());
+ $this->assertEquals('The licenses for the following plugins are expired: <strong>PaidPlugin1</strong>. <br/>You will no longer receive any updates for these plugins. To resolve this issue either <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">renew your subscription now</a></strong>, or deactivate the plugin if you no longer use it. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageExpiredLicenses());
+ }
+
+ public function test_getMessageExceededLicenses_getMessageExpiredLicenses_exceededLicenses_PaidPluginActivated()
+ {
+ $expired = $this->buildWithExceededLicense();
+ $this->assertEquals('The licenses for the following plugins are no longer valid as the number of authorized users for the license is exceeded: <strong>PaidPlugin2</strong>. <br/>You will not be able to download updates for these plugins. To resolve this issue either delete some users or <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">upgrade the subscription now</a></strong>. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageExceededLicenses());
+ $this->assertEquals('The licenses for the following plugins are expired: <strong>PaidPlugin1</strong>. <br/>You will no longer receive any updates for these plugins. To resolve this issue either <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">renew your subscription now</a></strong>, or deactivate the plugin if you no longer use it. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageExpiredLicenses());
+ }
+
+ public function test_getMessageMissingLicenses_getMessageMissingLicenses_PaidPluginActivated()
+ {
+ $expired = $this->buildWithNoLicense();
+ $this->assertEquals('You are using the following plugins without a license: <strong>PaidPlugin1</strong>. <br/>To resolve this issue either update your license key, <strong><a href="https://shop.piwik.org/my-account" target="_blank" rel="noreferrer">get a subscription now</a></strong> or deactivate the plugin. <br/><a href="?module=Marketplace&action=subscriptionOverview">View your plugin subscriptions.</a>', $expired->getMessageNoLicense());
+ }
+
+ private function buildWithValidLicense()
+ {
+ $consumer = ConsumerBuilder::buildValidLicense();
+ return $this->buildInvalidLicense($consumer);
+ }
+
+ private function buildWithExpiredLicense()
+ {
+ $consumer = ConsumerBuilder::buildExpiredLicense();
+ return $this->buildInvalidLicense($consumer);
+ }
+
+ private function buildWithNoLicense()
+ {
+ $consumer = ConsumerBuilder::buildNoLicense();
+ return $this->buildInvalidLicense($consumer);
+ }
+
+ private function buildWithExceededLicense()
+ {
+ $consumer = ConsumerBuilder::buildExceededLicense();
+ return $this->buildInvalidLicense($consumer);
+ }
+
+ /**
+ * @param Consumer $consumer
+ * @return CustomInvalidLicenses
+ */
+ private function buildInvalidLicense($consumer)
+ {
+ $translator = StaticContainer::get('Piwik\Translation\Translator');
+ $advertising = StaticContainer::get('Piwik\ProfessionalServices\Advertising');
+ $client = $consumer->getApiClient();
+ $plugins = new Plugins($client, $consumer, $advertising);
+
+ $licenses = new CustomInvalidLicenses($client, $this->cache, $translator, $plugins);
+ $licenses->clearCache();
+ return $licenses;
+ }
+
+}
diff --git a/plugins/Marketplace/tests/Integration/PluginsTest.php b/plugins/Marketplace/tests/Integration/PluginsTest.php
new file mode 100644
index 0000000000..815fd537a5
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/PluginsTest.php
@@ -0,0 +1,486 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration;
+
+use Piwik\Plugins\Marketplace\API;
+use Piwik\Plugins\Marketplace\Consumer;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Plugins\Marketplace\Input\Sort;
+use Piwik\Plugins\Marketplace\Plugins;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Client;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service;
+use Piwik\Tests\Framework\Mock\ProfessionalServices\Advertising;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugin;
+
+/**
+ * @group Marketplace
+ * @group PluginsTest
+ * @group Plugins
+ */
+class PluginsTest extends IntegrationTestCase
+{
+ /**
+ * @var Plugins
+ */
+ private $plugins;
+
+ /**
+ * @var Service
+ */
+ private $service;
+
+ /**
+ * @var Service
+ */
+ private $consumerService;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ API::unsetInstance();
+
+ $this->service = new Service();
+ $this->consumerService = new Service();
+
+ $this->plugins = new Plugins(
+ Client::build($this->service),
+ new Consumer(Client::build($this->consumerService)),
+ new Advertising()
+ );
+ }
+
+ public function test_getAllAvailablePluginNames_noPluginsFound()
+ {
+ $pluginNames = $this->plugins->getAllAvailablePluginNames();
+ $this->assertSame(array(), $pluginNames);
+ }
+
+ public function test_getAllAvailablePluginNames()
+ {
+ $this->service->returnFixture(array(
+ 'v2.0_themes.json', 'v2.0_plugins.json'
+ ));
+ $pluginNames = $this->plugins->getAllAvailablePluginNames();
+ $expected = array (
+ 'AnotherBlackTheme',
+ 'Barometer',
+ 'Counter',
+ 'CustomAlerts',
+ 'CustomOptOut',
+ 'FeedAnnotation',
+ 'IPv6Usage',
+ 'LiveTab',
+ 'LoginHttpAuth',
+ 'page2images-visual-link',
+ 'PaidPlugin1',
+ 'ReferrersManager',
+ 'SecurityInfo',
+ 'TasksTimetable',
+ 'TreemapVisualization',
+ );
+ foreach ($expected as $name) {
+ $this->assertContains($name, $pluginNames);
+ }
+ }
+
+ public function test_getAvailablePluginNames_noPluginsFound()
+ {
+ $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = true);
+ $this->assertSame(array(), $pluginNames);
+
+ $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = false);
+ $this->assertSame(array(), $pluginNames);
+ }
+
+ public function test_getAvailablePluginNames_shouldReturnPluginNames()
+ {
+ $this->service->returnFixture('v2.0_themes.json');
+ $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = true);
+ $this->assertSame(array(
+ 'AnotherBlackTheme',
+ 'Darkness',
+ 'Proteus_Bold',
+ 'Terrano',
+ 'CoffeeCup',
+ 'Vale',
+ 'ModernBlue',
+ 'ModernGreen'), $pluginNames);
+
+ $this->service->returnFixture('v2.0_plugins.json');
+ $pluginNames = $this->plugins->getAvailablePluginNames($themesOnly = false);
+ $this->assertSame($this->getExpectedPluginNames(), $pluginNames);
+ }
+
+ public function test_getAvailablePluginNames_shouldCallCorrectApi()
+ {
+ $this->plugins->getAvailablePluginNames($themesOnly = true);
+ $this->assertSame('themes', $this->service->action);
+
+ $this->plugins->getAvailablePluginNames($themesOnly = false);
+ $this->assertSame('plugins', $this->service->action);
+ }
+
+ public function test_getPluginInfo_noSuchPluginExists()
+ {
+ $plugin = $this->plugins->getPluginInfo('fooBarBaz');
+ $this->assertSame(array(), $plugin);
+ }
+
+ public function test_getPluginInfo_notInstalledPlugin_shouldEnrichPluginInformation()
+ {
+ $this->service->returnFixture('v2.0_plugins_Barometer_info.json');
+ $plugin = $this->plugins->getPluginInfo('Barometer');
+
+ unset($plugin['versions']);
+
+ $expected = array (
+ 'name' => 'Barometer',
+ 'displayName' => 'Barometer',
+ 'owner' => 'halfdan',
+ 'description' => 'Live Plugin that shows the current number of visitors on the page.',
+ 'homepage' => 'http://github.com/halfdan/piwik-barometer-plugin',
+ 'createdDateTime' => '2014-12-23 00:38:20',
+ 'donate' =>
+ array (
+ 'flattr' => 'https://flattr.com/profile/test1',
+ 'bitcoin' => NULL,
+ ),
+ 'support' =>
+ array (
+ array (
+ 'name' => 'Documentation',
+ 'key' => 'docs',
+ 'value' => 'https://barometer.org/docs/',
+ 'type' => 'url',
+ ),
+ array (
+ 'name' => 'Wiki',
+ 'key' => 'wiki',
+ 'value' => 'https://github.com/barometer/piwik/wiki',
+ 'type' => 'url',
+ ),
+ array (
+ 'name' => 'Forum',
+ 'key' => 'forum',
+ 'value' => 'https://baromter.forum.org',
+ 'type' => 'url',
+ ),
+ array (
+ 'name' => 'Email',
+ 'key' => 'email',
+ 'value' => 'barometer@example.com',
+ 'type' => 'email',
+ ),
+ array (
+ 'name' => 'IRC',
+ 'key' => 'irc',
+ 'value' => 'irc://freenode/baromter',
+ 'type' => 'text',
+ ),
+ array (
+ 'name' => 'Issues / Bugs',
+ 'key' => 'issues',
+ 'value' => 'https://github.com/barometer/issues',
+ 'type' => 'url',
+ ),
+ array (
+ 'name' => 'Source',
+ 'key' => 'source',
+ 'value' => 'https://github.com/barometer/piwik/',
+ 'type' => 'url',
+ ),
+ array (
+ 'name' => 'RSS',
+ 'key' => 'rss',
+ 'value' => 'https://barometer.org/feed/',
+ 'type' => 'url',
+ ),
+ ),
+ 'isTheme' => false,
+ 'keywords' => array ('barometer','live',),
+ 'basePrice' => 0,
+ 'authors' =>
+ array (array (
+ 'name' => 'Fabian Becker',
+ 'email' => 'test8@example.com',
+ 'homepage' => 'http://geekproject.eu',
+ ),),
+ 'repositoryUrl' => 'https://github.com/halfdan/piwik-barometer-plugin',
+ 'lastUpdated' => 'Intl_4or41Intl_Time_AMt_357Intl_Time_AMt_S12ort',
+ 'latestVersion' => '0.5.0',
+ 'numDownloads' => 0,
+ 'screenshots' =>
+ array (
+ 'https://plugins.piwik.org/Barometer/images/0.5.0/piwik-barometer-01.png',
+ 'https://plugins.piwik.org/Barometer/images/0.5.0/piwik-barometer-02.png',
+ ),
+ 'previews' =>
+ array (array (
+ 'type' => 'demo',
+ 'provider' => 'link',
+ 'url' => 'https://demo.piwik.org',
+ ),),
+ 'activity' =>
+ array (
+ 'numCommits' => '31',
+ 'numContributors' => '3',
+ 'lastCommitDate' => NULL,
+ ),
+ 'featured' => false,
+ 'isFree' => true,
+ 'isPaid' => false,
+ 'isCustomPlugin' => false,
+ 'shop' => NULL,
+ 'isDownloadable' => true,
+ 'consumer' => array ('license' => NULL,),
+ 'isInstalled' => false,
+ 'isActivated' => false,
+ 'isInvalid' => true,
+ 'canBeUpdated' => false,
+ 'hasExceededLicense' => false,
+ 'missingRequirements' =>array ( ),
+ 'isMissingLicense' => false
+ );
+ $this->assertEquals($expected, $plugin);
+ }
+
+ public function test_getPluginInfo_notInstalledPlugin_shouldCallCorrectService()
+ {
+ $this->plugins->getPluginInfo('Barometer');
+ $this->assertSame('plugins/Barometer/info', $this->service->action);
+ }
+
+ public function test_searchPlugins_WithSearchAndNoPluginsFound_shouldCallCorrectApi()
+ {
+ $this->service->returnFixture('v2.0_plugins-query-nomatchforthisquery.json');
+ $this->plugins->setPluginsHavingUpdateCache(array());
+ $plugins = $this->plugins->searchPlugins($query = 'nomatchforthisquery', $sort = Sort::DEFAULT_SORT, $themesOnly = false);
+
+ $this->assertSame(array(), $plugins);
+ $this->assertSame('plugins', $this->service->action);
+
+ $params = array(
+ 'keywords' => '',
+ 'purchase_type' => '',
+ 'query' => 'nomatchforthisquery',
+ 'sort' => Sort::DEFAULT_SORT,
+ 'release_channel' => 'latest_stable',
+ 'prefer_stable' => 1,
+ 'piwik' => '2.16.3',
+ 'php' => '7.0.1',
+ 'mysql' => '5.7.1',
+ 'num_users' => 5,
+ 'num_websites' => 21,
+ );
+ $this->assertSame($params, $this->service->params);
+ }
+
+ public function test_searchThemes_ShouldCallCorrectApi()
+ {
+ $this->service->returnFixture('v2.0_themes.json');
+ $this->plugins->setPluginsHavingUpdateCache(array());
+ $plugins = $this->plugins->searchPlugins($query = '', $sort = Sort::DEFAULT_SORT, $themesOnly = true);
+
+ $this->assertCount(8, $plugins);
+ $this->assertSame('AnotherBlackTheme', $plugins[0]['name']);
+ $this->assertSame('themes', $this->service->action);
+
+ $params = array(
+ 'keywords' => '',
+ 'purchase_type' => '',
+ 'query' => '',
+ 'sort' => Sort::DEFAULT_SORT,
+ 'release_channel' => 'latest_stable',
+ 'prefer_stable' => 1,
+ 'piwik' => '2.16.3',
+ 'php' => '7.0.1',
+ 'mysql' => '5.7.1',
+ 'num_users' => 5,
+ 'num_websites' => 21,
+ );
+ $this->assertSame($params, $this->service->params);
+ }
+
+ public function test_searchPlugins_manyPluginsFound_shouldEnrichAll()
+ {
+ $this->service->returnFixture('v2.0_plugins.json');
+ $plugins = $this->plugins->searchPlugins($query = '', $sort = Sort::DEFAULT_SORT, $themesOnly = false);
+
+ $this->assertCount(54, $plugins);
+ $names = array_map(function ($plugin) {
+ return $plugin['name'];
+ }, $plugins);
+ $this->assertSame($this->getExpectedPluginNames(), $names);
+
+ foreach ($plugins as $plugin) {
+ $name = $plugin['name'];
+ $this->assertFalse($plugin['isTheme']);
+ $this->assertNotEmpty($plugin['homepage']);
+
+ $piwikProCampaign = 'pk_campaign=App_ProfessionalServices&pk_medium=Marketplace&pk_source=Piwik_App';
+
+ if ($name === 'SecurityInfo') {
+ $this->assertTrue($plugin['isFree']);
+ $this->assertFalse($plugin['isPaid']);
+ $this->assertTrue(in_array($plugin['isInstalled'], array(true, false), true));
+ $this->assertFalse($plugin['isInvalid']);
+ $this->assertTrue(isset($plugin['canBeUpdated']));
+ $this->assertSame(array(), $plugin['missingRequirements']);
+ $this->assertSame(Plugin\Manager::getInstance()->isPluginActivated('SecurityInfo'), $plugin['isActivated']);
+ } elseif ($name === 'SimplePageBuilder') {
+ // should add campaign parameters if Piwik PRO plugin
+ $this->assertSame('https://github.com/PiwikPRO/SimplePageBuilder?' . $piwikProCampaign . '&pk_content=SimplePageBuilder', $plugin['homepage']);
+ }
+
+ if ($plugin['owner'] === 'PiwikPRO') {
+ $this->assertContains($piwikProCampaign, $plugin['homepage']);
+ } else {
+ $this->assertNotContains($piwikProCampaign, $plugin['homepage']);
+ }
+ }
+ }
+
+ public function test_getAllPaidPlugins_shouldFetchOnlyPaidPlugins()
+ {
+ $this->plugins->getAllPaidPlugins();
+ $this->assertSame('plugins', $this->service->action);
+ $this->assertSame(PurchaseType::TYPE_PAID, $this->service->params['purchase_type']);
+ $this->assertSame('', $this->service->params['query']);
+ }
+
+ public function test_getAllFreePlugins_shouldFetchOnlyFreePlugins()
+ {
+ $this->plugins->getAllFreePlugins();
+ $this->assertSame('plugins', $this->service->action);
+ $this->assertSame(PurchaseType::TYPE_FREE, $this->service->params['purchase_type']);
+ $this->assertSame('', $this->service->params['query']);
+ }
+
+ public function test_getAllPlugins_shouldFetchFreeAndPaidPlugins()
+ {
+ $this->plugins->getAllPlugins();
+ $this->assertSame('plugins', $this->service->action);
+ $this->assertSame(PurchaseType::TYPE_ALL, $this->service->params['purchase_type']);
+ $this->assertSame('', $this->service->params['query']);
+ }
+
+ public function test_getAllThemes_shouldFetchFreeAndPaidThemes()
+ {
+ $this->plugins->getAllThemes();
+ $this->assertSame('themes', $this->service->action);
+ $this->assertSame(PurchaseType::TYPE_ALL, $this->service->params['purchase_type']);
+ $this->assertSame('', $this->service->params['query']);
+ }
+
+ public function test_getPluginsHavingUpdate_shouldReturnEnrichedPluginUpdatesForPluginsFoundOnTheMarketplace()
+ {
+ $this->service->returnFixture(array(
+ 'v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json',
+ 'emptyObjectResponse.json',
+ 'emptyObjectResponse.json',
+ 'emptyObjectResponse.json',
+ 'emptyObjectResponse.json',
+ 'emptyObjectResponse.json',
+ 'emptyObjectResponse.json',
+ 'emptyObjectResponse.json',
+ 'v2.0_plugins_TreemapVisualization_info.json'
+ ));
+ $apis = array();
+ $this->service->setOnFetchCallback(function ($action, $params) use (&$apis) {
+ $apis[] = $action;
+ });
+
+ $updates = $this->plugins->getPluginsHavingUpdate();
+ $pluginManager = Plugin\Manager::getInstance();
+ $pluginName = 'TreemapVisualization';
+
+ $this->assertCount(1, $updates);
+ $plugin = $updates[0];
+ $this->assertSame($pluginName, $plugin['name']);
+ $this->assertSame($pluginManager->getLoadedPlugin($pluginName)->getVersion(), $plugin['currentVersion']);
+ $this->assertSame($pluginManager->isPluginActivated($pluginName), $plugin['isActivated']);
+ $this->assertSame(array(), $plugin['missingRequirements']);
+ $this->assertSame('https://github.com/piwik/plugin-TreemapVisualization/commits/1.0.1', $plugin['repositoryChangelogUrl']);
+
+ $expectedApiCalls = array(
+ 'plugins/checkUpdates',
+ 'plugins/AnonymousPiwikUsageMeasurement/info',
+ 'plugins/CustomAlerts/info',
+ 'plugins/CustomDimensions/info',
+ 'plugins/LogViewer/info',
+ 'plugins/QueuedTracking/info',
+ 'plugins/SecurityInfo/info',
+ 'plugins/TasksTimetable/info',
+ 'plugins/TreemapVisualization/info'
+ );
+ $this->assertSame($expectedApiCalls, $apis);
+ }
+
+ private function getExpectedPluginNames()
+ {
+ return array (
+ 'AdminNotification',
+ 'AdvancedCampaignReporting',
+ 'AnonymousPiwikUsageMeasurement',
+ 'ApiGetWithSitesInfo',
+ 'Bandwidth',
+ 'Barometer',
+ 'Chat',
+ 'ClickHeat',
+ 'Counter',
+ 'CustomAlerts',
+ 'CustomDimensions',
+ 'CustomOptOut',
+ 'CustomTrackerJs',
+ 'ExcludeByDDNS',
+ 'FeedAnnotation',
+ 'FlagCounter',
+ 'FreeMobileMessaging',
+ 'GoogleAuthenticator',
+ 'GrabGravatar',
+ 'InterSites',
+ 'IntranetGeoIP',
+ 'Ip2Hostname',
+ 'IP2Location',
+ 'IPv6Usage',
+ 'kDebug',
+ 'LdapConnection',
+ 'LdapVisitorInfo',
+ 'LiveTab',
+ 'LoginHttpAuth',
+ 'LoginRevokable',
+ 'LogViewer',
+ 'page2images-visual-link',
+ 'PaidPlugin1',
+ 'PerformanceInfo',
+ 'PerformanceMonitor',
+ 'PlatformsReport',
+ 'QueuedTracking',
+ 'ReferrersManager',
+ 'RerUserDates',
+ 'SecurityInfo',
+ 'ServerMonitor',
+ 'ShibbolethLogin',
+ 'ShortcodeTracker',
+ 'SimplePageBuilder',
+ 'SimpleSysMon',
+ 'SiteMigration',
+ 'SnoopyBehavioralScoring',
+ 'TasksTimetable',
+ 'TopPagesByActions',
+ 'TrackingCodeCustomizer',
+ 'TreemapVisualization',
+ 'UptimeRobotMonitor',
+ 'VisitorAvatar',
+ 'WebsiteGroups'
+ );
+ }
+}
diff --git a/plugins/Marketplace/tests/Integration/ServiceTest.php b/plugins/Marketplace/tests/Integration/ServiceTest.php
new file mode 100644
index 0000000000..703ef77367
--- /dev/null
+++ b/plugins/Marketplace/tests/Integration/ServiceTest.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Integration\Api;
+
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as TestService;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group Service
+ * @group ServiceTest
+ */
+class ServiceTest extends IntegrationTestCase
+{
+
+ /**
+ * @var TestService
+ */
+ private $service;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->service = new TestService();
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+ * @expectedExceptionCode 101
+ * @expectedExceptionMessage Requested plugin does not exist.
+ */
+ public function test_fetch_throwsApiError_WhenMarketplaceReturnsAnError()
+ {
+ $this->service->returnFixture('v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json');
+ $this->service->fetch('plugins/CustomPlugin1/info', array());
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+ * @expectedExceptionCode 100
+ * @expectedExceptionMessage There was an error reading the response from the Marketplace
+ */
+ public function test_fetch_throwsHttpError_WhenMarketplaceReturnsNoResultWhichMeansHttpError()
+ {
+ $this->service->setOnDownloadCallback(function () {
+ return null;
+ });
+ $this->service->fetch('plugins/CustomPlugin1/info', array());
+ }
+
+ public function test_fetch_jsonDecodesTheHttpResponse()
+ {
+ $this->service->returnFixture('v2.0_consumer-access_token-consumer1_paid2_custom1.json');
+ $consumer = $this->service->fetch('consumer', array());
+ $this->assertTrue(is_array($consumer));
+ $this->assertNotEmpty($consumer);
+ }
+
+}
diff --git a/plugins/CorePluginsAdmin/tests/Integration/UpdateCommunicationTest.php b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
index 06681f404d..bb7f46fba7 100644
--- a/plugins/CorePluginsAdmin/tests/Integration/UpdateCommunicationTest.php
+++ b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
@@ -6,20 +6,19 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-namespace Piwik\Plugins\CorePluginsAdmin\tests\Integration;
+namespace Piwik\Plugins\Marketplace\tests\Integration;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Option;
-use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication;
use Piwik\Plugins\CoreUpdater\SystemSettings;
+use Piwik\Plugins\Marketplace\UpdateCommunication;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
- * Class Plugins_CorePluginsAdmin_UpdateCommunicationTest
- *
* @group Plugins
+ * @group Marketplace
*/
class UpdateCommunicationTest extends IntegrationTestCase
{
@@ -155,7 +154,7 @@ Installation_HappyAnalysing";
*/
private function getCommunicationMock($pluginsHavingUpdate)
{
- $mock = $this->getMockBuilder('\Piwik\Plugins\CorePluginsAdmin\UpdateCommunication')
+ $mock = $this->getMockBuilder('\Piwik\Plugins\Marketplace\UpdateCommunication')
->setMethods(array('getPluginsHavingUpdate', 'sendEmailNotification'))
->setConstructorArgs(array($this->settings))
->getMock();
diff --git a/plugins/Marketplace/tests/System/Api/ClientTest.php b/plugins/Marketplace/tests/System/Api/ClientTest.php
new file mode 100644
index 0000000000..e38fb809e1
--- /dev/null
+++ b/plugins/Marketplace/tests/System/Api/ClientTest.php
@@ -0,0 +1,299 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\System\Api;
+
+use Piwik\Cache;
+use Piwik\Plugin;
+use Piwik\Plugins\Marketplace\Api\Client;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Plugins\Marketplace\Environment;
+use Piwik\Plugins\Marketplace\Input\PurchaseType;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+use Piwik\Version;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service as TestService;
+use Psr\Log\NullLogger;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group ClientTest
+ * @group Client
+ */
+class ClientTest extends SystemTestCase
+{
+ private $domain = 'http://plugins.piwik.org';
+
+ /**
+ * @var Client
+ */
+ private $client;
+
+ /**
+ * @var Environment
+ */
+ private $environment;
+
+ public function setUp()
+ {
+ $releaseChannels = new Plugin\ReleaseChannels(Plugin\Manager::getInstance());
+ $this->environment = new Environment($releaseChannels);
+
+ $this->client = $this->buildClient();
+ $this->getCache()->flushAll();
+ }
+
+ public function test_getPluginInfo_existingPluginOnTheMarketplace()
+ {
+ $plugin = $this->client->getPluginInfo('SecurityInfo');
+
+ $expectedPluginKeys = array(
+ 'name',
+ 'displayName',
+ 'owner',
+ 'description',
+ 'homepage',
+ 'createdDateTime',
+ 'donate',
+ 'support',
+ 'isTheme',
+ 'keywords',
+ 'basePrice',
+ 'authors',
+ 'repositoryUrl',
+ 'lastUpdated',
+ 'latestVersion',
+ 'numDownloads',
+ 'screenshots',
+ 'previews',
+ 'activity',
+ 'featured',
+ 'isFree',
+ 'isPaid',
+ 'isCustomPlugin',
+ 'shop',
+ 'versions',
+ 'isDownloadable',
+ 'consumer');
+
+ $this->assertNotEmpty($plugin);
+ $this->assertEquals($expectedPluginKeys, array_keys($plugin));
+ $this->assertSame('SecurityInfo', $plugin['name']);
+ $this->assertSame('piwik', $plugin['owner']);
+ $this->assertTrue(is_array($plugin['keywords']));
+ $this->assertNotEmpty($plugin['authors']);
+ $this->assertGreaterThan(1000, $plugin['numDownloads']);
+ $this->assertTrue($plugin['isFree']);
+ $this->assertFalse($plugin['isPaid']);
+ $this->assertFalse($plugin['isCustomPlugin']);
+ $this->assertNotEmpty($plugin['versions']);
+
+ $lastVersion = $plugin['versions'][count($plugin['versions']) - 1];
+ $this->assertEquals(array('name', 'release', 'requires', 'numDownloads', 'license', 'repositoryChangelogUrl', 'readmeHtml', 'download'), array_keys($lastVersion));
+ $this->assertNotEmpty($lastVersion['download']);
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Exception
+ * @expectedExceptionMessage Requested plugin does not exist.
+ */
+ public function test_getPluginInfo_shouldThrowException_IfPluginDoesNotExistOnMarketplace()
+ {
+ $this->client->getPluginInfo('NotExistingPlugIn');
+ }
+
+ public function test_getConsumer_shouldReturnNullAndNotThrowException_IfNotAuthorized()
+ {
+ $this->assertNull($this->client->getConsumer());
+ }
+
+ public function test_isValidConsumer_shouldReturnFalseAndNotThrowException_IfNotAuthorized()
+ {
+ $this->assertFalse($this->client->isValidConsumer());
+ }
+
+ public function test_searchForPlugins_requestAll()
+ {
+ $plugins = $this->client->searchForPlugins($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+ $this->assertGreaterThan(15, count($plugins));
+
+ foreach ($plugins as $plugin) {
+ $this->assertNotEmpty($plugin['name']);
+ $this->assertFalse($plugin['isTheme']);
+ }
+ }
+
+ public function test_searchForPlugins_onlyFree()
+ {
+ $plugins = $this->client->searchForPlugins($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_FREE);
+
+ $this->assertGreaterThan(15, count($plugins));
+
+ foreach ($plugins as $plugin) {
+ $this->assertTrue($plugin['isFree']);
+ $this->assertFalse($plugin['isPaid']);
+ $this->assertFalse($plugin['isTheme']);
+ }
+ }
+
+ public function test_searchForPlugins_onlyPaid()
+ {
+ $plugins = $this->client->searchForPlugins($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_PAID);
+
+ $this->assertLessThan(30, count($plugins));
+
+ foreach ($plugins as $plugin) {
+ $this->assertFalse($plugin['isFree']);
+ $this->assertTrue($plugin['isPaid']);
+ $this->assertFalse($plugin['isTheme']);
+ }
+ }
+
+ public function test_searchForPlugins_withKeyword()
+ {
+ $plugins = $this->client->searchForPlugins($keywords = 'login', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+ $this->assertLessThan(30, count($plugins));
+
+ foreach ($plugins as $plugin) {
+ $this->assertContains($keywords, $plugin['keywords']);
+ }
+ }
+
+ public function test_searchForThemes_requestAll()
+ {
+ $plugins = $this->client->searchForThemes($keywords = '', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+ $this->assertGreaterThanOrEqual(1, count($plugins));
+ $this->assertLessThan(50, count($plugins));
+
+ foreach ($plugins as $plugin) {
+ $this->assertNotEmpty($plugin['name']);
+ $this->assertTrue($plugin['isTheme']);
+ }
+ }
+
+ public function test_getDownloadUrl()
+ {
+ $url = $this->client->getDownloadUrl('SecurityInfo');
+
+ $start = $this->domain . '/api/2.0/plugins/SecurityInfo/download/';
+ $end = '?coreVersion=' . Version::VERSION;
+
+ $this->assertStringStartsWith($start, $url);
+ $this->assertStringEndsWith($end, $url);
+
+ $version = str_replace(array($start, $end), '', $url);
+
+ $this->assertNotEmpty($version);
+ $this->assertRegExp('/\d+\.\d+\.\d+/', $version);
+ }
+
+ public function test_clientResponse_shouldBeCached()
+ {
+ $params = array(
+ 'keywords' => 'login',
+ 'purchase_type' => '',
+ 'query' => '',
+ 'sort' => '',
+ 'release_channel' => 'latest_stable',
+ 'prefer_stable' => 1,
+ 'piwik' => Version::VERSION,
+ 'php' => phpversion(),
+ 'mysql' => $this->environment->getMySQLVersion(),
+ 'num_users' => $this->environment->getNumUsers(),
+ 'num_websites' => $this->environment->getNumWebsites()
+ );
+ $id = 'marketplace.api.2.0.plugins.' . md5(http_build_query($params));
+
+ $cache = $this->getCache();
+ $this->assertFalse($cache->contains($id));
+
+ $this->client->searchForPlugins($keywords = 'login', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+ $this->assertTrue($cache->contains($id));
+ $cachedPlugins = $cache->fetch($id);
+
+ $this->assertInternalType('array', $cachedPlugins);
+ $this->assertNotEmpty($cachedPlugins);
+ $this->assertGreaterThan(30, $cachedPlugins);
+ }
+
+ public function test_cachedClientResponse_shouldBeReturned()
+ {
+ $params = array(
+ 'keywords' => 'login',
+ 'purchase_type' => '',
+ 'query' => '',
+ 'sort' => '',
+ 'release_channel' => 'latest_stable',
+ 'prefer_stable' => 1,
+ 'piwik' => Version::VERSION,
+ 'php' => phpversion(),
+ 'mysql' => $this->environment->getMySQLVersion(),
+ 'num_users' => $this->environment->getNumUsers(),
+ 'num_websites' => $this->environment->getNumWebsites());
+ $id = 'marketplace.api.2.0.plugins.' . md5(http_build_query($params));
+
+ $cache = $this->getCache();
+ $cache->save($id, array('plugins' => array(array('name' => 'foobar'))));
+
+ $result = $this->client->searchForPlugins($keywords = 'login', $query = '', $sort = '', $purchaseType = PurchaseType::TYPE_ALL);
+
+ $this->assertSame(array(array('name' => 'foobar')), $result);
+ }
+
+ public function test_getInfoOfPluginsHavingUpdate()
+ {
+ $service = new TestService($this->domain);
+ $client = $this->buildClient($service);
+
+ $pluginTest = array();
+ if (!Plugin\Manager::getInstance()->isPluginLoaded('CustomAlerts')) {
+ $pluginTest[] = Plugin\Manager::getInstance()->loadPlugin('CustomAlerts');
+ } else {
+ $pluginTest[] = Plugin\Manager::getInstance()->getLoadedPlugin('CustomAlerts');
+ }
+
+ $client->getInfoOfPluginsHavingUpdate($pluginTest);
+
+ $this->assertSame('plugins/checkUpdates', $service->action);
+ $this->assertSame(array('plugins', 'release_channel', 'prefer_stable', 'piwik', 'php', 'mysql', 'num_users', 'num_websites'), array_keys($service->params));
+
+ $plugins = $service->params['plugins'];
+ $this->assertInternalType('string', $plugins);
+ $this->assertJson($plugins);
+ $plugins = json_decode($plugins, true);
+
+ $names = array(
+ 'CustomAlerts' => true,
+ );
+ foreach ($plugins['plugins'] as $plugin) {
+ $this->assertNotEmpty($plugin['version']);
+ unset($names[$plugin['name']]);
+ }
+
+ $this->assertEmpty($names);
+ }
+
+ private function buildClient($service = null)
+ {
+ if (!isset($service)) {
+ $service = new Service($this->domain);
+ }
+
+ return new Client($service, $this->getCache(), new NullLogger(), $this->environment);
+ }
+
+ private function getCache()
+ {
+ return Cache::getLazyCache();
+ }
+
+}
diff --git a/plugins/Marketplace/tests/System/Api/ServiceTest.php b/plugins/Marketplace/tests/System/Api/ServiceTest.php
new file mode 100644
index 0000000000..6a4b4dab29
--- /dev/null
+++ b/plugins/Marketplace/tests/System/Api/ServiceTest.php
@@ -0,0 +1,165 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\System\Api;
+
+use Piwik\Container\StaticContainer;
+use Piwik\Filesystem;
+use Piwik\Plugins\Marketplace\Api\Service;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+
+/**
+ * @group Plugins
+ * @group Marketplace
+ * @group ServiceTest
+ * @group Service
+ */
+class ServiceTest extends SystemTestCase
+{
+ private $domain = 'http://plugins.piwik.org';
+
+ public function test_shouldUseVersion2()
+ {
+ $service = $this->buildService();
+ $this->assertSame('2.0', $service->getVersion());
+ }
+
+ public function test_getDomain_shouldReturnPassedDomain()
+ {
+ $service = $this->buildService();
+ $this->assertSame($this->domain, $service->getDomain());
+ }
+
+ public function test_authenticate_getAccessToken_shouldSaveToken_IfOnlyHasAlNumValues()
+ {
+ $service = $this->buildService();
+ $service->authenticate('123456789abcdefghij');
+ $this->assertSame('123456789abcdefghij', $service->getAccessToken());
+ }
+
+ public function test_hasAccessToken()
+ {
+ $service = $this->buildService();
+ $this->assertFalse($service->hasAccessToken());
+ $service->authenticate('123456789abcdefghij');
+ $this->assertTrue($service->hasAccessToken());
+ }
+
+ public function test_authenticate_getAccessToken_emptyTokenShouldUnsetToken()
+ {
+ $service = $this->buildService();
+ $service->authenticate('');
+ $this->assertNull($service->getAccessToken());
+ }
+
+ public function test_authenticate_getAccessToken_invalidTokenContainingInvalidCharactersShouldBeIgnored()
+ {
+ $service = $this->buildService();
+ $service->authenticate('123_-4?');
+ $this->assertNull($service->getAccessToken());
+ }
+
+ public function test_fetch_shouldCallMarketplaceApiWithActionAndReturnArrays()
+ {
+ $service = $this->buildService();
+ $response = $service->fetch('plugins', array());
+
+ $this->assertTrue(is_array($response));
+ $this->assertArrayHasKey('plugins', $response);
+ $this->assertGreaterThanOrEqual(30, count($response['plugins']));
+ foreach ($response['plugins'] as $plugin) {
+ $this->assertArrayHasKey('name', $plugin);
+ }
+ }
+
+ public function test_fetch_shouldCallMarketplaceApiWithGivenParamsAndReturnArrays()
+ {
+ $keyword = 'login';
+ $service = $this->buildService();
+ $response = $service->fetch('plugins', array('keywords' => $keyword));
+
+ $this->assertLessThan(20, count($response['plugins']));
+ foreach ($response['plugins'] as $plugin) {
+ $this->assertContains($keyword, $plugin['keywords']);
+ }
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+ * @expectedExceptionMessage Not authenticated
+ * @expectedExceptionCode 101
+ */
+ public function test_fetch_shouldThrowException_WhenNotBeingAuthenticated()
+ {
+ $service = $this->buildService();
+ $service->fetch('consumer', array());
+ }
+
+ /**
+ * @expectedException \Piwik\Plugins\Marketplace\Api\Service\Exception
+ * @expectedExceptionMessage Not authenticated
+ * @expectedExceptionCode 101
+ */
+ public function test_fetch_shouldThrowException_WhenBeingAuthenticatedWithInvalidTokens()
+ {
+ $service = $this->buildService();
+ $service->authenticate('1234567890');
+ $service->fetch('consumer', array());
+ }
+
+ public function test_download_shouldReturnRawResultForAbsoluteUrl()
+ {
+ $service = $this->buildService();
+ $response = $service->download($this->domain . '/api/2.0/plugins');
+
+ $this->assertInternalType('string', $response);
+ $this->assertNotEmpty($response);
+ $this->assertStringStartsWith('{"plugins"', $response);
+ }
+
+ public function test_download_shouldSaveResultInFileIfPathGiven()
+ {
+ $path = StaticContainer::get('path.tmp') . '/marketplace_test_file.json';
+
+ Filesystem::deleteFileIfExists($path);
+
+ $service = $this->buildService();
+ $response = $service->download($this->domain . '/api/2.0/plugins', $path);
+
+ $this->assertTrue($response);
+ $this->assertFileExists($path);
+ $content = file_get_contents($path);
+ $this->assertNotEmpty($content);
+ $this->assertStringStartsWith('{"plugins"', $content);
+
+ Filesystem::deleteFileIfExists($path);
+ }
+
+ public function test_timeout_invalidService_ShouldFailIfNotReachable()
+ {
+ $start = time();
+
+ $service = $this->buildService();
+ try {
+ $service->download('http://notexisting49.plugins.piwk.org/api/2.0/plugins', null, $timeout = 1);
+ $this->fail('An expected exception has not been thrown');
+ } catch (\Exception $e) {
+
+ }
+
+ $diff = time() - $start;
+ $this->assertLessThanOrEqual(2, $diff);
+ }
+
+ private function buildService()
+ {
+ return new Service($this->domain);
+ }
+
+
+}
diff --git a/plugins/Marketplace/tests/Unit/ConsumerTest.php b/plugins/Marketplace/tests/Unit/ConsumerTest.php
new file mode 100644
index 0000000000..b3e4f144f6
--- /dev/null
+++ b/plugins/Marketplace/tests/Unit/ConsumerTest.php
@@ -0,0 +1,153 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Marketplace\tests\Unit;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Service;
+use Piwik\Plugins\Marketplace\tests\Framework\Mock\Consumer as ConsumerBuilder;
+
+/**
+ * @group Marketplace
+ * @group ConsumerTest
+ * @group Consumer
+ * @group Plugins
+ */
+class ConsumerTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Service
+ */
+ private $service;
+
+ public function setUp()
+ {
+ $this->service = new Service();
+ }
+
+ /**
+ * @dataProvider getConsumerNotAuthenticated
+ */
+ public function test_isValidConsumer_shouldReturnFalse_WhenNotAuthenticedBecauseNoTokenSetOrInvalidToken($fixture)
+ {
+ $this->service->returnFixture($fixture);
+ $this->assertFalse($this->buildConsumer()->isValidConsumer());
+ }
+
+ /**
+ * @dataProvider getConsumerAuthenticated
+ */
+ public function test_isValidConsumer_shouldReturnTrue_WhenValidTokenGiven($fixture)
+ {
+ $this->service->returnFixture($fixture);
+ $this->assertTrue($this->buildConsumer()->isValidConsumer());
+ }
+
+ public function test_getConsumer_shouldReturnConsumerInformation_WhenValid()
+ {
+ $this->service->returnFixture('v2.0_consumer-access_token-consumer1_paid2_custom1.json');
+
+ $expected = array (
+ 'licenses' =>
+ array (
+ 0 =>
+ array (
+ 'startDate' => '2014-05-27 04:46:05',
+ 'endDate' => '2014-06-01 06:22:35',
+ 'nextPaymentDate' => NULL,
+ 'status' => 'Cancelled',
+ 'productType' => 'Up to 4 users',
+ 'isValid' => false,
+ 'isExceeded' => false,
+ 'isExpiredSoon' => false,
+ 'plugin' => array('name' => 'PaidPlugin1', 'displayName' => 'Paid Plugin 1', 'htmlUrl' => 'https://plugins.piwik.org/PaidPlugin1'),
+ ),
+ 1 =>
+ array (
+ 'startDate' => '2016-05-20 04:46:05',
+ 'endDate' => '2030-05-27 11:03:06',
+ 'nextPaymentDate' => '2030-05-27 11:03:06',
+ 'status' => 'Active',
+ 'productType' => '5 to 15 users',
+ 'isValid' => true,
+ 'isExceeded' => NULL,
+ 'isExpiredSoon' => false,
+ 'plugin' => array('name' => 'PaidPlugin2', 'displayName' => 'Paid Plugin 2', 'htmlUrl' => 'https://plugins.piwik.org/PaidPlugin2'),
+ ),
+ 2 =>
+ array (
+ 'startDate' => '2016-05-25 04:46:05',
+ 'endDate' => '2030-06-03 11:03:06',
+ 'nextPaymentDate' => '2030-06-03 11:03:06',
+ 'status' => 'Active',
+ 'productType' => 'Up to 4 users',
+ 'isValid' => true,
+ 'isExceeded' => NULL,
+ 'isExpiredSoon' => false,
+ 'plugin' => array('name' => 'CustomPlugin1', 'displayName' => 'Custom Plugin 1', 'htmlUrl' => ''),
+ ),
+ ),
+ 'loginUrl' => 'https://shop.piwik.org/my-account',
+ );
+ $this->assertEquals($expected, $this->buildConsumer()->getConsumer());
+ }
+
+ public function test_getConsumer_shouldNotReturnAnyInformationWhenNotAuthenticated()
+ {
+ $this->service->returnFixture('v2.0_consumer-access_token-notexistingtoken.json');
+
+ $this->assertSame(array(), $this->buildConsumer()->getConsumer());
+ }
+
+ public function test_getConsumer_shouldNotReturnInformationWhenAuthenticatedButNoLicense()
+ {
+ $this->service->returnFixture('v2.0_consumer-access_token-validbutnolicense.json');
+
+ $expected = array(
+ 'licenses' => array(),
+ 'loginUrl' => 'https://shop.piwik.org/my-account'
+ );
+
+ $this->assertSame($expected, $this->buildConsumer()->getConsumer());
+ }
+
+ public function getConsumerNotAuthenticated()
+ {
+ return array(
+ array('v2.0_consumer_validate.json'),
+ array('v2.0_consumer_validate-access_token-notexistingtoken.json'),
+ );
+ }
+
+ public function getConsumerAuthenticated()
+ {
+ return array(
+ array('v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json'),
+ array('v2.0_consumer_validate-access_token-consumer2_paid1.json'),
+ array('v2.0_consumer_validate-access_token-validbutnolicense.json') // valid token but no license
+ );
+ }
+
+ public function test_buildInvalidLicenseKey()
+ {
+ $isValid = Consumer::buildNoLicense()->isValidConsumer();
+
+ $this->assertFalse($isValid);
+ }
+
+ public function test_buildValidLicenseKey()
+ {
+ $isValid = Consumer::buildValidLicense()->isValidConsumer();
+
+ $this->assertTrue($isValid);
+ }
+
+ private function buildConsumer()
+ {
+ return ConsumerBuilder::build($this->service);
+ }
+}
diff --git a/plugins/Marketplace/tests/resources/emptyObjectResponse.json b/plugins/Marketplace/tests/resources/emptyObjectResponse.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/emptyObjectResponse.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000..be9dbf2e84
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,21 @@
+{"licenses":[{"startDate":"2014-05-27 04:46:05",
+ "endDate":"2014-06-01 06:22:35",
+ "nextPaymentDate":null,"status":"Cancelled",
+ "productType":"Up to 4 users",
+ "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}},{"startDate":"2016-05-20 04:46:05",
+ "endDate":"2030-05-27 11:03:06",
+ "nextPaymentDate":"2030-05-27 11:03:06",
+ "status":"Active",
+ "productType":"5 to 15 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin2",
+ "displayName":"Paid Plugin 2",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin2"}},{"startDate":"2016-05-25 04:46:05",
+ "endDate":"2030-06-03 11:03:06",
+ "nextPaymentDate":"2030-06-03 11:03:06",
+ "status":"Active",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin1",
+ "displayName":"Custom Plugin 1",
+ "htmlUrl":""}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000..f5fce539d4
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer2_paid1.json
@@ -0,0 +1,7 @@
+{"licenses":[{"startDate":"2016-05-21 04:46:05",
+ "endDate":"2029-05-27 11:03:06",
+ "nextPaymentDate":null,"status":"Pending cancellation",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json
new file mode 100644
index 0000000000..225c302159
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-consumer3_paid1_custom2.json
@@ -0,0 +1,27 @@
+{"licenses":[{"startDate":"2016-05-22 04:46:05",
+ "endDate":"2030-05-29 11:03:06",
+ "nextPaymentDate":"2030-05-29 11:03:06",
+ "status":"Active",
+ "productType":"Unlimited users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}},{"startDate":"2016-05-23 04:46:05",
+ "endDate":"2030-06-01 11:03:06",
+ "nextPaymentDate":null,"status":"Cancelled",
+ "productType":"Up to 4 users",
+ "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin1",
+ "displayName":"Custom Plugin 1",
+ "htmlUrl":""}},{"startDate":"2016-05-23 04:46:05",
+ "endDate":"2030-06-01 11:03:06",
+ "nextPaymentDate":null,"status":"Cancelled",
+ "productType":"Up to 4 users",
+ "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin2",
+ "displayName":"Paid Plugin 2",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin2"}},{"startDate":"2016-05-24 04:46:05",
+ "endDate":"2030-06-02 11:03:06",
+ "nextPaymentDate":"2030-06-02 11:03:06",
+ "status":"Active",
+ "productType":"5 to 15 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin2",
+ "displayName":"Custom Plugin 2",
+ "htmlUrl":""}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json
new file mode 100644
index 0000000000..d9651355db
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-notexistingtoken.json
@@ -0,0 +1 @@
+{"error":"Not authenticated"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json
new file mode 100644
index 0000000000..4f7b644c44
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-access_token-validbutnolicense.json
@@ -0,0 +1 @@
+{"licenses":[],"loginUrl":"https:\/\/shop.piwik.org\/my-account"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000..ce325fabae
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer-num_users-201-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,21 @@
+{"licenses":[{"startDate":"2014-05-27 04:46:05",
+ "endDate":"2014-06-01 06:22:35",
+ "nextPaymentDate":null,"status":"Cancelled",
+ "productType":"Up to 4 users",
+ "isValid":false,"isExceeded":false,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1"}},{"startDate":"2016-05-20 04:46:05",
+ "endDate":"2030-05-27 11:03:06",
+ "nextPaymentDate":"2030-05-27 11:03:06",
+ "status":"Active",
+ "productType":"5 to 15 users",
+ "isValid":true,"isExceeded":true,"isExpiredSoon":false,"plugin":{"name":"PaidPlugin2",
+ "displayName":"Paid Plugin 2",
+ "htmlUrl":"https:\/\/plugins.piwik.org\/PaidPlugin2"}},{"startDate":"2016-05-25 04:46:05",
+ "endDate":"2030-06-03 11:03:06",
+ "nextPaymentDate":"2030-06-03 11:03:06",
+ "status":"Active",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":true,"isExpiredSoon":false,"plugin":{"name":"CustomPlugin1",
+ "displayName":"Custom Plugin 1",
+ "htmlUrl":""}}],"loginUrl":"https:\/\/shop.piwik.org\/my-account"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000..f8176db609
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1 @@
+{"isValid":true} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000..f8176db609
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer2_paid1.json
@@ -0,0 +1 @@
+{"isValid":true} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json
new file mode 100644
index 0000000000..f8176db609
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-consumer3_paid1_custom2.json
@@ -0,0 +1 @@
+{"isValid":true} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json
new file mode 100644
index 0000000000..2cc9915708
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-notexistingtoken.json
@@ -0,0 +1 @@
+{"isValid":false} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json
new file mode 100644
index 0000000000..f8176db609
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate-access_token-validbutnolicense.json
@@ -0,0 +1 @@
+{"isValid":true} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_consumer_validate.json b/plugins/Marketplace/tests/resources/v2.0_consumer_validate.json
new file mode 100644
index 0000000000..2cc9915708
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_consumer_validate.json
@@ -0,0 +1 @@
+{"isValid":false} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_info.json b/plugins/Marketplace/tests/resources/v2.0_info.json
new file mode 100644
index 0000000000..5e93a342cf
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_info.json
@@ -0,0 +1,3 @@
+{"pluginsUrl":"http:\/\/plugins.piwik.org\/",
+ "themesUrl":"http:\/\/themes.piwik.org\/",
+ "loginUrl":"https:\/\/shop.piwik.org\/my-account"} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000..50149150e6
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,142 @@
+{"plugins":[{"name":"CustomPlugin1",
+ "displayName":"Custom Plugin 1",
+ "owner":"PiwikPRO",
+ "description":"This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a previe",
+ "homepage":"https:\/\/piwik.org\/recommends\/piwik-pro-compared-to-piwik-community\/",
+ "createdDateTime":"2014-12-23 01:19:22",
+ "donate":{},"support":[],"isTheme":false,"keywords":["page2images",
+ "website",
+ "screenshot"],"basePrice":0,"authors":[{"name":"SuzhouKada",
+ "email":"test5@example.com",
+ "homepage":"http:\/\/www.page2images.com"}],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/piwik",
+ "lastUpdated":"2014-12-23 01:19:22",
+ "latestVersion":"1.0.4",
+ "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz.png",
+ "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_02.png",
+ "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_03.png"],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":true,"shop":null,"versions":[{"name":"1.0.4",
+ "release":"2014-12-23 01:19:22",
+ "requires":{},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.<\/p>\n\n<p><img src=\"https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png\" alt=\"visual-link-screenshot-on-domz.png\" \/><\/p>\n\n",
+ "faq":"<p>Who need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https.<\/p>",
+ "documentation":"",
+ "changelog":"<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/CustomPlugin1\/download\/1.0.4"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-25 04:46:05",
+ "endDate":"2030-06-03 11:03:06",
+ "nextPaymentDate":"2030-06-03 11:03:06",
+ "status":"Active",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2014-05-27 04:46:05",
+ "endDate":"2014-06-01 06:22:35",
+ "nextPaymentDate":null,"status":"Cancelled",
+ "productType":"Up to 4 users",
+ "isValid":false,"isExceeded":false,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin2",
+ "displayName":"Paid Plugin 2",
+ "owner":"TestVendor",
+ "description":"Adds a profile photo from Gravatar based on the email address stored in the User Id field.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-07-24 13:15:01",
+ "donate":{"paypal":"test4@example.com",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":["GrabGravatar",
+ "avatar",
+ "photo",
+ "profile",
+ "visitor"],"basePrice":250,"authors":[{"name":"Alnoor Pirani",
+ "email":"test2@example.com",
+ "homepage":"http:\/\/alnoorpirani.com\/"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin2",
+ "lastUpdated":"2015-07-24 13:56:30",
+ "latestVersion":"0.2.0",
+ "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/GrabGravatar\/images\/0.2.0\/Gravatar_replaces_default_avatar_when_email_known.png"],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"http:\/\/demo23.paidplugin2.org"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.2.0",
+ "release":"2015-07-24 13:56:30",
+ "requires":{"piwik":">=2.11.2"},"numDownloads":null,"license":{"name":"CommercialLicense",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>A Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.<\/p>\n\n",
+ "faq":"<p><strong>What information do I need to make this plugin work?<\/strong>\nMake sure you are capturing the email address for your visitors in the User Id field.<\/p>\n\n<p><strong>Why do some of my visitors just display the Gravatar logo instead of a photo?<\/strong>\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.11 Fixed screenshot filename<\/li>\n<li>0.1.1 Add screenshots<\/li>\n<li>0.1.0 First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/PaidPlugin2\/download\/0.2.0"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-20 04:46:05",
+ "endDate":"2030-05-27 11:03:06",
+ "nextPaymentDate":"2030-05-27 11:03:06",
+ "status":"Active",
+ "productType":"5 to 15 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000..95ee07e2f5
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-consumer2_paid1.json
@@ -0,0 +1,89 @@
+{"plugins":[{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":"2014-12-23 01:18:20",
+ "latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":"2014-12-23 01:18:20",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>~2014~<\/p>\n\n<p>2014-02-21 - Update some more code, added in notification area but it's not quite working yet (TODO - make it work)<\/p>\n\n<p>2014-02-21 - Rebranded to cacheBuster and set version to 1.0, updated code to use a better check for directory seperator<\/p>\n\n<p>2014-02-20 - v2.0\n - Updated plugin to work with Piwik 2.0.3<\/p>\n\n<p>~2013~\n Inital creation of plugin at http:\/\/www.spherexx.com under the name ClearCache<\/p>"},"download":"\/api\/2.0\/plugins\/PaidPlugin1\/download\/1.1"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-21 04:46:05",
+ "endDate":"2029-05-27 11:03:06",
+ "nextPaymentDate":null,"status":"Pending cancellation",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json
new file mode 100644
index 0000000000..739dff5855
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-access_token-notexistingtoken.json
@@ -0,0 +1,83 @@
+{"plugins":[{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":null,"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json
new file mode 100644
index 0000000000..a4fa42813e
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer1_paid2_custom1.json
@@ -0,0 +1,141 @@
+{"plugins":[{"name":"CustomPlugin1",
+ "displayName":"Custom Plugin 1",
+ "owner":"PiwikPRO",
+ "description":"This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a previe",
+ "homepage":"https:\/\/piwik.org\/recommends\/piwik-pro-compared-to-piwik-community\/",
+ "createdDateTime":"2014-12-23 01:19:22",
+ "donate":{},"support":[],"isTheme":false,"keywords":["page2images",
+ "website",
+ "screenshot"],"basePrice":0,"authors":[{"name":"SuzhouKada",
+ "email":"test5@example.com",
+ "homepage":"http:\/\/www.page2images.com"}],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/piwik",
+ "lastUpdated":null,"latestVersion":"1.0.4",
+ "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz.png",
+ "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_02.png",
+ "https:\/\/plugins.piwik.org\/Page2imagesVisualLink\/images\/1.0.4\/visual-link-screenshot-on-domz_03.png"],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":true,"shop":null,"versions":[{"name":"1.0.4",
+ "release":null,"requires":{},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.<\/p>\n\n<p><img src=\"https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png\" alt=\"visual-link-screenshot-on-domz.png\" \/><\/p>\n\n",
+ "faq":"<p>Who need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https.<\/p>",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-25 04:46:05",
+ "endDate":"2030-06-03 11:03:06",
+ "nextPaymentDate":"2030-06-03 11:03:06",
+ "status":"Active",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD",
+ "cheapest":true,"recommended":false},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD",
+ "cheapest":false,"recommended":false},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD",
+ "cheapest":false,"recommended":true}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2014-05-27 04:46:05",
+ "endDate":"2014-06-01 06:22:35",
+ "nextPaymentDate":null,"status":"Cancelled",
+ "productType":"Up to 4 users",
+ "isValid":false,"isExceeded":false,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PaidPlugin2",
+ "displayName":"Paid Plugin 2",
+ "owner":"TestVendor",
+ "description":"Adds a profile photo from Gravatar based on the email address stored in the User Id field.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-07-24 13:15:01",
+ "donate":{"paypal":"test4@example.com",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":["GrabGravatar",
+ "avatar",
+ "photo",
+ "profile",
+ "visitor"],"basePrice":250,"authors":[{"name":"Alnoor Pirani",
+ "email":"test2@example.com",
+ "homepage":"http:\/\/alnoorpirani.com\/"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin2",
+ "lastUpdated":null,"latestVersion":"0.2.0",
+ "numDownloads":null,"screenshots":["https:\/\/plugins.piwik.org\/GrabGravatar\/images\/0.2.0\/Gravatar_replaces_default_avatar_when_email_known.png"],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"http:\/\/demo23.paidplugin2.org"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.2.0",
+ "release":null,"requires":{"piwik":">=2.11.2"},"numDownloads":null,"license":{"name":"CommercialLicense",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>A Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.<\/p>\n\n",
+ "faq":"<p><strong>What information do I need to make this plugin work?<\/strong>\nMake sure you are capturing the email address for your visitors in the User Id field.<\/p>\n\n<p><strong>Why do some of my visitors just display the Gravatar logo instead of a photo?<\/strong>\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com<\/p>",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-20 04:46:05",
+ "endDate":"2030-05-27 11:03:06",
+ "nextPaymentDate":"2030-05-27 11:03:06",
+ "status":"Active",
+ "productType":"5 to 15 users",
+ "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000..0e84886b88
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
@@ -0,0 +1,90 @@
+{"plugins":[{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD",
+ "cheapest":true,"recommended":false},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD",
+ "cheapest":false,"recommended":false},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD",
+ "cheapest":false,"recommended":true}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-21 04:46:05",
+ "endDate":"2029-05-27 11:03:06",
+ "nextPaymentDate":null,"status":"Pending cancellation",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}}]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json b/plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json
new file mode 100644
index 0000000000..d8a81e419d
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins-query-nomatchforthisquery.json
@@ -0,0 +1 @@
+{"plugins":[]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins.json b/plugins/Marketplace/tests/resources/v2.0_plugins.json
new file mode 100644
index 0000000000..bbd6d9ef14
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins.json
@@ -0,0 +1,3011 @@
+{"plugins":[{"name":"AdminNotification",
+ "displayName":"Admin Notification",
+ "owner":"jbrule",
+ "description":"Adds the ability for Piwik administrators to include an informative message to all user's dashboards. This uses the built in Notification function.",
+ "homepage":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification",
+ "createdDateTime":"2015-04-13 17:52:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification",
+ "lastUpdated":"2015-11-20 19:16:03",
+ "latestVersion":"0.1.2",
+ "numDownloads":2618,"screenshots":[],"previews":[],"activity":{"numCommits":"7",
+ "numContributors":"1",
+ "lastCommitDate":"2015-11-20 19:14:09"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-04-13 17:52:03",
+ "requires":{"piwik":">=2.8.0"},"readme":"",
+ "numDownloads":3,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdminNotification\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-04-13 18:20:03",
+ "requires":{"piwik":">=2.8.0"},"readme":"",
+ "numDownloads":1302,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdminNotification\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2015-11-20 19:16:03",
+ "requires":{"piwik":">=2.12.0"},"readme":"#Piwik AdminNotification Plugin\n##Description\nAdds the ability for Piwik administrators to include an informative message on all users' dashboards. This may be useful for communicating with users in larger shared environments. In our setup we were tracking 1,900 websites with 250 users. This is a solution we wrote to allow us to easily inform our users of maintainance windows.\n\n##Instructions\nThe easiest way to install is to find the plugin in the [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\n##Changelog\n0.1.2 Tested with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Cleanup. Removed plugin template verbiage from code files.\n0.1.0 Initial Release\n\n##License\nGPL v3 \/ fair use\n\n## Support\nPlease [report any issues](https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/issues). Pull requests welcome.",
+ "numDownloads":1313,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-AdminNotification\/commits\/v1.0",
+ "readmeHtml":{"description":"\n\n<p>Adds the ability for Piwik administrators to include an informative message on all users' dashboards. This may be useful for communicating with users in larger shared environments. In our setup we were tracking 1,900 websites with 250 users. This is a solution we wrote to allow us to easily inform our users of maintainance windows.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>0.1.2 Tested with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Cleanup. Removed plugin template verbiage from code files.\n0.1.0 Initial Release<\/p>"},"download":"\/api\/2.0\/plugins\/AdminNotification\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"AdvancedCampaignReporting",
+ "displayName":"Advanced Campaign Reporting",
+ "owner":"PiwikPRO",
+ "description":"Track up to five Campaigns parameter (campaign, source, medium, keyword, content). Lets you also segment users by any campaign dimension, and provides",
+ "homepage":"http:\/\/piwik.pro",
+ "createdDateTime":"2014-10-01 03:22:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting",
+ "lastUpdated":"2016-03-22 12:36:04",
+ "latestVersion":"1.3.1",
+ "numDownloads":8360,"screenshots":[],"previews":[],"activity":{"numCommits":"149",
+ "numContributors":"9",
+ "lastCommitDate":"2016-04-15 22:57:32"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.3",
+ "release":"2014-10-01 03:22:04",
+ "requires":{},"readme":"",
+ "numDownloads":496,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.3"},{"name":"1.0.4",
+ "release":"2014-11-03 15:08:04",
+ "requires":{},"readme":"",
+ "numDownloads":213,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.4"},{"name":"1.0.5",
+ "release":"2014-11-14 11:16:04",
+ "requires":{},"readme":"",
+ "numDownloads":109,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.5"},{"name":"1.0.6",
+ "release":"2014-11-17 04:44:03",
+ "requires":{},"readme":"",
+ "numDownloads":1531,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.6"},{"name":"1.0.7",
+ "release":"2015-03-31 20:50:04",
+ "requires":{},"readme":"",
+ "numDownloads":9,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.7"},{"name":"1.0.8",
+ "release":"2015-03-31 21:20:04",
+ "requires":{},"readme":"",
+ "numDownloads":1853,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.0.8"},{"name":"1.1.1",
+ "release":"2015-09-03 02:04:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":954,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.1.1"},{"name":"1.2.0",
+ "release":"2015-11-11 13:08:02",
+ "requires":{"piwik":">=2.15.0"},"readme":"",
+ "numDownloads":1743,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/2.0.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.2.0"},{"name":"1.3.0",
+ "release":"2016-03-08 14:02:03",
+ "requires":{"piwik":">=2.16.0"},"readme":"",
+ "numDownloads":352,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.3.0"},{"name":"1.3.1",
+ "release":"2016-03-22 12:36:04",
+ "requires":{"piwik":">=2.16.0"},"readme":"# Advanced Campaigns Reporting\n\nMaster [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting)\nDevelop [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-AdvancedCampaignReporting)\n\n## Description\n\nTrack up to five Campaigns parameters (name, source, medium, keyword, content), and access Campaign Analytics reports.\n\n### Measuring campaigns\n\nThe default Campaign parameters are called: pk_campaign, pk_source, pk_medium, pk_keyword, pk_content and pk_cid.\n\nIf you already have URLs tagged with Google Analytics parameters these are supported: utm_campaign, utm_source, utm_medium, utm_term, utm_content and utm_id\n\nAn example landing page URL is:\n```\n\/offer?pk_campaign=Best-Seller&pk_source=Newsletter_7&pk_medium=email\n```\n\n### Features\n * Real time Analytics Reports of all your Campaign Marketing\n * Detects Campaign parameters from the landing page URL, within the query string or in the #hash string\n * The Referrers>Overview report displays a left column \"Referrers Overview\" with a list of reports that can be loaded on click.\n This report viewer now also lists the new Campaign reports under \"View Referrers by Campaign\".\n * The content of Referrers> Campaign will be replaced with the new enhanced Campaigns reports.\n * The default Referrers Campaign widget and API are working as before.\n * The campaign reports are available in Piwik Mobile and can be sent as Scheduled reports (by email, as HTML or PDF)\n * Segment editor: a new \"Campaigns\" category lists the five new segment for each campaign dimension\n * The new Campaign reports can be added as widgets in your personalized Dashboard\n * Access the Campaign Report data by the API\n * Comes with automated tests to ensure the Plugin works as expected\n * Will track up to 250 characters for each of the five Campaign dimension\n\n### Notes\n\nIn the Campaign reports by default Piwik will only archive the first 1000 rows. If you track many campaigns you can configure Piwik so it does not truncate your data. To have data truncated after 10,000 rows, edit your `config\/config.ini.php` and add the following:\n\n```\n[General]\ndatatable_archiving_maximum_rows_referrers = 10000\ndatatable_archiving_maximum_rows_subtable_referrers = 10000\n```\n\n\n### Ideas for improvement\n * To improve data acquisition accuracy, we could extend the piwik.js class to store in first party cookies\n the five campaign dimensions. This would increase the accuracy of Goal conversions and Ecommerce conversions attributions\n for these conversions made at least one day after the first visit with a campaign set. [#10](https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/issues\/10)\n * Add friendly Tracking API parameters to collect campaign dimensions.\n campaignName `cn`, campaignSource `cs`, campaignMedium `cm`, campaignContent `cc`, campaignId `ci`.\n\n## Changelog\n * 1.3.1 Better support for campaign parameters behind hash tag (#)\n * 1.3.0 PPCDEV-2609 Compatibility with Piwik 2.16.0\n * 1.2.0 (Nov 10th 2015) - Plugin comaptibility with Piwik 2.15.0\n * 1.1.1 (Sept 3rd 2015) - Campaign reports now display your campaign report data even for campaign data before you activated AdvancedCampaignReporting\n * 1.1.0 (July 28th 2015)\n * 1.0.8 (Apr 1st 2015) - Exclude Google Analytics campaign parameters from the Page URLs\n * 1.0.6 (Nov 17th 2014) - Documentation\n * 1.0.5 (Nov 14th 2014) - Detect new URL parameters: piwik_campaign, pk_cpn and for Keywords: pk_kwd, piwik_keyword\n * 1.0.4 (Nov 4th 2014) - View Goals by Campaign Dimension in the Goals & Ecommerce reports\n * 1.0.3 (Oct 1st 2014) - Released for free on the [Piwik Marketplace](http:\/\/plugins.piwik.org\/)\n\n\n## Support\n\nPlugin provided by [Piwik PRO](https:\/\/example.por) - Cloud and Enterprise analytics from the creators of Piwik.org\n\nIf you find a bug or have a suggestion please create an issue in: https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/issues\n",
+ "numDownloads":1100,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Track up to five Campaigns parameters (name, source, medium, keyword, content), and access Campaign Analytics reports.<\/p>\n\n<h3>Measuring campaigns<\/h3>\n\n<p>The default Campaign parameters are called: pk_campaign, pk_source, pk_medium, pk_keyword, pk_content and pk_cid.<\/p>\n\n<p>If you already have URLs tagged with Google Analytics parameters these are supported: utm_campaign, utm_source, utm_medium, utm_term, utm_content and utm_id<\/p>\n\n<p>An example landing page URL is:<\/p>\n\n<pre><code>\/offer?pk_campaign=Best-Seller&amp;pk_source=Newsletter_7&amp;pk_medium=email\n<\/code><\/pre>\n\n<h3>Features<\/h3>\n\n<ul><li>Real time Analytics Reports of all your Campaign Marketing<\/li>\n<li>Detects Campaign parameters from the landing page URL, within the query string or in the #hash string<\/li>\n<li>The Referrers&gt;Overview report displays a left column \"Referrers Overview\" with a list of reports that can be loaded on click.\nThis report viewer now also lists the new Campaign reports under \"View Referrers by Campaign\".<\/li>\n<li>The content of Referrers&gt; Campaign will be replaced with the new enhanced Campaigns reports.<\/li>\n<li>The default Referrers Campaign widget and API are working as before.<\/li>\n<li>The campaign reports are available in Piwik Mobile and can be sent as Scheduled reports (by email, as HTML or PDF)<\/li>\n<li>Segment editor: a new \"Campaigns\" category lists the five new segment for each campaign dimension<\/li>\n<li>The new Campaign reports can be added as widgets in your personalized Dashboard<\/li>\n<li>Access the Campaign Report data by the API<\/li>\n<li>Comes with automated tests to ensure the Plugin works as expected<\/li>\n<li>Will track up to 250 characters for each of the five Campaign dimension<\/li>\n<\/ul><h3>Notes<\/h3>\n\n<p>In the Campaign reports by default Piwik will only archive the first 1000 rows. If you track many campaigns you can configure Piwik so it does not truncate your data. To have data truncated after 10,000 rows, edit your <code>config\/config.ini.php<\/code> and add the following:<\/p>\n\n<pre><code>[General]\ndatatable_archiving_maximum_rows_referrers = 10000\ndatatable_archiving_maximum_rows_subtable_referrers = 10000\n<\/code><\/pre>\n\n<h3>Ideas for improvement<\/h3>\n\n<ul><li>To improve data acquisition accuracy, we could extend the piwik.js class to store in first party cookies\nthe five campaign dimensions. This would increase the accuracy of Goal conversions and Ecommerce conversions attributions\nfor these conversions made at least one day after the first visit with a campaign set. <a href=\"https:\/\/github.com\/PiwikPRO\/plugin-AdvancedCampaignReporting\/issues\/10\">#10<\/a><\/li>\n<li>Add friendly Tracking API parameters to collect campaign dimensions.\ncampaignName <code>cn<\/code>, campaignSource <code>cs<\/code>, campaignMedium <code>cm<\/code>, campaignContent <code>cc<\/code>, campaignId <code>ci<\/code>.<\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>1.3.1 Better support for campaign parameters behind hash tag (#)<\/li>\n<li>1.3.0 PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<li>1.2.0 (Nov 10th 2015) - Plugin comaptibility with Piwik 2.15.0<\/li>\n<li>1.1.1 (Sept 3rd 2015) - Campaign reports now display your campaign report data even for campaign data before you activated AdvancedCampaignReporting<\/li>\n<li>1.1.0 (July 28th 2015)<\/li>\n<li>1.0.8 (Apr 1st 2015) - Exclude Google Analytics campaign parameters from the Page URLs<\/li>\n<li>1.0.6 (Nov 17th 2014) - Documentation<\/li>\n<li>1.0.5 (Nov 14th 2014) - Detect new URL parameters: piwik_campaign, pk_cpn and for Keywords: pk_kwd, piwik_keyword<\/li>\n<li>1.0.4 (Nov 4th 2014) - View Goals by Campaign Dimension in the Goals &amp; Ecommerce reports<\/li>\n<li>1.0.3 (Oct 1st 2014) - Released for free on the <a href=\"http:\/\/plugins.piwik.org\/\">Piwik Marketplace<\/a><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/AdvancedCampaignReporting\/download\/1.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"AnonymousPiwikUsageMeasurement",
+ "displayName":"Anonymous Piwik Usage Measurement",
+ "owner":"piwik",
+ "description":"Help improve your Piwik experience by sending anonymized usage data to the creators of Piwik, to your own Piwik instance or to any other Piwik",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-10-19 14:04:02",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement",
+ "lastUpdated":"2016-02-10 17:22:03",
+ "latestVersion":"0.2.1",
+ "numDownloads":1662,"screenshots":[],"previews":[],"activity":{"numCommits":"61",
+ "numContributors":"5",
+ "lastCommitDate":"2016-05-17 03:54:49"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+ "release":"2015-10-19 14:04:03",
+ "requires":{"piwik":">=2.15.0-b17"},"readme":"",
+ "numDownloads":18,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/0.1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2015-10-20 06:44:03",
+ "requires":{"piwik":">=2.15.0-b17"},"readme":"",
+ "numDownloads":3,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2015-10-20 10:14:03",
+ "requires":{"piwik":">=2.15.0-rc1"},"readme":"",
+ "numDownloads":15,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2015-10-21 06:06:03",
+ "requires":{"piwik":">=2.15.0-rc1"},"readme":"",
+ "numDownloads":595,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.1.4"},{"name":"0.2.0",
+ "release":"2016-01-19 00:20:04",
+ "requires":{"piwik":">=2.15.0"},"readme":"",
+ "numDownloads":291,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2016-02-10 17:22:03",
+ "requires":{"piwik":">=2.15.0"},"readme":"# Piwik AnonymousPiwikUsageMeasurement Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-AnonymousPiwikUsageMeasurement.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-AnonymousPiwikUsageMeasurement)\n\n## Description\n\nHelp us to improve Piwik by sending anonymous usage data of your Piwik service to the creators of Piwik and\/or get usage data yourself.\n\nTrack usage of your Piwik service into up to three Piwiks:\n\n* [demo-anonymous.piwik.org](https:\/\/demo-anonymous.piwik.org) (enabled by default but can be disabled). The tracked data will be used to make Piwik better. Thank you for your help!\n* your own Piwik (can be configured optionally)\n* a custom Piwik (can be configured optionally)\n\n### What is Piwik doing to make sure the data is anonymized?\n\nWe are very careful in what we track and we make sure to anonymize data that could contain user data.\n\n* We overwrite the page title as the title could contain the name of the viewed website\n* We remove any referrer information\n* We replace URL paramaters with a predefined value apart from a few whitelisted ones to make sure no actual token_auth, CSRF token or user defined value will be tracked\n* On demo-anonymous.piwik.org 3 bytes of the IP are anonymised (eg when IP is 192.168.1.1 we track only 192.0.0.0). The original IP is not used to identify your location and provider information is not collected. \n* We do not just track any outlinks or downloads\n\n### When should I not install this plugin?\n\nIf you have developed a custom Piwik plugin that contains for example the name of your business in any of the following names we recommend to not install this plugin as it might be tracked:\n\n* name of a plugin\n* name of a controller action\n* name of a report\n* name of a widget\n* name of an API method\n\nPlugins that are installed via the Marketplace should not pose a problem as their names don't contain any user specific information such as the name of your business.\n\nWe track any information as efficient as possible to not slow down your Piwik. If you have already performance problems with your Piwik we recommend to not install this plugin though.\n\n### Which data is tracked?\n\nWhen the plugin is activated, the following data will be tracked:\n\n* The pages and reports that are viewed\n* The visitors' software and devices data like the used browser and the resolution\n* Some clicks or interactions with certain selectors or buttons. For example we track an event when a segment is selected but we do not track the actual segment.\n* In a daily task we track the following data:\n * Piwik version\n * PHP version\n * Number of websites\n * Number of users\n * Number of segments\n * How often which API method was called (only plugin name and method name but no parameters) and how long the API calls took on average.\n\n## FAQ\n\n__Are there any prerequisites?__\n\n* If sending usage data to Piwik is enabled, the Piwik installation must be connected to the internet\n* If tracking to a custom Piwik installation is enabled, your Piwik installation and your Piwik users must be able to connect to this instance\n* If tracking to a custom Piwik installation is enabled and your Piwik is served via HTTPS, the custom Piwik installation must be available via HTTPS as well\n\n__Why was this plugin created?__\n\nThis plugin was created to provide a simple way to measure how Piwik product itself is being used. The opt-in and anonymised usage tracking information will be used by the Piwik creators to build a better product and a great user experience.\n\n__Who has access to the tracked data at demo-anonymous.piwik.org?__\n\nThe data is public and therefore can be seen by anyone on [http:\/\/demo-anonymous.piwik.org](http:\/\/demo-anonymous.piwik.org).\n\nThis is to assure the tracked data is anonymous (transparency) and to showcase how Piwik can be used to track an application.\n\n## Changelog\n\n* 0.2.1 Track MySQL server version in a custom variable.\n* 0.2.0 Add possibility to enable\/disable anonymization and tracking user login as userID\n* 0.1.4 Fixed a bug that failed to track under HTTPS under circumstances\n* 0.1.3 Updated plugin description only\n* 0.1.2 Bugfixes\n* 0.1.1 Track average API executime time\n* 0.1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/issues](https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/issues)\n",
+ "numDownloads":740,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Help us to improve Piwik by sending anonymous usage data of your Piwik service to the creators of Piwik and\/or get usage data yourself.<\/p>\n\n<p>Track usage of your Piwik service into up to three Piwiks:<\/p>\n\n<ul><li><a href=\"https:\/\/demo-anonymous.piwik.org\">demo-anonymous.piwik.org<\/a> (enabled by default but can be disabled). The tracked data will be used to make Piwik better. Thank you for your help!<\/li>\n<li>your own Piwik (can be configured optionally)<\/li>\n<li>a custom Piwik (can be configured optionally)<\/li>\n<\/ul><h3>What is Piwik doing to make sure the data is anonymized?<\/h3>\n\n<p>We are very careful in what we track and we make sure to anonymize data that could contain user data.<\/p>\n\n<ul><li>We overwrite the page title as the title could contain the name of the viewed website<\/li>\n<li>We remove any referrer information<\/li>\n<li>We replace URL paramaters with a predefined value apart from a few whitelisted ones to make sure no actual token_auth, CSRF token or user defined value will be tracked<\/li>\n<li>On demo-anonymous.piwik.org 3 bytes of the IP are anonymised (eg when IP is 192.168.1.1 we track only 192.0.0.0). The original IP is not used to identify your location and provider information is not collected. <\/li>\n<li>We do not just track any outlinks or downloads<\/li>\n<\/ul><h3>When should I not install this plugin?<\/h3>\n\n<p>If you have developed a custom Piwik plugin that contains for example the name of your business in any of the following names we recommend to not install this plugin as it might be tracked:<\/p>\n\n<ul><li>name of a plugin<\/li>\n<li>name of a controller action<\/li>\n<li>name of a report<\/li>\n<li>name of a widget<\/li>\n<li>name of an API method<\/li>\n<\/ul><p>Plugins that are installed via the Marketplace should not pose a problem as their names don't contain any user specific information such as the name of your business.<\/p>\n\n<p>We track any information as efficient as possible to not slow down your Piwik. If you have already performance problems with your Piwik we recommend to not install this plugin though.<\/p>\n\n<h3>Which data is tracked?<\/h3>\n\n<p>When the plugin is activated, the following data will be tracked:<\/p>\n\n<ul><li>The pages and reports that are viewed<\/li>\n<li>The visitors' software and devices data like the used browser and the resolution<\/li>\n<li>Some clicks or interactions with certain selectors or buttons. For example we track an event when a segment is selected but we do not track the actual segment.<\/li>\n<li>In a daily task we track the following data:\n\n<ul><li>Piwik version<\/li>\n<li>PHP version<\/li>\n<li>Number of websites<\/li>\n<li>Number of users<\/li>\n<li>Number of segments<\/li>\n<li>How often which API method was called (only plugin name and method name but no parameters) and how long the API calls took on average.<\/li>\n<\/ul><\/li>\n<\/ul>",
+ "faq":"<p><strong>Are there any prerequisites?<\/strong><\/p>\n\n<ul><li>If sending usage data to Piwik is enabled, the Piwik installation must be connected to the internet<\/li>\n<li>If tracking to a custom Piwik installation is enabled, your Piwik installation and your Piwik users must be able to connect to this instance<\/li>\n<li>If tracking to a custom Piwik installation is enabled and your Piwik is served via HTTPS, the custom Piwik installation must be available via HTTPS as well<\/li>\n<\/ul><p><strong>Why was this plugin created?<\/strong><\/p>\n\n<p>This plugin was created to provide a simple way to measure how Piwik product itself is being used. The opt-in and anonymised usage tracking information will be used by the Piwik creators to build a better product and a great user experience.<\/p>\n\n<p><strong>Who has access to the tracked data at demo-anonymous.piwik.org?<\/strong><\/p>\n\n<p>The data is public and therefore can be seen by anyone on <a href=\"http:\/\/demo-anonymous.piwik.org\">http:\/\/demo-anonymous.piwik.org<\/a>.<\/p>\n\n<p>This is to assure the tracked data is anonymous (transparency) and to showcase how Piwik can be used to track an application.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.2.1 Track MySQL server version in a custom variable.<\/li>\n<li>0.2.0 Add possibility to enable\/disable anonymization and tracking user login as userID<\/li>\n<li>0.1.4 Fixed a bug that failed to track under HTTPS under circumstances<\/li>\n<li>0.1.3 Updated plugin description only<\/li>\n<li>0.1.2 Bugfixes<\/li>\n<li>0.1.1 Track average API executime time<\/li>\n<li>0.1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/AnonymousPiwikUsageMeasurement\/download\/0.2.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ApiGetWithSitesInfo",
+ "displayName":"Api Get With Sites Info",
+ "owner":"piwik",
+ "description":"Modifies the 'API.get' output to also list the website name and main website URL",
+ "homepage":"http:\/\/github.com\/piwik\/piwik-ApiGetWithSitesInfo",
+ "createdDateTime":"2014-12-09 03:50:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo",
+ "lastUpdated":"2014-12-11 21:06:04",
+ "latestVersion":"0.1.2",
+ "numDownloads":3009,"screenshots":[],"previews":[],"activity":{"numCommits":"24",
+ "numContributors":"3",
+ "lastCommitDate":"2016-01-25 22:14:51"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-12-09 03:50:03",
+ "requires":{"piwik":">=2.9.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ApiGetWithSitesInfo\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-12-09 03:58:03",
+ "requires":{"piwik":">=2.9.0"},"readme":"",
+ "numDownloads":45,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ApiGetWithSitesInfo\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-12-11 21:06:04",
+ "requires":{"piwik":">=2.9.0"},"readme":"# Piwik ApiGetWithSitesInfo Plugin\n\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-ApiGetWithSitesInfo.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-ApiGetWithSitesInfo)\n\n## Description\n\nModifies the 'API.get' output to also list the website name and main website URL.\n\nWhen calling the API method `API.get` it will be enriched with the following new fields for each website:\n\n * `idsite` - Website ID\n * `site_url` - Website URL\n * `site_name` - Website name\n\n If you specify `&idSite=all` it will decorate each website in the response with the new fields.\n \nThe output will look as follows:\n\n```\n<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<result>\n\t<idsite>2<\/idsite>\n\t<site_url>http:\/\/blog.shacklefordvetclinic.com<\/site_url>\n\t<site_name>Shackleford Road Veterinary Clinic<\/site_name>\n <nb_uniq_visitors>2397<\/nb_uniq_visitors>\n <nb_visits>2758<\/nb_visits>\n <nb_actions>7943<\/nb_actions>\n <bounce_count>1421<\/bounce_count>\n <nb_conversions>987<\/nb_conversions>\n <nb_visits_converted>838<\/nb_visits_converted>\n <revenue>0<\/revenue>\n <nb_pageviews>6370<\/nb_pageviews>\n <nb_uniq_pageviews>5330<\/nb_uniq_pageviews>\n <nb_downloads>368<\/nb_downloads>\n <nb_uniq_downloads>305<\/nb_uniq_downloads>\n <nb_outlinks>951<\/nb_outlinks>\n <nb_uniq_outlinks>871<\/nb_uniq_outlinks>\n <nb_searches>27<\/nb_searches>\n <nb_keywords>25<\/nb_keywords>\n <nb_hits_with_time_generation>5635<\/nb_hits_with_time_generation>\n <conversion_rate>30.38%<\/conversion_rate>\n <bounce_rate>52%<\/bounce_rate>\n <nb_actions_per_visit>2.9<\/nb_actions_per_visit>\n [...]\n```\n\n \n## Changelog\n\n* 0.1.2 - Fixed bug `Call to a member function getRowsCount() on a non-object`\n* 0.1.0 - Initial release\n\n## Support\n\nPlease direct any feedback to the [Issue tracker on Github.](https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/issues)\n",
+ "numDownloads":2963,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-ApiGetWithSitesInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Modifies the 'API.get' output to also list the website name and main website URL.<\/p>\n\n<p>When calling the API method <code>API.get<\/code> it will be enriched with the following new fields for each website:<\/p>\n\n<ul><li><code>idsite<\/code> - Website ID<\/li>\n<li><code>site_url<\/code> - Website URL<\/li>\n<li><p><code>site_name<\/code> - Website name<\/p>\n\n<p>If you specify <code>&amp;idSite=all<\/code> it will decorate each website in the response with the new fields.<\/p><\/li>\n<\/ul><p>The output will look as follows:<\/p>\n\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;\n&lt;result&gt;\n &lt;idsite&gt;2&lt;\/idsite&gt;\n &lt;site_url&gt;http:\/\/blog.shacklefordvetclinic.com&lt;\/site_url&gt;\n &lt;site_name&gt;Shackleford Road Veterinary Clinic&lt;\/site_name&gt;\n &lt;nb_uniq_visitors&gt;2397&lt;\/nb_uniq_visitors&gt;\n &lt;nb_visits&gt;2758&lt;\/nb_visits&gt;\n &lt;nb_actions&gt;7943&lt;\/nb_actions&gt;\n &lt;bounce_count&gt;1421&lt;\/bounce_count&gt;\n &lt;nb_conversions&gt;987&lt;\/nb_conversions&gt;\n &lt;nb_visits_converted&gt;838&lt;\/nb_visits_converted&gt;\n &lt;revenue&gt;0&lt;\/revenue&gt;\n &lt;nb_pageviews&gt;6370&lt;\/nb_pageviews&gt;\n &lt;nb_uniq_pageviews&gt;5330&lt;\/nb_uniq_pageviews&gt;\n &lt;nb_downloads&gt;368&lt;\/nb_downloads&gt;\n &lt;nb_uniq_downloads&gt;305&lt;\/nb_uniq_downloads&gt;\n &lt;nb_outlinks&gt;951&lt;\/nb_outlinks&gt;\n &lt;nb_uniq_outlinks&gt;871&lt;\/nb_uniq_outlinks&gt;\n &lt;nb_searches&gt;27&lt;\/nb_searches&gt;\n &lt;nb_keywords&gt;25&lt;\/nb_keywords&gt;\n &lt;nb_hits_with_time_generation&gt;5635&lt;\/nb_hits_with_time_generation&gt;\n &lt;conversion_rate&gt;30.38%&lt;\/conversion_rate&gt;\n &lt;bounce_rate&gt;52%&lt;\/bounce_rate&gt;\n &lt;nb_actions_per_visit&gt;2.9&lt;\/nb_actions_per_visit&gt;\n [...]\n<\/code><\/pre>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.2 - Fixed bug <code>Call to a member function getRowsCount() on a non-object<\/code><\/li>\n<li>0.1.0 - Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ApiGetWithSitesInfo\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Bandwidth",
+ "displayName":"Bandwidth",
+ "owner":"piwik",
+ "description":"Monitor Bandwidth for each page, download, and measure overall traffic in bytes",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-02-18 03:50:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth",
+ "lastUpdated":"2016-01-28 16:10:04",
+ "latestVersion":"0.1.2",
+ "numDownloads":7742,"screenshots":[],"previews":[],"activity":{"numCommits":"62",
+ "numContributors":"6",
+ "lastCommitDate":"2016-03-15 04:19:37"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-02-18 03:50:05",
+ "requires":{"piwik":">=2.11.0-b3"},"readme":"",
+ "numDownloads":1809,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Bandwidth\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-06-09 04:08:04",
+ "requires":{"piwik":">=2.11.0-b3"},"readme":"",
+ "numDownloads":3477,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Bandwidth\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2016-01-28 16:10:04",
+ "requires":{"piwik":">=2.14.0"},"readme":"# Piwik Bandwidth Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-Bandwidth.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-Bandwidth)\n\n## Description\n\nThis plugin allows you to measure the bandwidth that was used by each page view or download. \nIt enriches existing reports and APIs to show the used bandwidth. Find more information in the FAQ.\n\n## FAQ\n\n__How can I track the bandwidth?__\n\nLog analytics:\n\nThe bandwidth will be automatically tracked when using the [log importer](http:\/\/piwik.org\/log-analytics\/) as long as \nyour log format is supported.\n\nTracking API:\n\nIf you are using the [HTTP Tracking API](http:\/\/developer.piwik.org\/api-reference\/tracking-api) \nyou can specify the bandwidth in bytes by appending the URL parameter `bw_bytes=1234` to the tracking URL. In this case \na bandwidth of 1234 bytes will be tracked.\n\n__Which actions support tracking of bandwidth?__\n\nPageviews (Page URLs and Page Titles) as well as Downloads.\n\n__In which reports is the used bandwidth displayed?__\n\n* Page URLs \n* Page Titles\n* Downloads\n\nAll reports will show a column `Average Bandwidth` and `Sum Bandwidth`\n\nThe \"Visitors => Overview\" report shows a total bandwidth overview and it is possible to view the evolution over period.\n\n__Which APIs does this plugin define or enrich?__\n\nThere is a report `Bandwidth.get` returning the total bandwidth (across all actions).\n\nIt also enriches varies reports such as `Actions.get`, `Actions.getPageUrls`, `Actions.getPageTitles` and `Actions.getDownloads`.\nFor example it adds columns such as `avg_bandwidth`, `sum_bandwidth`, `min_bandwidth`, `max_bandwidth` to each page view.\n\n__Why are the bandwidth columns are not displayed in the UI?__\n\nMake sure the Bandwidth plugin is activated by going to `Administration => Plugins`. Also the bandwidth columns are not \ndisplayed if no bandwidth was tracked in the current selected month.\n\n## Changelog\n\n0.1.0 Initial Release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)",
+ "numDownloads":2456,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-Bandwidth\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin allows you to measure the bandwidth that was used by each page view or download. \nIt enriches existing reports and APIs to show the used bandwidth. Find more information in the FAQ.<\/p>\n\n",
+ "faq":"<p><strong>How can I track the bandwidth?<\/strong><\/p>\n\n<p>Log analytics:<\/p>\n\n<p>The bandwidth will be automatically tracked when using the <a href=\"http:\/\/piwik.org\/log-analytics\/\">log importer<\/a> as long as \nyour log format is supported.<\/p>\n\n<p>Tracking API:<\/p>\n\n<p>If you are using the <a href=\"http:\/\/developer.piwik.org\/api-reference\/tracking-api\">HTTP Tracking API<\/a> \nyou can specify the bandwidth in bytes by appending the URL parameter <code>bw_bytes=1234<\/code> to the tracking URL. In this case \na bandwidth of 1234 bytes will be tracked.<\/p>\n\n<p><strong>Which actions support tracking of bandwidth?<\/strong><\/p>\n\n<p>Pageviews (Page URLs and Page Titles) as well as Downloads.<\/p>\n\n<p><strong>In which reports is the used bandwidth displayed?<\/strong><\/p>\n\n<ul><li>Page URLs <\/li>\n<li>Page Titles<\/li>\n<li>Downloads<\/li>\n<\/ul><p>All reports will show a column <code>Average Bandwidth<\/code> and <code>Sum Bandwidth<\/code><\/p>\n\n<p>The \"Visitors =&gt; Overview\" report shows a total bandwidth overview and it is possible to view the evolution over period.<\/p>\n\n<p><strong>Which APIs does this plugin define or enrich?<\/strong><\/p>\n\n<p>There is a report <code>Bandwidth.get<\/code> returning the total bandwidth (across all actions).<\/p>\n\n<p>It also enriches varies reports such as <code>Actions.get<\/code>, <code>Actions.getPageUrls<\/code>, <code>Actions.getPageTitles<\/code> and <code>Actions.getDownloads<\/code>.\nFor example it adds columns such as <code>avg_bandwidth<\/code>, <code>sum_bandwidth<\/code>, <code>min_bandwidth<\/code>, <code>max_bandwidth<\/code> to each page view.<\/p>\n\n<p><strong>Why are the bandwidth columns are not displayed in the UI?<\/strong><\/p>\n\n<p>Make sure the Bandwidth plugin is activated by going to <code>Administration =&gt; Plugins<\/code>. Also the bandwidth columns are not \ndisplayed if no bandwidth was tracked in the current selected month.<\/p>",
+ "documentation":"",
+ "changelog":"<p>0.1.0 Initial Release<\/p>"},"download":"\/api\/2.0\/plugins\/Bandwidth\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Barometer",
+ "displayName":"Barometer",
+ "owner":"halfdan",
+ "description":"Live Plugin that shows the current number of visitors on the page.",
+ "homepage":"http:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+ "createdDateTime":"2014-12-23 00:38:20",
+ "donate":{"flattr":"https:\/\/flattr.com\/profile\/test1",
+ "bitcoin":null},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/barometer.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/barometer\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/baromter.forum.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"barometer@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/baromter",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/barometer\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/barometer\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/barometer.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["barometer",
+ "live"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+ "email":"test8@example.com",
+ "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+ "lastUpdated":"2014-12-23 00:41:21",
+ "latestVersion":"0.5.0",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/Barometer\/images\/piwik-barometer-01.png",
+ "https:\/\/plugins.piwik.org\/Barometer\/images\/piwik-barometer-02.png"],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.piwik.org"}],"activity":{"numCommits":"31",
+ "numContributors":"3",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+ "release":"2014-12-23 00:38:20",
+ "requires":{"piwik":">=1.10.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.1.1"},{"name":"0.5.0",
+ "release":"2014-12-23 00:41:21",
+ "requires":{},"readme":"# Piwik Barometer Plugin\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a two new widgets that you can add to your dashboard.\n\nThe widgets will show a Visitor Barometer and a Visit Time Barometer that auto-refresh every 5 seconds. It shows the number of visitors or visit time in a N minute period compared to the maximum number of visitors\/average visit time in any N minute period of the last 30 days.\n\nThe idea for this plugin came from [@muesli](http:\/\/github.com\/muesli) who suggested it on #piwik in IRC.\n\n## Documentation\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n ```\n cd plugins\/\n git clone https:\/\/github.com\/halfdan\/piwik-barometer-plugin.git Barometer\n ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You will now find the widget under the Live! section.\n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.5.0",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a two new widgets that you can add to your dashboard.<\/p>\n\n<p>The widgets will show a Visitor Barometer and a Visit Time Barometer that auto-refresh every 5 seconds. It shows the number of visitors or visit time in a N minute period compared to the maximum number of visitors\/average visit time in any N minute period of the last 30 days.<\/p>\n\n<p>The idea for this plugin came from <a href=\"http:\/\/github.com\/muesli\">@muesli<\/a> who suggested it on #piwik in IRC.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.5.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Chat",
+ "displayName":"Chat",
+ "owner":"VincentLahaye",
+ "description":"Not production ready. Join the Beta test ! Engage people you don't know at all, with this targeted and efficient chat system, directly integrated into",
+ "homepage":"https:\/\/github.com\/VincentLahaye\/piwik-chat",
+ "createdDateTime":"2014-06-13 09:10:06",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat",
+ "lastUpdated":"2014-08-20 09:08:05",
+ "latestVersion":"0.2.4",
+ "numDownloads":5705,"screenshots":[],"previews":[],"activity":{"numCommits":"2",
+ "numContributors":"2",
+ "lastCommitDate":"2014-08-20 09:08:00"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+ "release":"2014-06-13 09:10:06",
+ "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+ "numDownloads":2,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-06-13 09:52:05",
+ "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+ "numDownloads":92,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2014-06-23 11:54:10",
+ "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+ "numDownloads":109,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2014-06-29 15:12:05",
+ "requires":{"piwik":">=2.4.0-b4"},"readme":"",
+ "numDownloads":513,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.4"},{"name":"0.1.5",
+ "release":"2014-08-13 10:42:05",
+ "requires":{"piwik":">=2.4.0"},"readme":"",
+ "numDownloads":70,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.5"},{"name":"0.1.6",
+ "release":"2014-08-14 10:08:05",
+ "requires":{"piwik":">=2.4.0"},"readme":"",
+ "numDownloads":127,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.1.6"},{"name":"0.2.0",
+ "release":"2014-08-19 16:58:06",
+ "requires":{"piwik":">=2.4.0"},"readme":"",
+ "numDownloads":2,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2014-08-19 17:16:05",
+ "requires":{"piwik":">=2.4.0"},"readme":"",
+ "numDownloads":31,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.1"},{"name":"0.2.2",
+ "release":"2014-08-20 07:34:06",
+ "requires":{"piwik":">=2.4.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.2"},{"name":"0.2.3",
+ "release":"2014-08-20 07:58:06",
+ "requires":{"piwik":">=2.4.0"},"readme":"",
+ "numDownloads":6,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.3"},{"name":"0.2.4",
+ "release":"2014-08-20 09:08:05",
+ "requires":{"piwik":">=2.4.0"},"readme":"# Chat Plugin for Piwik (BETA)\nThis plugin is not production ready, but any help is appreciate!\n\nEngage people you don't know at all, with this targeted and efficient chat system, directly integrated into Piwik.\n\nThe client has these three states, plus a minimized state :\n\n![Chat Client](\/screenshots\/ClientState2.png?raw=true \"Chat Client State 2\")\n![Chat Client](\/screenshots\/ClientState3.png?raw=true \"Chat Client State 3\")\n![Chat Client](\/screenshots\/ClientState4.png?raw=true \"Chat Client State 4\")\n\nAnd here is the updated Visitor Profile :\n![Backend](\/screenshots\/BackendVisitorProfile.png?raw=true \"Visitor Profile in Backend\")\n\n## Installation\nAdd this code, after Piwik's tracking code :\n\n <!-- Piwik Chat -->\n <script type=\"text\/javascript\">\n (function() {\n var u=((\"https:\" == document.location.protocol) ? \"https:\/\/{$PIWIK_URL}\/\" : \"http:\/\/{$PIWIK_URL}\/\");\n var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text\/javascript';\n g.defer=true; g.async=true; g.src=u+'plugins\/Chat\/javascripts\/client\/client.js'; s.parentNode.insertBefore(g,s);\n })();\n <\/script>\n <!-- End Piwik Chat Code -->\n\n## How it works\nOn the backend, this plugin modifies the visitorProfile popup, by adding to it a \"Chat\" tab next to \"Visited pages\". A new menu \"Chat\" is available, which allows to browse all conversations.\n\nSoon, a reporting system will be integrated, which will show figures like conversion rate or engagement, in function of the Chat's use.\n\nAfter installing the plugin, you have to modify your tracking code. It includes the file \"javascripts\/client\/client.js\", which waits for the Tracker() to initialize, then appends an iframe to the page. This iframe requests the \"popout\" action of the controller, where the plugin tries to identify the visitor based on his visitorID or configID.\n\n## Changelog\n\nv0.2.2 :\n\n+ Add DB Versioning support\n\nv0.2 :\n\n+ Piwik 2.5.0 ready\n+ Add automatic messages based on segment recognition\n+ General improvement on client popout\n + Load message over ajax\n + Add moment.js\n + Update the communication (based on easyXDM) between the popout and its parent iframe. See : https:\/\/github.com\/VincentLahaye\/piwik-chat\/commit\/ced4662d83cc8efc98b58b27e92ab6d06bb29546\n+ Update VisitorProfile popup\n + Improve textarea input interractions\n+ Rewrite a lot of code regarding the \"model\" file Conversation.php, now split in different files\n\nv0.1.6 :\n\n+ Add a reporting bug system\n\n\nv0.1.5 :\n\n+ Notification system improved\n + Add email notification to offline staf members\n + Add title notification\n + Improve sound and menu notification, now working on all CoreHome module\n+ Add german translation\n+ Fix wrong inclusion paths on client popout\n+ Fix online staff indicator on client popout\n\n\nv0.1 :\n\n+ Basic chat functions with client\/server communication and Piwik integration\n+ Add additional inputs in the visitor profile in order to save personal informations about a visitor (name, email, phone and comments)\n+ The client shows if someone of the staff is online or not\n+ Sound notifications on both sides\n+ French translation\n\n## Roadmap\nv0.3 :\n\n* Add a reporting system that shows figures about the module impact\n* Add external cache support for polling (APC, Memcache, opCache...)\n\n## Academical study\nAs an MSc student in eBusiness, this project is part of my final dissertation : \"How to engage people you don't know at all ?\".\n\nThe first part of this project is to develop the module and its reporting system. Then, the second part will be about analyse the impact of this Chat system (conversion rate, engagement, etc..) in function of its use, and eventually try to determine which way of use is the most efficient. From this research it may be possible to provide advices and answer questions like : What is the best behavior to adopt as an operator? What kinds of automatic messages are the more efficient in order to increase conversion?\n\nTo lead this study, I will need data! And if you support my work, you'll be able to send me your reports via the plugin, in an anonymized way.",
+ "numDownloads":4752,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/VincentLahaye\/piwik-chat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>v0.2.2 :<\/p>\n\n<ul><li>Add DB Versioning support<\/li>\n<\/ul><p>v0.2 :<\/p>\n\n<ul><li>Piwik 2.5.0 ready<\/li>\n<li>Add automatic messages based on segment recognition<\/li>\n<li>General improvement on client popout\n\n<ul><li>Load message over ajax<\/li>\n<li>Add moment.js<\/li>\n<li>Update the communication (based on easyXDM) between the popout and its parent iframe. See : https:\/\/github.com\/VincentLahaye\/piwik-chat\/commit\/ced4662d83cc8efc98b58b27e92ab6d06bb29546<\/li>\n<\/ul><\/li>\n<li>Update VisitorProfile popup\n\n<ul><li>Improve textarea input interractions<\/li>\n<\/ul><\/li>\n<li>Rewrite a lot of code regarding the \"model\" file Conversation.php, now split in different files<\/li>\n<\/ul><p>v0.1.6 :<\/p>\n\n<ul><li>Add a reporting bug system<\/li>\n<\/ul><p>v0.1.5 :<\/p>\n\n<ul><li>Notification system improved\n\n<ul><li>Add email notification to offline staf members<\/li>\n<li>Add title notification<\/li>\n<li>Improve sound and menu notification, now working on all CoreHome module<\/li>\n<\/ul><\/li>\n<li>Add german translation<\/li>\n<li>Fix wrong inclusion paths on client popout<\/li>\n<li>Fix online staff indicator on client popout<\/li>\n<\/ul><p>v0.1 :<\/p>\n\n<ul><li>Basic chat functions with client\/server communication and Piwik integration<\/li>\n<li>Add additional inputs in the visitor profile in order to save personal informations about a visitor (name, email, phone and comments)<\/li>\n<li>The client shows if someone of the staff is online or not<\/li>\n<li>Sound notifications on both sides<\/li>\n<li>French translation<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/Chat\/download\/0.2.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ClickHeat",
+ "displayName":"Click Heat",
+ "owner":"piwikjapan",
+ "description":"ClickHeat is a visual heatmap of clicks on a HTML page. This plugin based on Dugwood's ClickHeat version 1.14. Plugin not consider IIS. Sorry.",
+ "homepage":"http:\/\/piwikjapan.org",
+ "createdDateTime":"2015-04-23 01:56:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat",
+ "lastUpdated":"2015-04-27 15:46:04",
+ "latestVersion":"0.1.5",
+ "numDownloads":8559,"screenshots":[],"previews":[],"activity":{"numCommits":"13",
+ "numContributors":"3",
+ "lastCommitDate":"2016-05-27 17:59:06"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+ "release":"2015-04-23 01:56:05",
+ "requires":{"piwik":">=2.11.1"},"readme":"",
+ "numDownloads":49,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2015-04-23 14:12:04",
+ "requires":{"piwik":">=2.11.0"},"readme":"",
+ "numDownloads":72,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2015-04-25 14:38:05",
+ "requires":{"piwik":">=2.11.0"},"readme":"",
+ "numDownloads":64,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2015-04-27 13:54:05",
+ "requires":{"piwik":">=2.11.0"},"readme":"",
+ "numDownloads":21,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.4"},{"name":"0.1.5",
+ "release":"2015-04-27 15:46:04",
+ "requires":{"piwik":">=2.11.0"},"readme":"# Piwik ClickHeat Plugin\n\n## Description\nClickHeat is a visual heatmap of clicks on a HTML page, showing hot and cold click zones. This plugin based on [Dugwood's ClickHeat version 1.14](https:\/\/github.com\/dugwood\/clickheat). It is an OpenSource software, released under GPL licence, and free of charge. \n\n__Plugin not consider the IIS.__ Sorry. We are waiting patches for IIS.\n\n## Installation\nInstall it via Piwik Marketplace.\n\nThis plugin installer will make directories:\n* yourpiwik\/tmp\/cache\/clickheat\/cache\n* yourpiwik\/tmp\/cache\/clickheat\/logs.\n\nThis plugin uses a different tracker. Please click on the link \"JavaScript\" and put the special Javascript codes into your website.\n\n## FAQ\n__What exactly is included in this feature ?__\n\n* pick up a siteid\n* pick up a period\n* pick up a browser type\n* pick up a specific web page\n\n__And what functions are not included in this feature ?__\n\n* remove special addresses defined on the control panel.\n* remove special browsers defined on the control panel.\n* filters based on added segmentation\n\n__Where is the coordinate information from the browser ?__\n\nClickHeat plugin uses text files to record the coordinate data of each browser in directory: yourpiwik\/tmp\/cache\/clickheat\/logs.\n\n__What is \"click.php returned a status code 403\" ?__\n\nYou have to perform the upgrade immediately to version 0.1.5. I forgot to put .htaccess.\n\n__After installing the plugin, Piwik Administration area shows \"page not found 404 error\".__\n\nThis plugin doesn't consider the IIS. Sorry. And please delete the ClickHeat plugin (yourpiwik\/plugins\/ClickHeat) manually via FTP or Explorer. We are waiting patches for IIS.\n\n__Does it withstands high traffics ?__\n\nThis plugin uses minimal text to record data and file based logging. And when click.php is called from a special Javascript for cgi, just append text on end of the each file. And when you analyze the click data and make a heatmap, plugin will create cached heatmap as png image file. \n\nTherefore, we expect the plugin light works, but we don't know what load it has under Piwik 2.x. So we are very glad, when you inform us about your situation. \n\nPlease see the link [Performance and optimization](http:\/\/www.labsmedia.com\/clickheat\/156894.html) about system resources. If you want performance, you need to avoid to use a cgi, that is possible. It method is explained on the link. \n\n__New click data were added, but not updated heatmap. Why ?__\n\nPlugin places heatmap images in the cache directory: yourpiwik\/tmp\/cache\/clickheat\/cache. Therefore when you suddenly met with such probrem, you can delete cache files, but __do not delete cache directory__.\n\n__Showed a heatmap, but not overlay a heatmap to the target web page. Why ?__\n\nCheck that your website does not set the HTTP header __X-FRAME-OPTIONS__ to __SAMEORIGIN__ as this will prevent this plugin from iframing your website for the heatmap report. Please see [Page Overlay Troubleshooting](http:\/\/piwik.org\/docs\/page-overlay\/#page-overlay-troubleshooting), that is same problem.\n\n## Changelog\n\n* 0.1.0 First beta\n* 0.1.2 to append faq\n* 0.1.3 to append faq\n* 0.1.5 to add .htaccess\n\n## License\nGPL v3 or later\n\n## Support\nPlease direct any feedback to [yamachan@piwikjapan.org](mailto:yamachan@piwikjapan.org).\n",
+ "numDownloads":8353,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwikjapan\/plugin-clickheat\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>ClickHeat is a visual heatmap of clicks on a HTML page, showing hot and cold click zones. This plugin based on <a href=\"https:\/\/github.com\/dugwood\/clickheat\">Dugwood's ClickHeat version 1.14<\/a>. It is an OpenSource software, released under GPL licence, and free of charge.<\/p>\n\n<p><strong>Plugin not consider the IIS.<\/strong> Sorry. We are waiting patches for IIS.<\/p>\n\n",
+ "faq":"<p><strong>What exactly is included in this feature ?<\/strong><\/p>\n\n<ul><li>pick up a siteid<\/li>\n<li>pick up a period<\/li>\n<li>pick up a browser type<\/li>\n<li>pick up a specific web page<\/li>\n<\/ul><p><strong>And what functions are not included in this feature ?<\/strong><\/p>\n\n<ul><li>remove special addresses defined on the control panel.<\/li>\n<li>remove special browsers defined on the control panel.<\/li>\n<li>filters based on added segmentation<\/li>\n<\/ul><p><strong>Where is the coordinate information from the browser ?<\/strong><\/p>\n\n<p>ClickHeat plugin uses text files to record the coordinate data of each browser in directory: yourpiwik\/tmp\/cache\/clickheat\/logs.<\/p>\n\n<p><strong>What is \"click.php returned a status code 403\" ?<\/strong><\/p>\n\n<p>You have to perform the upgrade immediately to version 0.1.5. I forgot to put .htaccess.<\/p>\n\n<p><strong>After installing the plugin, Piwik Administration area shows \"page not found 404 error\".<\/strong><\/p>\n\n<p>This plugin doesn't consider the IIS. Sorry. And please delete the ClickHeat plugin (yourpiwik\/plugins\/ClickHeat) manually via FTP or Explorer. We are waiting patches for IIS.<\/p>\n\n<p><strong>Does it withstands high traffics ?<\/strong><\/p>\n\n<p>This plugin uses minimal text to record data and file based logging. And when click.php is called from a special Javascript for cgi, just append text on end of the each file. And when you analyze the click data and make a heatmap, plugin will create cached heatmap as png image file.<\/p>\n\n<p>Therefore, we expect the plugin light works, but we don't know what load it has under Piwik 2.x. So we are very glad, when you inform us about your situation.<\/p>\n\n<p>Please see the link <a href=\"http:\/\/www.labsmedia.com\/clickheat\/156894.html\">Performance and optimization<\/a> about system resources. If you want performance, you need to avoid to use a cgi, that is possible. It method is explained on the link.<\/p>\n\n<p><strong>New click data were added, but not updated heatmap. Why ?<\/strong><\/p>\n\n<p>Plugin places heatmap images in the cache directory: yourpiwik\/tmp\/cache\/clickheat\/cache. Therefore when you suddenly met with such probrem, you can delete cache files, but <strong>do not delete cache directory<\/strong>.<\/p>\n\n<p><strong>Showed a heatmap, but not overlay a heatmap to the target web page. Why ?<\/strong><\/p>\n\n<p>Check that your website does not set the HTTP header <strong>X-FRAME-OPTIONS<\/strong> to <strong>SAMEORIGIN<\/strong> as this will prevent this plugin from iframing your website for the heatmap report. Please see <a href=\"http:\/\/piwik.org\/docs\/page-overlay\/#page-overlay-troubleshooting\">Page Overlay Troubleshooting<\/a>, that is same problem.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0 First beta<\/li>\n<li>0.1.2 to append faq<\/li>\n<li>0.1.3 to append faq<\/li>\n<li>0.1.5 to add .htaccess<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ClickHeat\/download\/0.1.5"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Counter",
+ "displayName":"Counter",
+ "owner":"Globulopolis",
+ "description":"Display Hits\/Visits on image",
+ "homepage":"http:\/\/xn--80aeqbhthr9b.com\/en\/others\/piwik\/10-piwik-graphical-counter.html",
+ "createdDateTime":"2014-12-23 01:14:18",
+ "donate":{},"support":[],"isTheme":false,"keywords":["piwik",
+ "counter image",
+ "image counter",
+ "piwik visible counter",
+ "show hits piwik",
+ "show visits piwik"],"basePrice":0,"authors":[{"name":"Viper",
+ "email":null,"homepage":null}],"repositoryUrl":"https:\/\/github.com\/Globulopolis\/Counter",
+ "lastUpdated":"2014-12-23 01:14:18",
+ "latestVersion":"2.0.2",
+ "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"10",
+ "numContributors":"1",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"2.0.2",
+ "release":"2014-12-23 01:14:18",
+ "requires":{},"readme":"# Piwik counter plugin\n\n## Description\n\nDisplay Hits\/Visits on image\n\n## FAQ\n\nSee http:\/\/xn--80aeqbhthr9b.com\/en\/others\/piwik\/10-piwik-graphical-counter.html\n\n## Changelog\n2.0.2\n* Fixed a bug where the URL with the image displayed via http, if you are using https(bug only in counters list).\n\n2.0.1\n* Fix for CORS (thanks for aureq for patch)\n* Changing versioning according to requirements\n\n2.0 Initial release\n\n## Support\n\nhttp:\/\/xn--80aeqbhthr9b.com\/en\/contact-form.html",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Globulopolis\/Counter\/commits\/2.0.2",
+ "readmeHtml":{"description":"\n\n<p>Display Hits\/Visits on image<\/p>\n\n",
+ "faq":"<p>See http:\/\/xn--80aeqbhthr9b.com\/en\/others\/piwik\/10-piwik-graphical-counter.html<\/p>",
+ "documentation":"",
+ "changelog":"<p>2.0.2\n* Fixed a bug where the URL with the image displayed via http, if you are using https(bug only in counters list).<\/p>\n\n<p>2.0.1\n* Fix for CORS (thanks for aureq for patch)\n* Changing versioning according to requirements<\/p>\n\n<p>2.0 Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/Counter\/download\/2.0.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomAlerts",
+ "displayName":"Custom Alerts",
+ "owner":"piwik",
+ "description":"Alerts are a great way to get notified of changes on your website. This is a beta version.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 01:07:23",
+ "donate":{},"support":[],"isTheme":false,"keywords":["alerts",
+ "notification",
+ "report",
+ "monitoring"],"basePrice":0,"authors":[{"name":"Piwik",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts",
+ "lastUpdated":"2014-12-23 01:16:54",
+ "latestVersion":"0.1.12",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/CustomAlerts\/images\/Create_Alert.png",
+ "https:\/\/plugins.piwik.org\/CustomAlerts\/images\/History_Of_Alerts.png",
+ "https:\/\/plugins.piwik.org\/CustomAlerts\/images\/List_Of_Alerts.png"],"previews":[],"activity":{"numCommits":"300",
+ "numContributors":"7",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-12-23 01:07:25",
+ "requires":{"piwik":">=2.0.4"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.0.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-12-23 01:08:03",
+ "requires":{"piwik":">=2.0.4"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-12-23 01:08:23",
+ "requires":{"piwik":">=2.0.4-b1"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2014-12-23 01:08:43",
+ "requires":{"piwik":">=2.0.4-b1"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.3",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2014-12-23 01:11:39",
+ "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.4",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.4"},{"name":"0.1.5",
+ "release":"2014-12-23 01:11:59",
+ "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.5",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.5"},{"name":"0.1.6",
+ "release":"2014-12-23 01:12:20",
+ "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.6",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.6"},{"name":"0.1.7",
+ "release":"2014-12-23 01:12:42",
+ "requires":{"piwik":">=2.0.4-b3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.7",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.7"},{"name":"0.1.8-b1",
+ "release":"2014-12-23 01:13:41",
+ "requires":{"piwik":">=2.0.4-b5"},"readme":"",
+ "numDownloads":0,"license":{"name":"Commercial license",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.8",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.8-b1"},{"name":"0.1.9",
+ "release":"2014-12-23 01:14:00",
+ "requires":{"piwik":">=2.0.4-b5"},"readme":"",
+ "numDownloads":0,"license":{"name":"Commercial license",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.9",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.9"},{"name":"0.1.10",
+ "release":"2014-12-23 01:15:35",
+ "requires":{"piwik":">=2.0.4-b7"},"readme":"",
+ "numDownloads":0,"license":{"name":"Commercial license",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.10",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.10"},{"name":"0.1.11",
+ "release":"2014-12-23 01:15:57",
+ "requires":{"piwik":">=2.0.4-b7"},"readme":"",
+ "numDownloads":0,"license":{"name":"Commercial license",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.11",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.11"},{"name":"0.1.12",
+ "release":"2014-12-23 01:16:54",
+ "requires":{"piwik":">=2.0.4-b9"},"readme":"# Piwik CustomAlerts Plugin \n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-CustomAlerts.png?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-CustomAlerts)\n\n## Description\n\nCreate Custom Alerts + Be notified by email\/SMS!\n\nAlerts are a great way to get notified of changes on your website. Want to know if your new product hits less than 100 sales in a week or your new article attracts more than 200 visitors a day? Create alerts that make sense to you. Be notified by email or SMS when the conditions for your alerts are met. Stay on top of your website!\n\nThe Alert log will help you to better understand the success of your website. You can use it to analyze how often your website hit more than 10000 visits per day or on how many days a product was sold more than 50 times.\n\nThis plugin was [crowdfunded with the support](http:\/\/crowdfunding.piwik.org\/custom-alerts-plugin\/) of 37 Piwik community members!\n\n## Installation\n\nInstall it via Piwik Marketplace\n\n## FAQ\n\n__What exactly is included in this feature?__\n\nHere is the complete list of features that are included in this project:\n\n* Define new Alert (\"Big drop in purchases\")\n* Select a website on which the Alert is defined\n* Receive an alert by email (email will contain Alert description + link to Piwik dashboard URL for the given website ID and period).\n* Receive an alert by SMS (SMS will contain Alert description and numbers that triggered the Alert)\n* Select the Alert period: should it be daily, weekly or monthly?\n* Select the report (Websites, Keywords, Countries, general stats)\n* Define Metrics (visits, page view, avg. visit duration, Goal 1 conversions, total goal conversions, etc.)\n* Define the Alert: when Visits decrease 50%, when purchases are more than 50 per day, etc.\n\n__What reports are available to the Alert system?__\n\nYou can create an alert for any available report in Piwik. Plugins can define new reports which will be automatically picked up by Alerts.\n\n__What alert conditions are available?__\n\nYou can create alerts for the following metrics:\n\n* Visits, Visits Evolution, Unique Visits\n* Actions, Action Evolution\n* Pageviews, Pageviews Evolution\n* Time on page\n* Bounce rate\n* Goal revenue\n* Downloads\n* and many more..\n\nTo define the condition you can select the conditions:\n\n* Greater than, less than\n* Equal, Not Equal\n* Percentage increase\/decrease\n\n## Changelog\n\n* 0.1.0 First beta\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Please direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n\n",
+ "numDownloads":0,"license":{"name":"Commercial license",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/commits\/0.1.12",
+ "readmeHtml":{"description":"\n\n<p>Create Custom Alerts + Be notified by email\/SMS!<\/p>\n\n<p>Alerts are a great way to get notified of changes on your website. Want to know if your new product hits less than 100 sales in a week or your new article attracts more than 200 visitors a day? Create alerts that make sense to you. Be notified by email or SMS when the conditions for your alerts are met. Stay on top of your website!<\/p>\n\n<p>The Alert log will help you to better understand the success of your website. You can use it to analyze how often your website hit more than 10000 visits per day or on how many days a product was sold more than 50 times.<\/p>\n\n<p>This plugin was <a href=\"http:\/\/crowdfunding.piwik.org\/custom-alerts-plugin\/\">crowdfunded with the support<\/a> of 37 Piwik community members!<\/p>\n\n",
+ "faq":"<p><strong>What exactly is included in this feature?<\/strong><\/p>\n\n<p>Here is the complete list of features that are included in this project:<\/p>\n\n<ul><li>Define new Alert (\"Big drop in purchases\")<\/li>\n<li>Select a website on which the Alert is defined<\/li>\n<li>Receive an alert by email (email will contain Alert description + link to Piwik dashboard URL for the given website ID and period).<\/li>\n<li>Receive an alert by SMS (SMS will contain Alert description and numbers that triggered the Alert)<\/li>\n<li>Select the Alert period: should it be daily, weekly or monthly?<\/li>\n<li>Select the report (Websites, Keywords, Countries, general stats)<\/li>\n<li>Define Metrics (visits, page view, avg. visit duration, Goal 1 conversions, total goal conversions, etc.)<\/li>\n<li>Define the Alert: when Visits decrease 50%, when purchases are more than 50 per day, etc.<\/li>\n<\/ul><p><strong>What reports are available to the Alert system?<\/strong><\/p>\n\n<p>You can create an alert for any available report in Piwik. Plugins can define new reports which will be automatically picked up by Alerts.<\/p>\n\n<p><strong>What alert conditions are available?<\/strong><\/p>\n\n<p>You can create alerts for the following metrics:<\/p>\n\n<ul><li>Visits, Visits Evolution, Unique Visits<\/li>\n<li>Actions, Action Evolution<\/li>\n<li>Pageviews, Pageviews Evolution<\/li>\n<li>Time on page<\/li>\n<li>Bounce rate<\/li>\n<li>Goal revenue<\/li>\n<li>Downloads<\/li>\n<li>and many more..<\/li>\n<\/ul><p>To define the condition you can select the conditions:<\/p>\n\n<ul><li>Greater than, less than<\/li>\n<li>Equal, Not Equal<\/li>\n<li>Percentage increase\/decrease<\/li>\n<\/ul>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0 First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomAlerts\/download\/0.1.12"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomDimensions",
+ "displayName":"Custom Dimensions",
+ "owner":"piwik",
+ "description":"Extend Piwik to your needs by defining and tracking Custom Dimensions in scope Action or Visit",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-11-25 03:26:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions",
+ "lastUpdated":"2016-02-04 19:56:04",
+ "latestVersion":"0.1.4",
+ "numDownloads":2584,"screenshots":[],"previews":[],"activity":{"numCommits":"67",
+ "numContributors":"4",
+ "lastCommitDate":"2016-06-02 15:56:37"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-11-25 03:26:04",
+ "requires":{"piwik":">=2.15.1-b3"},"readme":"",
+ "numDownloads":100,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/0.1.11",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.0"},{"name":"0.1.2",
+ "release":"2015-12-07 04:16:04",
+ "requires":{"piwik":">=2.15.1-b8"},"readme":"",
+ "numDownloads":477,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/0.1.12",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2016-01-21 19:30:07",
+ "requires":{"piwik":">=2.15.1-b8"},"readme":"",
+ "numDownloads":254,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2016-02-04 19:56:04",
+ "requires":{"piwik":">=2.15.1-b8"},"readme":"# Piwik CustomDimensions Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-CustomDimensions.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-CustomDimensions)\n\n## Description\n\nThis plugins allows you to configure and track any [Custom Dimensions](https:\/\/piwik.org\/docs\/custom-dimensions\/). You can configure a Custom Dimension\nby giving it a name and a scope (Action or Visit). Afterwards you will see a new menu item in the reporting area\nfor each configured dimension and be able to get its data. You can also export the report as a widget, segment by this\n dimenson, and more. For more information read the [Custom Dimensions user guide](https:\/\/piwik.org\/docs\/custom-dimensions\/) or have a look in the FAQ.\n\n*Warning*: Depending on the database size of your Piwik this plugin may take a long time to install.\n\n## FAQ\n\n__I have a large database, can I install the plugin on the command line?__\n\nYes, this is not only possible but even recommended as the installation may take hours. To do this follow these steps:\n\n* Download the Plugin from [https:\/\/plugins.piwik.org\/CustomDimensions](https:\/\/plugins.piwik.org\/CustomDimensions)\n* Extract the files within the downloaded ZIP file\n* Copy the `CustomDimensions` directory into the `plugins` directory of your Piwik\n* Execute the command `.\/console plugin:activate CustomDimensions` within your Piwik directory\n\n__Where can I manage Custom Dimensions?__\n\nCustom Dimensions can be managed by clicking on your username or user icon in the top right. There will be a menu\nitem \"Custom Dimensions\" within the \"Manage\" section of the left menu. By clicking on it you can manage Custom Dimensions.\nPlease note that the permission Admin is required in order to be able to manage them.\n\n__Where can I find the Id for a Custom Dimension?__\n\nYou can find them by going to the \"Manage Custom Dimensions\" page in your personal area. For each dimension you will\nfind the Id in the table that lists all available Custom Dimensions.\n\n__How do I set a value for a dimension in the JavaScript Tracker?__\n\nPlease have a look at the [JavaScript Tracker guide for Custom Dimensions](https:\/\/developer.piwik.org\/guides\/tracking-javascript-guide#custom-dimensions).\n\n__How do I set a value for a dimension in the PHP Tracker?__\n\n`$tracker->setCustomTrackingParameter('dimension' . $customDimensionId, $value);`\n\nPlease note custom tracking parameters are cleared after each tracking request. If you want to keep the same\nCustom Dimensions over all request make sure to call this method before each tracking call.\n\n__I have configured all available Custom Dimension slots, can I add more?__\n\nYes, this is possible. To make a new Custom Dimension slot available execute the following command including the scope option:\n\n```\n.\/console customdimensions:add-custom-dimension --scope=action\n.\/console customdimensions:add-custom-dimension --scope=visit\n```\n\nBe aware that this can take a long time depending on the size of your database as it requires MySQL schema changes.\nYou can directly create multiple Custom Dimension slots. To do this add the option `--count=X`. Usually it doesn't take much\nlonger to create directly multiple new slots.\n\n__Is it possible to delete a Custom Dimension and all of its data?__\n\nIn the UI it is only possible to deactivate a dimension. However, on the command line you can remove a Custom Dimension\nand report it's log data by executing the following console command:\n\n```\n.\/console customdimensions:remove-custom-dimension --scope=$scope --index=$index\n```\n\nMake sure to replace `$scope` and `$index` with the correct values. To get a list of all available indexes execute `.\/console customdimensions:info`.\n\nRemoving a Custom Dimension may take a long time as it requires MySQL schema changes. Currently, only log data is removed. Archived reports will be\nnot deleted currently.\n\n## Changelog\n\n* 0.1.4 Fix a possible JavaScript error if Transitions plugin is disabled\n* 0.1.3 Fix UI of Custom Dimensions was not working properly when not using English as language\n* 0.1.2\n * New feature: Mark an extraction as case sensitive\n * New feature : Show actions that had no value defined\n * New feature : Link to Page URLs in subtables\n* 0.1.1 Bugfixes\n* 0.1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [github.com\/piwik\/plugin-CustomDimensions\/issues](https:\/\/github.com\/piwik\/plugin-CustomDimensions\/issues)\n",
+ "numDownloads":1753,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/commits\/0.1.4",
+ "readmeHtml":{"description":"\n\n<p>This plugins allows you to configure and track any <a href=\"https:\/\/piwik.org\/docs\/custom-dimensions\/\">Custom Dimensions<\/a>. You can configure a Custom Dimension\nby giving it a name and a scope (Action or Visit). Afterwards you will see a new menu item in the reporting area\nfor each configured dimension and be able to get its data. You can also export the report as a widget, segment by this\n dimenson, and more. For more information read the <a href=\"https:\/\/piwik.org\/docs\/custom-dimensions\/\">Custom Dimensions user guide<\/a> or have a look in the FAQ.<\/p>\n\n<p><em>Warning<\/em>: Depending on the database size of your Piwik this plugin may take a long time to install.<\/p>\n\n",
+ "faq":"<p><strong>I have a large database, can I install the plugin on the command line?<\/strong><\/p>\n\n<p>Yes, this is not only possible but even recommended as the installation may take hours. To do this follow these steps:<\/p>\n\n<ul><li>Download the Plugin from <a href=\"https:\/\/plugins.piwik.org\/CustomDimensions\">https:\/\/plugins.piwik.org\/CustomDimensions<\/a><\/li>\n<li>Extract the files within the downloaded ZIP file<\/li>\n<li>Copy the <code>CustomDimensions<\/code> directory into the <code>plugins<\/code> directory of your Piwik<\/li>\n<li>Execute the command <code>.\/console plugin:activate CustomDimensions<\/code> within your Piwik directory<\/li>\n<\/ul><p><strong>Where can I manage Custom Dimensions?<\/strong><\/p>\n\n<p>Custom Dimensions can be managed by clicking on your username or user icon in the top right. There will be a menu\nitem \"Custom Dimensions\" within the \"Manage\" section of the left menu. By clicking on it you can manage Custom Dimensions.\nPlease note that the permission Admin is required in order to be able to manage them.<\/p>\n\n<p><strong>Where can I find the Id for a Custom Dimension?<\/strong><\/p>\n\n<p>You can find them by going to the \"Manage Custom Dimensions\" page in your personal area. For each dimension you will\nfind the Id in the table that lists all available Custom Dimensions.<\/p>\n\n<p><strong>How do I set a value for a dimension in the JavaScript Tracker?<\/strong><\/p>\n\n<p>Please have a look at the <a href=\"https:\/\/developer.piwik.org\/guides\/tracking-javascript-guide#custom-dimensions\">JavaScript Tracker guide for Custom Dimensions<\/a>.<\/p>\n\n<p><strong>How do I set a value for a dimension in the PHP Tracker?<\/strong><\/p>\n\n<p><code>$tracker-&gt;setCustomTrackingParameter('dimension' . $customDimensionId, $value);<\/code><\/p>\n\n<p>Please note custom tracking parameters are cleared after each tracking request. If you want to keep the same\nCustom Dimensions over all request make sure to call this method before each tracking call.<\/p>\n\n<p><strong>I have configured all available Custom Dimension slots, can I add more?<\/strong><\/p>\n\n<p>Yes, this is possible. To make a new Custom Dimension slot available execute the following command including the scope option:<\/p>\n\n<pre><code>.\/console customdimensions:add-custom-dimension --scope=action\n.\/console customdimensions:add-custom-dimension --scope=visit\n<\/code><\/pre>\n\n<p>Be aware that this can take a long time depending on the size of your database as it requires MySQL schema changes.\nYou can directly create multiple Custom Dimension slots. To do this add the option <code>--count=X<\/code>. Usually it doesn't take much\nlonger to create directly multiple new slots.<\/p>\n\n<p><strong>Is it possible to delete a Custom Dimension and all of its data?<\/strong><\/p>\n\n<p>In the UI it is only possible to deactivate a dimension. However, on the command line you can remove a Custom Dimension\nand report it's log data by executing the following console command:<\/p>\n\n<pre><code>.\/console customdimensions:remove-custom-dimension --scope=$scope --index=$index\n<\/code><\/pre>\n\n<p>Make sure to replace <code>$scope<\/code> and <code>$index<\/code> with the correct values. To get a list of all available indexes execute <code>.\/console customdimensions:info<\/code>.<\/p>\n\n<p>Removing a Custom Dimension may take a long time as it requires MySQL schema changes. Currently, only log data is removed. Archived reports will be\nnot deleted currently.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.4 Fix a possible JavaScript error if Transitions plugin is disabled<\/li>\n<li>0.1.3 Fix UI of Custom Dimensions was not working properly when not using English as language<\/li>\n<li>0.1.2\n\n<ul><li>New feature: Mark an extraction as case sensitive<\/li>\n<li>New feature : Show actions that had no value defined<\/li>\n<li>New feature : Link to Page URLs in subtables<\/li>\n<\/ul><\/li>\n<li>0.1.1 Bugfixes<\/li>\n<li>0.1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomDimensions\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomOptOut",
+ "displayName":"Custom Opt Out",
+ "owner":"Zeichen32",
+ "description":"Create your own opt-out iframe css styles",
+ "homepage":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut",
+ "createdDateTime":"2014-12-23 01:06:54",
+ "donate":{"paypal":"test2@example.com",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":["Opt-Out",
+ "CSS"],"basePrice":0,"authors":[{"name":"Jens Averkamp",
+ "email":"test6@example.com",
+ "homepage":"https:\/\/github.com\/Zeichen32"}],"repositoryUrl":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut",
+ "lastUpdated":"2014-12-23 01:22:19",
+ "latestVersion":"0.1.4",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/CustomOptOut\/images\/CustomOptOut.png"],"previews":[],"activity":{"numCommits":"13",
+ "numContributors":"5",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.3",
+ "release":"2014-12-23 01:06:54",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut\/commits\/0.1.3",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomOptOut\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2014-12-23 01:22:19",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"readme":"# Custom Opt-Out Styles Piwik Plugin\n\n## Description\n\nAdd a new admin tab, to change the opt-out CSS Styles for each website.\n\n## Requirements\n\n+ Piwik >= 2.0.0\n\n## Changelog\n\n#### CustomOptOut 0.1.4:\n* Issue #3 Code updated to support Piwik 2.1 and newer\n* Issue #2 Allow relative urls in css file field\n\n#### CustomOptOut 0.1.3:\n* Issue #1 Added a p-tag around the opt-out text for better markup and easier styling. (christianseel)\n\n#### CustomOptOut 0.1.2:\n* Fix wrong css escaping\n\n#### CustomOptOut 0.1.1:\n* Initial Version\n\n\n## Authors\n\n**Jens Averkamp**\n\n+ [https:\/\/github.com\/Zeichen32](https:\/\/github.com\/Zeichen32)\n\n## Support\n**Please direct any feedback to [https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut](https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut)**\n\n## Copyright and license\n\nReleased under the GPL v3 (or later) license, see [misc\/gpl-3.0.txt](misc\/gpl-3.0.txt)",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Zeichen32\/PiwikCustomOptOut\/commits\/0.1.4",
+ "readmeHtml":{"description":"\n\n<p>Add a new admin tab, to change the opt-out CSS Styles for each website.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<h4>CustomOptOut 0.1.4:<\/h4>\n\n<ul><li>Issue #3 Code updated to support Piwik 2.1 and newer<\/li>\n<li>Issue #2 Allow relative urls in css file field<\/li>\n<\/ul><h4>CustomOptOut 0.1.3:<\/h4>\n\n<ul><li>Issue #1 Added a p-tag around the opt-out text for better markup and easier styling. (christianseel)<\/li>\n<\/ul><h4>CustomOptOut 0.1.2:<\/h4>\n\n<ul><li>Fix wrong css escaping<\/li>\n<\/ul><h4>CustomOptOut 0.1.1:<\/h4>\n\n<ul><li>Initial Version<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomOptOut\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CustomTrackerJs",
+ "displayName":"Custom Tracker Js",
+ "owner":"PiwikPRO",
+ "description":"Lets Super Users and other plugins customise the piwik.js tracker file.",
+ "homepage":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs",
+ "createdDateTime":"2014-10-14 04:56:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs",
+ "lastUpdated":"2016-04-12 16:00:04",
+ "latestVersion":"1.1.2",
+ "numDownloads":4376,"screenshots":[],"previews":[],"activity":{"numCommits":"33",
+ "numContributors":"5",
+ "lastCommitDate":"2016-04-15 22:59:15"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.2",
+ "release":"2014-10-14 04:56:03",
+ "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+ "numDownloads":64,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.0.2"},{"name":"1.0.3",
+ "release":"2014-10-15 21:58:03",
+ "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+ "numDownloads":3554,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.0.3"},{"name":"1.1.0",
+ "release":"2016-03-08 14:28:03",
+ "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+ "numDownloads":315,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.1.0"},{"name":"1.1.1",
+ "release":"2016-04-12 14:30:04",
+ "requires":{"piwik":">=2.8.0-b4"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.0.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.1.1"},{"name":"1.1.2",
+ "release":"2016-04-12 16:00:04",
+ "requires":{"piwik":">=2.8.0-b4"},"readme":"# Piwik CustomTrackerJs Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-CustomTrackerJs.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-CustomTrackerJs)\n\n## Description\n\nThe `CustomTrackerJs` plugin lets the super users or other plugins add custom code to the Piwik Javascript Tracker.\n\n## Usage\n\n### Super users\n\nSuper users can set the Javascript code they want to add to the `piwik.js` file in `Settings > Plugin settings`.\n\nAny code added in the *Javascript code* textbox will be appended to `piwik.js` by a scheduled task. Be very careful\nas to write valid Javascript code since invalid code can break the tracker.\n\n### Other plugins\n\nPlugins can make use of the `CustomTrackerJs.getTrackerJsAdditions` event to register Javascript code to add to\nthe tracker.\n\nFor example this will add a `console.log(\"Hello world!\");` line to the tracker:\n\n```php\nclass MyPlugin extends \\Piwik\\Plugin\n{\n public function getListHooksRegistered()\n {\n return array(\n 'CustomTrackerJs.getTrackerJsAdditions' => 'getTrackerJsAdditions',\n );\n }\n\n public function getTrackerJsAdditions(&$code)\n {\n $code .= PHP_EOL . 'console.log(\"Hello world!\");';\n }\n}\n```\n\n## Changelog\n\n* 1.1.2\n - Marketplace release\n* 1.1.0\n - PPCDEV-2609 Compatibility with Piwik 2.16.0\n\n## Support\n\nPlease contact us at contact@piwik.pro in case you are facing a bug.\n\n\nPlugin created and maintained by [Piwik PRO](http:\/\/piwik.pro\/).\n",
+ "numDownloads":442,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-CustomTrackerJs\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>The <code>CustomTrackerJs<\/code> plugin lets the super users or other plugins add custom code to the Piwik Javascript Tracker.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>1.1.2\n\n<ul><li>Marketplace release<\/li>\n<\/ul><\/li>\n<li>1.1.0\n\n<ul><li>PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/CustomTrackerJs\/download\/1.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ExcludeByDDNS",
+ "displayName":"Exclude By DDNS",
+ "owner":"sgiehl",
+ "description":"This plugin allows you to dynamically exclude a IP using DDNS update",
+ "homepage":"http:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS",
+ "createdDateTime":"2015-02-08 22:10:03",
+ "donate":{"paypal":"stefangiehl@web.de",
+ "flattr":"https:\/\/flattr.com\/thing\/2578144\/sgiehl",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS",
+ "lastUpdated":"2016-05-08 22:10:03",
+ "latestVersion":"0.5.0",
+ "numDownloads":3069,"screenshots":[],"previews":[],"activity":{"numCommits":"44",
+ "numContributors":"1",
+ "lastCommitDate":"2016-05-08 22:29:45"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1",
+ "release":"2015-02-08 22:10:03",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":149,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.1"},{"name":"0.1.1",
+ "release":"2015-02-24 19:52:03",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":68,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.1.1"},{"name":"0.2.0",
+ "release":"2015-03-01 11:42:03",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":227,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2015-03-28 15:32:03",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":397,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.2.1"},{"name":"0.2.2",
+ "release":"2015-06-01 07:08:09",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":341,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/1.0.8",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.2.2"},{"name":"0.3.0",
+ "release":"2015-07-28 20:36:02",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":4,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.3.0"},{"name":"0.3.1",
+ "release":"2015-07-28 22:30:03",
+ "requires":{"piwik":">=2.9.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":157,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.3.1"},{"name":"0.4.0",
+ "release":"2015-08-15 18:44:03",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":1529,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.4.0"},{"name":"0.5.0",
+ "release":"2016-05-08 22:10:03",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.3"},"readme":"# Piwik Exclude IP By DDNS\n\n[![Build Status](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ExcludeByDDNS.png?branch=master)](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ExcludeByDDNS)\n[![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS&title=Piwik Plugin ExcludeByDDNS=&tags=github&category=software)\n\n## Description\n\nThis plugin allows the Piwik users to dynamically exclude their IP address using DDNS update.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.4.0 or higher is required.\n\n### Features\n\n- Exclude one IP for each Piwik user \n- Exclude and IP using an already updated hostname\n\n## FAQ\n\n__Which update method should i use, _DDNS Update_ or _DDNS Hostname_?__\n\nIf available, ___DDNS Update___ is recommended. This method is a bit more complicated to set up, but it leads to immediately updated IP's, as the client will trigger the update whenever a new IP is assigned.\nBut it may not be viable for all users, eg. \n* Not all DDNS clients allow custom update-URL's.\n* The client may be already serving another Server and have no ability to talk to multiple Servers at the same time.\n\nSo, the ___DDNS Hostname___ can be an alternative. Use a DDNS Service that is compatible with your client and enter the hostname from there to have the plugin resolve your dynamic IP. The downside: Updating happens via a sheduled task every hour, so there might be small windows with the new IP still being tracked, but not the old one.\n\n__What data do I need to set for DDNS Update__\n\nYou need to set a custom URL to be triggered for an update.\nYour personal update-URL is shown in your piwik installation (user-menu > Personal > DDNS Settings).\n\nThe URL has the following scheme:\n```\nhttp{s}:\/\/{piwik.url}\/index.php?module=ExcludeByDDNS&action=update&token_auth={token_auth}\n```\n\n- {s} Use HTTPS if available.\n- {piwik.url}: The URL to your piwik installation.\n- {token_auth}: Your API auth token (user-menu > Platform > API).\n\nThere is no need to set user, password or domain name.\n\n## Changelog\n\n- Version 0.4.0 - Compatibility for Piwik > 2.4.0\n- Version 0.3.0 - Various improvements and translations\n- Version 0.2.0 - Beta Release\n- Version 0.1.0 - Alpha Release\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\n",
+ "numDownloads":197,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ExcludeByDDNS\/commits\/1.1.0",
+ "readmeHtml":{"description":"\n\n<p>This plugin allows the Piwik users to dynamically exclude their IP address using DDNS update.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.4.0 or higher is required.<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Exclude one IP for each Piwik user <\/li>\n<li>Exclude and IP using an already updated hostname<\/li>\n<\/ul>",
+ "faq":"<p><strong>Which update method should i use, <em>DDNS Update<\/em> or <em>DDNS Hostname<\/em>?<\/strong><\/p>\n\n<p>If available, <strong><em>DDNS Update<\/em><\/strong> is recommended. This method is a bit more complicated to set up, but it leads to immediately updated IP's, as the client will trigger the update whenever a new IP is assigned.\nBut it may not be viable for all users, eg. \n* Not all DDNS clients allow custom update-URL's.\n* The client may be already serving another Server and have no ability to talk to multiple Servers at the same time.<\/p>\n\n<p>So, the <strong><em>DDNS Hostname<\/em><\/strong> can be an alternative. Use a DDNS Service that is compatible with your client and enter the hostname from there to have the plugin resolve your dynamic IP. The downside: Updating happens via a sheduled task every hour, so there might be small windows with the new IP still being tracked, but not the old one.<\/p>\n\n<p><strong>What data do I need to set for DDNS Update<\/strong><\/p>\n\n<p>You need to set a custom URL to be triggered for an update.\nYour personal update-URL is shown in your piwik installation (user-menu &gt; Personal &gt; DDNS Settings).<\/p>\n\n<p>The URL has the following scheme:<\/p>\n\n<pre><code>http{s}:\/\/{piwik.url}\/index.php?module=ExcludeByDDNS&amp;action=update&amp;token_auth={token_auth}\n<\/code><\/pre>\n\n<ul><li>{s} Use HTTPS if available.<\/li>\n<li>{piwik.url}: The URL to your piwik installation.<\/li>\n<li>{token_auth}: Your API auth token (user-menu &gt; Platform &gt; API).<\/li>\n<\/ul><p>There is no need to set user, password or domain name.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>Version 0.4.0 - Compatibility for Piwik &gt; 2.4.0<\/li>\n<li>Version 0.3.0 - Various improvements and translations<\/li>\n<li>Version 0.2.0 - Beta Release<\/li>\n<li>Version 0.1.0 - Alpha Release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ExcludeByDDNS\/download\/0.5.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"FeedAnnotation",
+ "displayName":"Feed Annotation",
+ "owner":"halfdan",
+ "description":"Plugin to automatically create Annotations by polling a feed (Atom\/RSS)",
+ "homepage":"http:\/\/github.com\/halfdan\/piwik-feedannotation-plugin",
+ "createdDateTime":"2014-12-23 00:39:30",
+ "donate":{},"support":[],"isTheme":false,"keywords":["rss",
+ "atom",
+ "annotation",
+ "feed"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+ "email":"test8@example.com",
+ "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/piwik-feedannotation-plugin",
+ "lastUpdated":"2014-12-23 00:39:30",
+ "latestVersion":"0.9.5",
+ "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"26",
+ "numContributors":"1",
+ "lastCommitDate":"1970-01-01 00:33:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.9.5",
+ "release":"2014-12-23 00:39:30",
+ "requires":{"piwik":">=2.0.0"},"readme":"# Piwik FeedAnnotation Plugin\n\n## Description \n\nThis is a plugin for the Open Source Web Analytics platform Piwik. It allows you to automatically fetch RSS\/Atom-Feeds from your website and create new Annotations from feed entries. \n\nSince the \"Annotations\" plugin was introduced in Piwik 1.10, this plugin requires at least Piwik 1.10.\n\n![Annotations in Piwik](http:\/\/cdn.geekmonkey.org\/assets\/files\/000\/000\/038\/screen\/annotations-view.png)\n\n## Documentation\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n ```\n cd plugins\/\n git clone https:\/\/github.com\/halfdan\/piwik-feedannotation-plugin.git FeedAnnotation\n ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You can add new feeds for sites you have admin access to under Settings -> Feed Annotations\n\nFeeds are fetched once a day using \"scheduled tasks\". After adding a feed you can manually force the plugin to process your feed by clicking the \"Process now\" link.\n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-feedannotation-plugin\/commits\/v0.9.5",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. It allows you to automatically fetch RSS\/Atom-Feeds from your website and create new Annotations from feed entries.<\/p>\n\n<p>Since the \"Annotations\" plugin was introduced in Piwik 1.10, this plugin requires at least Piwik 1.10.<\/p>\n\n<p><img src=\"http:\/\/cdn.geekmonkey.org\/assets\/files\/000\/000\/038\/screen\/annotations-view.png\" alt=\"annotations-view.png\" \/><\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/FeedAnnotation\/download\/0.9.5"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"FlagCounter",
+ "displayName":"Flag Counter",
+ "owner":"sgiehl",
+ "description":"This plugin allows you to include a simple statistic in your website showing the flags and hits of the countries your visitors came from",
+ "homepage":"http:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter",
+ "createdDateTime":"2015-01-05 23:22:04",
+ "donate":{"paypal":"stefangiehl@web.de",
+ "flattr":"https:\/\/flattr.com\/thing\/2578144\/sgiehl",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter",
+ "lastUpdated":"2015-08-15 18:54:04",
+ "latestVersion":"0.4.0",
+ "numDownloads":4519,"screenshots":[],"previews":[],"activity":{"numCommits":"29",
+ "numContributors":"1",
+ "lastCommitDate":"2016-01-19 20:18:45"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1",
+ "release":"2015-01-05 23:22:04",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":351,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/1.0.6",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.1"},{"name":"0.2",
+ "release":"2015-02-08 12:22:04",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":523,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.2"},{"name":"0.3",
+ "release":"2015-04-06 11:44:03",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":155,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.3"},{"name":"0.3.1",
+ "release":"2015-04-15 20:06:03",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":487,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.3.1"},{"name":"0.3.2",
+ "release":"2015-06-01 07:10:04",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":681,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.3.2"},{"name":"0.4.0",
+ "release":"2015-08-15 18:54:04",
+ "requires":{"piwik":">=2.4.0",
+ "php":">=5.3.0"},"readme":"# Piwik Flag Counter Plugin\n\n[![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter&title=Piwik Plugin FlagCounter=&tags=github&category=software) \n\n\n## Description\n\nThis plugin allows you to include a small image or iframe in you website displaying the flags and total hits of the countries your website visitors came from\n\nPlease keep in mind that everyone will be able to see that kind of statistic as this plugin does not consider the access rights.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.0.4 or higher is required.\nGD library including ttf support\n\n### Features\n\n- Configurable with following parameters:\n - idSite: Website to display\n - period: period to display\n - date: date to display\n - cols: count of columns to display (default 2)\n - rows: count of rows to display (default 5)\n - showflag: show flags (default 1)\n - showcountryode: show country codes (default 0)\n - font: font family to use\n - fontsize: font size to use (between 2 and 30; default 12)\n - fontcolor: font color to use (rgb value; default 0,0,0)\n- Generates a transparent PNG image showing the flag icons and their total hits\n- Generates simple HTML to be included as iframe\n\n## FAQ\n\n__The image is not displayed. What can I do?__\n\nMaybe you have some kind of access restriction for your Piwik like http auth. The Url needs to be public accessible, or at least accessible to those, who should be able to see the counter.\n\n__How can I display the counter for all data in the past__\n\nTo do that, set period to ```range``` and date to something like ```1992-01-01,today```.\n\nThe full URL for the image would then look like:\n```\nhttp:\/\/piwik.url\/index.php?module=FlagCounter&action=image&idSite=1&period=range&date=1992-01-01,today&cols=2&rows=6\n``` \n\n__Can I use a custom font?__\n\nCurrently all ttf fonts located in the ```fonts``` directory within this plugin are available for usage. If you place a new font there, you should be able to use it.\n\n\n## Changelog\n\n- Version 0.1 - Alpha Release\n- Version 0.2 \n - improved image generation (automatic spacing between items)\n - possibility to show country codes besides or instead of the flags\n- Version 0.3\n - added ability to choose a font family, size & color\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\nNote: The fonts bundled with this plugin are under the following licenses\n- OpenSans: Apache license\n- Roboto: Apache license\n- Raleway: SIL Open Font License\n- Cantarell: SIL Open Font License\n\n",
+ "numDownloads":2322,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-FlagCounter\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin allows you to include a small image or iframe in you website displaying the flags and total hits of the countries your website visitors came from<\/p>\n\n<p>Please keep in mind that everyone will be able to see that kind of statistic as this plugin does not consider the access rights.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.0.4 or higher is required.\nGD library including ttf support<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Configurable with following parameters:\n\n<ul><li>idSite: Website to display<\/li>\n<li>period: period to display<\/li>\n<li>date: date to display<\/li>\n<li>cols: count of columns to display (default 2)<\/li>\n<li>rows: count of rows to display (default 5)<\/li>\n<li>showflag: show flags (default 1)<\/li>\n<li>showcountryode: show country codes (default 0)<\/li>\n<li>font: font family to use<\/li>\n<li>fontsize: font size to use (between 2 and 30; default 12)<\/li>\n<li>fontcolor: font color to use (rgb value; default 0,0,0)<\/li>\n<\/ul><\/li>\n<li>Generates a transparent PNG image showing the flag icons and their total hits<\/li>\n<li>Generates simple HTML to be included as iframe<\/li>\n<\/ul>",
+ "faq":"<p><strong>The image is not displayed. What can I do?<\/strong><\/p>\n\n<p>Maybe you have some kind of access restriction for your Piwik like http auth. The Url needs to be public accessible, or at least accessible to those, who should be able to see the counter.<\/p>\n\n<p><strong>How can I display the counter for all data in the past<\/strong><\/p>\n\n<p>To do that, set period to <code>range<\/code> and date to something like <code>1992-01-01,today<\/code>.<\/p>\n\n<p>The full URL for the image would then look like:<\/p>\n\n<pre><code>http:\/\/piwik.url\/index.php?module=FlagCounter&amp;action=image&amp;idSite=1&amp;period=range&amp;date=1992-01-01,today&amp;cols=2&amp;rows=6\n<\/code><\/pre>\n\n<p><strong>Can I use a custom font?<\/strong><\/p>\n\n<p>Currently all ttf fonts located in the <code>fonts<\/code> directory within this plugin are available for usage. If you place a new font there, you should be able to use it.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>Version 0.1 - Alpha Release<\/li>\n<li>Version 0.2 \n\n<ul><li>improved image generation (automatic spacing between items)<\/li>\n<li>possibility to show country codes besides or instead of the flags<\/li>\n<\/ul><\/li>\n<li>Version 0.3\n\n<ul><li>added ability to choose a font family, size &amp; color<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/FlagCounter\/download\/0.4.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"FreeMobileMessaging",
+ "displayName":"Free Mobile Messaging",
+ "owner":"apapillon",
+ "description":"Mobile Messaging Plugin: Free Mobile support",
+ "homepage":"https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin",
+ "createdDateTime":"2015-11-29 23:10:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin",
+ "lastUpdated":"2015-11-29 23:10:04",
+ "latestVersion":"1.0.0",
+ "numDownloads":1212,"screenshots":[],"previews":[],"activity":{"numCommits":"1",
+ "numContributors":"1",
+ "lastCommitDate":"2015-11-29 23:09:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+ "release":"2015-11-29 23:10:04",
+ "requires":{"piwik":">=2.15.1-b2"},"readme":"# Piwik FreeMobileSMSProvider Plugin \n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform [Piwik][1]. It \nadd Free Mobile SMS provider support to MobileMessaging plugin.\n\n## Installation\n\nInstall the prerequiste MobileMessagin plugin via MarketPlace.\n\nSee http:\/\/piwik.org\/faq\/plugins\/#faq_21\n\n## FAQ\n\n\n## Changelog\n\n__1.0.0__\n* Initial release\n\n## License\n\nGPL v3\n\n## Support\n\nPlease direct any feedback to: \n\n* [https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin\/issues][2]\n\n[1]: http:\/\/piwik.org\n[2]: https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin\/issues\n",
+ "numDownloads":1212,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/apapillon\/piwik-freemobilesmsprovider-plugin\/commits\/1.0",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform <a href=\"http:\/\/piwik.org\">Piwik<\/a>. It \nadd Free Mobile SMS provider support to MobileMessaging plugin.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/FreeMobileMessaging\/download\/1.0.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"GoogleAuthenticator",
+ "displayName":"Google Authenticator",
+ "owner":"sgiehl",
+ "description":"Adds Google Authenticator Two Factor Auth to Piwik",
+ "homepage":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator",
+ "createdDateTime":"2015-07-21 20:46:05",
+ "donate":{"paypal":"stefangiehl@web.de",
+ "flattr":"https:\/\/flattr.com\/thing\/4453253\/sgiehlpiwik-plugin-GoogleAuthenticator-on-GitHub",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator",
+ "lastUpdated":"2015-08-15 15:26:03",
+ "latestVersion":"0.1.0",
+ "numDownloads":2267,"screenshots":[],"previews":[],"activity":{"numCommits":"42",
+ "numContributors":"1",
+ "lastCommitDate":"2016-04-30 14:40:55"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.0.1",
+ "release":"2015-07-21 20:46:05",
+ "requires":{"piwik":">=2.14.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":47,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.1"},{"name":"0.0.2",
+ "release":"2015-07-26 10:56:04",
+ "requires":{"piwik":">=2.14.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":26,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.2"},{"name":"0.0.3",
+ "release":"2015-07-27 20:44:03",
+ "requires":{"piwik":">=2.14.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":19,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.3"},{"name":"0.0.4",
+ "release":"2015-07-28 13:18:03",
+ "requires":{"piwik":">=2.14.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":167,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.0.4"},{"name":"0.1.0",
+ "release":"2015-08-15 15:26:03",
+ "requires":{"piwik":">=2.14.0",
+ "php":">=5.4.0"},"readme":"# Piwik Google Authenticator Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-GoogleAuthenticator.png?branch=master)](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-GoogleAuthenticator)\n[![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator&title=Piwik Plugin GoogleAuthenticator=&tags=github&category=software) \n\n\n## Description\n\nAdds a userbased possibility to use Google Authenticator 2FA as additional login security.\nEach use can enable\/disable this feature in his account settings.\n\nThis Plugin is based on the original Piwik Login plugin and needs this one to be installed but not active.\n\nATTENTION: Activating Google Authenticator for an account, also requires an auth code for direct API requests with the users token auth. Use ```&auth_code={authcode}``` to do that.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.14.0 or higher is required.\n\n### Features\n\n- Userbased activation of Google Authenticator 2FA\n\n## Changelog\n\n- 0.1.0 Added possibility to define title and description for Google Authenticator app\n- 0.0.4 fixes password reset link\n- 0.0.3 small improvements\n- 0.0.2 Added first translations\n- 0.0.1 Initial release\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\nThe used library [PHPGangsta\/GoogleAuthenticator](https:\/\/github.com\/PHPGangsta\/GoogleAuthenticator) is licensed under BSD\n\n",
+ "numDownloads":2008,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-GoogleAuthenticator\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Adds a userbased possibility to use Google Authenticator 2FA as additional login security.\nEach use can enable\/disable this feature in his account settings.<\/p>\n\n<p>This Plugin is based on the original Piwik Login plugin and needs this one to be installed but not active.<\/p>\n\n<p>ATTENTION: Activating Google Authenticator for an account, also requires an auth code for direct API requests with the users token auth. Use <code>&amp;auth_code={authcode}<\/code> to do that.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.14.0 or higher is required.<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Userbased activation of Google Authenticator 2FA<\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0 Added possibility to define title and description for Google Authenticator app<\/li>\n<li>0.0.4 fixes password reset link<\/li>\n<li>0.0.3 small improvements<\/li>\n<li>0.0.2 Added first translations<\/li>\n<li>0.0.1 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/GoogleAuthenticator\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"GrabGravatar",
+ "displayName":"Grab Gravatar",
+ "owner":"alnoorp",
+ "description":"Adds a profile photo from Gravatar based on the email address stored in the User Id field.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-03-18 04:20:04",
+ "donate":{"paypal":"alnoorp@gmail.com",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar",
+ "lastUpdated":"2015-07-24 14:26:11",
+ "latestVersion":"0.2.0",
+ "numDownloads":2018,"screenshots":[],"previews":[],"activity":{"numCommits":"15",
+ "numContributors":"1",
+ "lastCommitDate":"2015-03-22 04:22:05"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-03-18 04:20:04",
+ "requires":{"piwik":">=2.11.2"},"readme":"",
+ "numDownloads":6,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-07-24 14:26:04",
+ "requires":{"piwik":">=2.11.2"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.1.1"},{"name":"0.1.11",
+ "release":"2015-07-24 14:26:07",
+ "requires":{"piwik":">=2.11.2"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.1.11"},{"name":"0.2.0",
+ "release":"2015-07-24 14:26:11",
+ "requires":{"piwik":">=2.11.2"},"readme":"# Piwik GrabGravatar Plugin\n\n## Description\n\nA Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.\n\n## Installation\n\nInstall it via Piwik Marketplace\n\n## FAQ\n\n__What information do I need to make this plugin work?__\nMake sure you are capturing the email address for your visitors in the User Id field.\n\n__Why do some of my visitors just display the Gravatar logo instead of a photo?__\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com\n\n## Changelog\n\n* 0.1.11 Fixed screenshot filename\n* 0.1.1 Add screenshots\n* 0.1.0 First beta\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease direct any feedback to <alnoorp@gmail.com>\n",
+ "numDownloads":2012,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/alnoorp\/GrabGravatar\/commits\/v0.1.2",
+ "readmeHtml":{"description":"\n\n<p>A Piwik plugin that adds a profile photo from Gravatar based on the email address stored in the User Id field.<\/p>\n\n",
+ "faq":"<p><strong>What information do I need to make this plugin work?<\/strong>\nMake sure you are capturing the email address for your visitors in the User Id field.<\/p>\n\n<p><strong>Why do some of my visitors just display the Gravatar logo instead of a photo?<\/strong>\nEither there is no email address associated with the visitor or they do not have a Gravatar set up at gravatar.com<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.11 Fixed screenshot filename<\/li>\n<li>0.1.1 Add screenshots<\/li>\n<li>0.1.0 First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/GrabGravatar\/download\/0.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"InterSites",
+ "displayName":"Inter Sites",
+ "owner":"PiwikPRO",
+ "description":"Analyze how many visitors navigate between your websites.",
+ "homepage":"http:\/\/piwik.pro",
+ "createdDateTime":"2014-09-14 04:10:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites",
+ "lastUpdated":"2016-03-08 14:16:03",
+ "latestVersion":"0.4.0",
+ "numDownloads":7766,"screenshots":[],"previews":[],"activity":{"numCommits":"69",
+ "numContributors":"6",
+ "lastCommitDate":"2016-04-15 22:58:13"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-09-14 04:10:03",
+ "requires":{"piwik":">=2.7.0-b3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-09-14 04:40:03",
+ "requires":{"piwik":">=2.7.0-b3"},"readme":"",
+ "numDownloads":1138,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-12-08 02:56:04",
+ "requires":{"piwik":">=2.10.0-b6"},"readme":"",
+ "numDownloads":951,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.1.2"},{"name":"0.2.0",
+ "release":"2015-03-04 13:02:04",
+ "requires":{"piwik":">=2.10.0"},"readme":"",
+ "numDownloads":126,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2015-03-05 08:36:03",
+ "requires":{"piwik":">=2.10.0"},"readme":"",
+ "numDownloads":1472,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.2.1"},{"name":"0.2.3",
+ "release":"2015-07-29 11:10:03",
+ "requires":{"piwik":">=2.11.0"},"readme":"",
+ "numDownloads":1043,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.2.3"},{"name":"0.3.0",
+ "release":"2015-10-21 23:18:03",
+ "requires":{"piwik":">=2.11.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.3.0"},{"name":"0.3.1",
+ "release":"2015-10-21 23:24:03",
+ "requires":{"piwik":">=2.15.0-rc4"},"readme":"",
+ "numDownloads":372,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.3.1"},{"name":"0.3.2",
+ "release":"2015-11-11 20:10:03",
+ "requires":{"piwik":">=2.15.0"},"readme":"",
+ "numDownloads":1597,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.3.2"},{"name":"0.4.0",
+ "release":"2016-03-08 14:16:03",
+ "requires":{"piwik":">=2.16.0"},"readme":"InterSites\n==========\n\nMaster: [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites)\nDevelop: [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-InterSites)\n\n**Analyze how visitors navigate between your websites.**\n\n## Description\n\nMeasures number of visits and unique visitors that have navigated across two or three specific websites.\n\n_(Unique user is determined across websites using the fingerprint config\\_id stored in the DB.)_\n\n## Features\n\n### See how many visitors visited more than one of your websites.\n\nTo access this functionality, navigate to the All Websites dashboard. Here there will be a new link that says _Number of visitors who viewed several websites_. Click this link and a dialog will display that will allow you to get visitor metrics for many sites.\n\nComparison of visits is done in dates for the UTC time, not for the site specific time.\n\n\n## Changelog\n * 0.4.0\n - PPCDEV-2609 Compatibility with Piwik 2.16.0\n * 0.3.2\n - Changed minimum required Piwik to 2.15.0\n * 0.3.1\n - Bumping minimum required Piwik.\n * 0.3.0\n - Compatibility w\/ Piwik 2.15.\n * 0.2.2:\n - Fixed bug with day period\n - Added tests for day and month period\n - Fixed Site names display, as they were displayed as HTML entities\n * 0.2.1: Market release\n * 0.2.0: Introduced composer.json file\n * 0.1.2: Compatibility with Piwik 2.10.0 (Notification will explain that config setting `enable_fingerprinting_across_websites=1` is required)\n * 0.1.0: Initial release\n",
+ "numDownloads":1067,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-InterSites\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Measures number of visits and unique visitors that have navigated across two or three specific websites.<\/p>\n\n<p><em>(Unique user is determined across websites using the fingerprint config_id stored in the DB.)<\/em><\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>0.4.0\n\n<ul><li>PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<\/ul><\/li>\n<li>0.3.2\n\n<ul><li>Changed minimum required Piwik to 2.15.0<\/li>\n<\/ul><\/li>\n<li>0.3.1\n\n<ul><li>Bumping minimum required Piwik.<\/li>\n<\/ul><\/li>\n<li>0.3.0\n\n<ul><li>Compatibility w\/ Piwik 2.15.<\/li>\n<\/ul><\/li>\n<li>0.2.2:\n\n<ul><li>Fixed bug with day period<\/li>\n<li>Added tests for day and month period<\/li>\n<li>Fixed Site names display, as they were displayed as HTML entities<\/li>\n<\/ul><\/li>\n<li>0.2.1: Market release<\/li>\n<li>0.2.0: Introduced composer.json file<\/li>\n<li>0.1.2: Compatibility with Piwik 2.10.0 (Notification will explain that config setting <code>enable_fingerprinting_across_websites=1<\/code> is required)<\/li>\n<li>0.1.0: Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/InterSites\/download\/0.4.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"IntranetGeoIP",
+ "displayName":"Intranet Geo IP",
+ "owner":"ThaDafinser",
+ "description":"Piwik plugin to locate all locale data of a user based on the IP address\/subnetwork (country, region, city, latitude, longitude, provider, ...)",
+ "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP",
+ "createdDateTime":"2014-06-12 08:04:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP",
+ "lastUpdated":"2015-07-13 10:54:03",
+ "latestVersion":"2.2.0",
+ "numDownloads":9934,"screenshots":[],"previews":[],"activity":{"numCommits":"67",
+ "numContributors":"1",
+ "lastCommitDate":"2015-10-15 12:35:16"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+ "release":"2014-06-12 08:04:04",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":6,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0"},{"name":"1.0.1",
+ "release":"2014-06-12 08:16:10",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.1"},{"name":"1.0.2",
+ "release":"2014-06-12 08:20:10",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.2"},{"name":"1.0.4",
+ "release":"2014-06-12 08:44:03",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":3,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.4"},{"name":"1.0.5",
+ "release":"2014-06-12 09:06:03",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":2,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.5"},{"name":"1.0.6",
+ "release":"2014-06-12 11:08:04",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.6"},{"name":"1.0.7",
+ "release":"2014-06-12 11:12:04",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":24,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.7"},{"name":"1.0.8",
+ "release":"2014-06-13 09:22:03",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":208,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.8"},{"name":"1.0.9",
+ "release":"2014-07-02 12:44:04",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":201,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.0.9"},{"name":"1.1.0",
+ "release":"2014-07-15 15:34:05",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":63,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.1.0"},{"name":"1.2.0",
+ "release":"2014-07-17 11:34:04",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":166,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/1.2.0"},{"name":"2.0.0",
+ "release":"2014-07-28 07:04:08",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":420,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.0.0"},{"name":"2.0.1",
+ "release":"2014-08-29 08:12:04",
+ "requires":{"piwik":">=2.3.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":1875,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.0.1"},{"name":"2.1.0",
+ "release":"2015-01-28 09:40:04",
+ "requires":{"piwik":">=2.9.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":504,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.1.0"},{"name":"2.1.3",
+ "release":"2015-02-25 07:50:04",
+ "requires":{"piwik":">=2.9.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":1997,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.1.3"},{"name":"2.2.0",
+ "release":"2015-07-13 10:54:03",
+ "requires":{"piwik":">=2.9.0",
+ "php":">=5.4.0"},"readme":"# Piwik IntranetGeoIp Plugin\n\n## Description\n\nPiwik plugin to locate all locale data of a user based on the IP address\/subnetwork (country, region, city, latitude, longitude, provider, ...)\n\n***Please use it only for INTRANET tracking*** everything else just dont make sense :-)\n\n## FAQ\n\n__What does this plugin do?__\n\nIt adds visitor information based on the matched IP address from your configuration. Not more and not less.\nThe database schema and UI stays untouched, so all Piwik statistics can be used like you would use a internet GeoIP database.\n\n\n__How to configure\/install this plugin \/ the networks?__\n\nAfter installation and activation of the plugin, open the file `piwik\/config\/IntranetGeoIP.data.php`\n\nYou can their add your location information and their subnetworks.\n\nSee the file `piwik\/config\/IntranetGeoIP.data.php` or see the readme on github https:\/\/github.com\/ThaDafinser\/IntranetGeoIp\n\n\n__What statistics are available?__\n\nIf you create a full configuration data file, you'll see\n* Visitor -> Realtime visitor map\n* Visitor -> Location and provider\n* and many more...(in generall all statistics are available like using a internet GeoIP database)\n\n\n__Why there stands provider \"unknown\" in my visitor log?__\n\nIf your installation is stock, all visitors will get this \"flag\" to show you, what IPs are not matched.\nYou can adjust or remove this, by changing the \"noMatch\" block in your `IntranetGeoIP.data.php` file.\nIf you remove the complete block, none matched visitors will be skipped by this plugin.\nBut you can also fill all possible visitorInfos like you are used for matched IP addresses.\n\n\n__Can i use this plugin with a internet GeoIP database side by side?__\n\nYes you can.\nJust remove or comment out the `noMatch` block in your configuration file.\n\n__Note about the configuration?__\n\nInside the array key `visitorInfo` you can freely add\/remove all available columns from the `log_visit` table you want.\nThe keys below are just a suggestion, since they are the only one which make sense currently IMO.\nAll available fields, see here: http:\/\/developer.piwik.org\/guides\/persistence-and-the-mysql-backend#visits\n\nInside they key `networks` add all subnetworks which apply to this location.\n\n```php\nreturn [\n \/*\n * If the IP was not matched, apply these data to visitorInfo\n * You can also apply here all possible visitorInformation data if you want\n *\/\n 'noMatch' => [\n 'visitorInfo' => [\n 'location_provider' => 'unknown'\n ]\n ],\n \n [\n 'visitorInfo' => [\n \/\/ISO-3166 alpha-2 code http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1\n 'location_country' => 'at',\n \n \/\/the region code (i take them from piwik\/libs\/MaxMindGeoIp\/geoipregionvars.php\n 'location_region' => '08',\n \n \/\/should be freetext\n 'location_city' => 'Muntlix',\n \n \/\/get this from a picker, e.g. http:\/\/www.tytai.com\/gmap\/\n 'location_latitude' => '47.282024',\n 'location_longitude' => '9.662304',\n \n \/\/enter your company name or do it based on your domain hierarchy\n 'location_provider' => 'myCompany'\n ],\n 'networks' => [\n \/\/enter here all subnetworks for this location\n \/\/use a subnetwork calculator, e.g. http:\/\/jodies.de\/ipcalc\n '10.59.0.0\/19',\n '170.56.251.200\/29'\n ]\n ],\n \n \/\/add more blocks live above\n];\n```\n",
+ "numDownloads":4463,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-IntranetGeoIP\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Piwik plugin to locate all locale data of a user based on the IP address\/subnetwork (country, region, city, latitude, longitude, provider, ...)<\/p>\n\n<p><strong><em>Please use it only for INTRANET tracking<\/em><\/strong> everything else just dont make sense :-)<\/p>\n\n",
+ "faq":"<p><strong>What does this plugin do?<\/strong><\/p>\n\n<p>It adds visitor information based on the matched IP address from your configuration. Not more and not less.\nThe database schema and UI stays untouched, so all Piwik statistics can be used like you would use a internet GeoIP database.<\/p>\n\n<p><strong>How to configure\/install this plugin \/ the networks?<\/strong><\/p>\n\n<p>After installation and activation of the plugin, open the file <code>piwik\/config\/IntranetGeoIP.data.php<\/code><\/p>\n\n<p>You can their add your location information and their subnetworks.<\/p>\n\n<p>See the file <code>piwik\/config\/IntranetGeoIP.data.php<\/code> or see the readme on github https:\/\/github.com\/ThaDafinser\/IntranetGeoIp<\/p>\n\n<p><strong>What statistics are available?<\/strong><\/p>\n\n<p>If you create a full configuration data file, you'll see\n* Visitor -&gt; Realtime visitor map\n* Visitor -&gt; Location and provider\n* and many more...(in generall all statistics are available like using a internet GeoIP database)<\/p>\n\n<p><strong>Why there stands provider \"unknown\" in my visitor log?<\/strong><\/p>\n\n<p>If your installation is stock, all visitors will get this \"flag\" to show you, what IPs are not matched.\nYou can adjust or remove this, by changing the \"noMatch\" block in your <code>IntranetGeoIP.data.php<\/code> file.\nIf you remove the complete block, none matched visitors will be skipped by this plugin.\nBut you can also fill all possible visitorInfos like you are used for matched IP addresses.<\/p>\n\n<p><strong>Can i use this plugin with a internet GeoIP database side by side?<\/strong><\/p>\n\n<p>Yes you can.\nJust remove or comment out the <code>noMatch<\/code> block in your configuration file.<\/p>\n\n<p><strong>Note about the configuration?<\/strong><\/p>\n\n<p>Inside the array key <code>visitorInfo<\/code> you can freely add\/remove all available columns from the <code>log_visit<\/code> table you want.\nThe keys below are just a suggestion, since they are the only one which make sense currently IMO.\nAll available fields, see here: http:\/\/developer.piwik.org\/guides\/persistence-and-the-mysql-backend#visits<\/p>\n\n<p>Inside they key <code>networks<\/code> add all subnetworks which apply to this location.<\/p>\n\n<pre><code>return [\n \/*\n * If the IP was not matched, apply these data to visitorInfo\n * You can also apply here all possible visitorInformation data if you want\n *\/\n 'noMatch' =&gt; [\n 'visitorInfo' =&gt; [\n 'location_provider' =&gt; 'unknown'\n ]\n ],\n\n [\n 'visitorInfo' =&gt; [\n \/\/ISO-3166 alpha-2 code http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1\n 'location_country' =&gt; 'at',\n\n \/\/the region code (i take them from piwik\/libs\/MaxMindGeoIp\/geoipregionvars.php\n 'location_region' =&gt; '08',\n\n \/\/should be freetext\n 'location_city' =&gt; 'Muntlix',\n\n \/\/get this from a picker, e.g. http:\/\/www.tytai.com\/gmap\/\n 'location_latitude' =&gt; '47.282024',\n 'location_longitude' =&gt; '9.662304',\n\n \/\/enter your company name or do it based on your domain hierarchy\n 'location_provider' =&gt; 'myCompany'\n ],\n 'networks' =&gt; [\n \/\/enter here all subnetworks for this location\n \/\/use a subnetwork calculator, e.g. http:\/\/jodies.de\/ipcalc\n '10.59.0.0\/19',\n '170.56.251.200\/29'\n ]\n ],\n\n \/\/add more blocks live above\n];\n<\/code><\/pre>",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/IntranetGeoIP\/download\/2.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Ip2Hostname",
+ "displayName":"IP 2 Hostname",
+ "owner":"ThaDafinser",
+ "description":"Piwik plugin to get the hostname from the visitor IP",
+ "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname",
+ "createdDateTime":"2015-01-28 11:44:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname",
+ "lastUpdated":"2015-10-15 08:00:03",
+ "latestVersion":"v2.0.0",
+ "numDownloads":4169,"screenshots":[],"previews":[],"activity":{"numCommits":"16",
+ "numContributors":"2",
+ "lastCommitDate":"2015-10-15 07:59:15"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+ "release":"2015-01-28 11:44:03",
+ "requires":{"piwik":">=2.10.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":2,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/1.0.0"},{"name":"1.0.1",
+ "release":"2015-01-28 12:18:02",
+ "requires":{"piwik":">=2.10.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":1827,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/2.0.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/1.0.1"},{"name":"1.0.3",
+ "release":"2015-08-24 13:28:03",
+ "requires":{"piwik":">=2.10.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":515,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/1.0.3"},{"name":"v2.0.0",
+ "release":"2015-10-15 08:00:03",
+ "requires":{"piwik":">=2.15.0",
+ "php":">=5.5.0"},"readme":"# Piwik Ip2Hostname Plugin\n\n## Description\n\nThis plugin (try) to get the hostname of the visitor and write it into the `log_visitor` table.\n\nThere are currently ***no reports or any views available***, to see a result. ***You need to directly query the table!***\nI currently dont have the time and need of such a view, and therefor maybe you'll never see one...if nobody else create oen :-)\n\nNOTE:\n***I use it currently only in an intranet enviroment*** to detect computers which have old enviroment, because the IP might change i log the hostname.\n\nI never tried it and probably wont use it for internet...\n",
+ "numDownloads":1825,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-Ip2Hostname\/commits\/0.1.3",
+ "readmeHtml":{"description":"\n\n<p>This plugin (try) to get the hostname of the visitor and write it into the <code>log_visitor<\/code> table.<\/p>\n\n<p>There are currently <strong><em>no reports or any views available<\/em><\/strong>, to see a result. <strong><em>You need to directly query the table!<\/em><\/strong>\nI currently dont have the time and need of such a view, and therefor maybe you'll never see one...if nobody else create oen :-)<\/p>\n\n<p>NOTE:\n<strong><em>I use it currently only in an intranet enviroment<\/em><\/strong> to detect computers which have old enviroment, because the IP might change i log the hostname.<\/p>\n\n<p>I never tried it and probably wont use it for internet...<\/p>",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/Ip2Hostname\/download\/v2.0.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"IP2Location",
+ "displayName":"IP 2 Location",
+ "owner":"ip2location",
+ "description":"Use IP2Location geolocation database to lookup for accurate visitor location in Piwik.",
+ "homepage":"http:\/\/www.ip2location.com\/developers\/piwik",
+ "createdDateTime":"2014-04-23 09:24:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik",
+ "lastUpdated":"2016-04-19 03:08:03",
+ "latestVersion":"2.2.0",
+ "numDownloads":16518,"screenshots":[],"previews":[],"activity":{"numCommits":"33",
+ "numContributors":"3",
+ "lastCommitDate":"2016-04-19 03:07:28"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"2.0.0",
+ "release":"2014-04-23 09:24:05",
+ "requires":{"piwik":">=2.0.1",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":1589,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.0.0"},{"name":"2.0.2",
+ "release":"2014-07-15 07:50:03",
+ "requires":{"piwik":">=2.0.1",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":3772,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.0.2"},{"name":"2.1.1",
+ "release":"2015-03-10 01:36:03",
+ "requires":{"piwik":">=2.0.1",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":402,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.1"},{"name":"2.1.3",
+ "release":"2015-03-24 01:54:03",
+ "requires":{"piwik":">=2.12.0",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":199,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.3"},{"name":"2.1.4",
+ "release":"2015-03-30 00:48:04",
+ "requires":{"piwik":">=2.12.0",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":221,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.4"},{"name":"2.1.5",
+ "release":"2015-04-07 08:08:03",
+ "requires":{"piwik":">=2.12.0",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":5127,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.5"},{"name":"2.1.8",
+ "release":"2015-12-16 01:22:03",
+ "requires":{"piwik":">=2.12.0",
+ "php":">=5.3.20"},"readme":"",
+ "numDownloads":3639,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/1.0.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.1.8"},{"name":"2.2.0",
+ "release":"2016-04-19 03:08:03",
+ "requires":{"piwik":">=2.12.0",
+ "php":">=5.3.20"},"readme":"# Piwik IP2Location Plugin \n\n## Description\n\nThis IP2Location plugin enables more accurate location lookup in your Piwik visitor log.\n\nYou need a IP2Location BIN database to make this plugin works. Database is available for free at\n\nhttp:\/\/lite.ip2location.com or http:\/\/www.ip2location.com for a commercial database.\n\n## Installation \/ Update\n\nSee http:\/\/piwik.org\/faq\/plugins\/#faq_21\n\n## Changelog\n\n__2.2.0__\n* added custom report to view additional information such as Time Zone, ZIP code, usage type.\n\n__2.1.0__\n* updated to IP2Location 7.0.0 library\n\n__2.0.0__\n* first release for Piwik 2.0\n\n## License\n\nGPL v3 \/ fair use\n\n## Support\n\nPlease contact us at support@ip2location.com\n",
+ "numDownloads":1569,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ip2location\/ip2location-piwik\/commits\/0.46",
+ "readmeHtml":{"description":"\n\n<p>This IP2Location plugin enables more accurate location lookup in your Piwik visitor log.<\/p>\n\n<p>You need a IP2Location BIN database to make this plugin works. Database is available for free at<\/p>\n\n<p>http:\/\/lite.ip2location.com or http:\/\/www.ip2location.com for a commercial database.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p><strong>2.2.0<\/strong>\n* added custom report to view additional information such as Time Zone, ZIP code, usage type.<\/p>\n\n<p><strong>2.1.0<\/strong>\n* updated to IP2Location 7.0.0 library<\/p>\n\n<p><strong>2.0.0<\/strong>\n* first release for Piwik 2.0<\/p>"},"download":"\/api\/2.0\/plugins\/IP2Location\/download\/2.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"IPv6Usage",
+ "displayName":"IPv6 Usage",
+ "owner":"halfdan",
+ "description":"Piwik Plugin to track whether visitors are using IPv4 or IPv6",
+ "homepage":"http:\/\/github.com\/halfdan\/IPv6Usage",
+ "createdDateTime":"2014-12-23 00:40:33",
+ "donate":{"flattr":"https:\/\/flattr.com\/profile\/test1",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":["ipv4",
+ "ipv6"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+ "email":"test8@example.com",
+ "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/IPv6Usage",
+ "lastUpdated":"2014-12-23 01:13:18",
+ "latestVersion":"0.6.0",
+ "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"35",
+ "numContributors":"2",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.5.0",
+ "release":"2014-12-23 00:40:33",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/IPv6Usage\/commits\/0.5.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/IPv6Usage\/download\/0.5.0"},{"name":"0.6.0",
+ "release":"2014-12-23 01:13:18",
+ "requires":{},"readme":"# IPv6Usage\n\n## Description\n\nThis is a plugin for Piwik that generates reports about the IPv6 reach of your websites. It is written as a tracker plugin and directly hooks into the Piwik tracking call.\n\n## Documentation\n\nI wrote an article about the development that lead to this plugin and explained how the plugin works internally. You can find the article at [Geekmonkey](http:\/\/geekmonkey.org\/articles\/34-how-to-write-a-piwik-plugin)\n\nThere is also a [short article](http:\/\/geekmonkey.org\/articles\/33-tracking-the-ipv6-reach-of-your-website-with-piwik\/) that explains how to setup the plugin.\n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests or create issues.\n\n## License\n\nGPLv3 or later\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/IPv6Usage\/commits\/0.6.0",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for Piwik that generates reports about the IPv6 reach of your websites. It is written as a tracker plugin and directly hooks into the Piwik tracking call.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/IPv6Usage\/download\/0.6.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"kDebug",
+ "displayName":"kDebug",
+ "owner":"XaviTorello",
+ "description":"Activate or deactivate DEBUG tracking mode with a simple click.",
+ "homepage":"http:\/\/xaviertorello.cat",
+ "createdDateTime":"2014-09-09 13:42:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik",
+ "lastUpdated":"2014-09-19 13:08:03",
+ "latestVersion":"0.1.2",
+ "numDownloads":3626,"screenshots":[],"previews":[],"activity":{"numCommits":"8",
+ "numContributors":"2",
+ "lastCommitDate":"2016-01-11 08:58:56"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-09-09 13:42:03",
+ "requires":{"piwik":">=2.4.0-b1",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/kDebug\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-09-09 14:06:03",
+ "requires":{"piwik":">=2.4.0-b1",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":133,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/kDebug\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-09-19 13:08:03",
+ "requires":{"piwik":">=2.4.0-b1",
+ "php":">=5.3.0"},"readme":"# Piwik kDebug Plugin\n\n## Description\n\nActivate or deactivate DEBUG tracking mode with a simple click.\n\n![kDebug Screenshot](http:\/\/xaviertorello.cat\/img\/projects\/kDebugEN.png \"kDebug toogle\")\n\nkDebug is a simple plugin for Piwik to enable \/ disable DEBUG mode for tracking requests with a simple click.\n\nBy default, it's needed to modify manually the Piwiks config.ini file.\n\nWith this plugin just navigate to \"Settings > Debug\", and click on the toggle button to change the status of DEBUG mode.\n\n[More information](http:\/\/xaviertorello.cat\/#portfolio \"Xavier Torell\u00f3 Porfolio\")\n\n\n\n## Installation\n\nInstall it via Piwik Marketplace\n\n\n## FAQ\n\n__What exactly is included in this plugin?__\n\n* A simple and quick method to enable\/disable DEBUG mode for tracking requests\n\n\n## Changelog\n\n0.1.0 First version. Toggle button to activate\/deactivate DEBUG mode\n\n\n## License\n\nGPL v3 or later\n\n\n## Support\n\nPlease direct any feedback to [Xavier Torell\u00f3](http:\/\/xaviertorello.cat \"Xavier Torell\u00f3\") [http:\/\/xaviertorello.cat\/#contact]\n",
+ "numDownloads":3492,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/XaviTorello\/kDebug-piwik\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Activate or deactivate DEBUG tracking mode with a simple click.<\/p>\n\n<p><img src=\"http:\/\/xaviertorello.cat\/img\/projects\/kDebugEN.png\" alt=\"kDebugEN.png\" \/><\/p>\n\n<p>kDebug is a simple plugin for Piwik to enable \/ disable DEBUG mode for tracking requests with a simple click.<\/p>\n\n<p>By default, it's needed to modify manually the Piwiks config.ini file.<\/p>\n\n<p>With this plugin just navigate to \"Settings &gt; Debug\", and click on the toggle button to change the status of DEBUG mode.<\/p>\n\n<p><a href=\"http:\/\/xaviertorello.cat\/#portfolio\">More information<\/a><\/p>\n\n",
+ "faq":"<p><strong>What exactly is included in this plugin?<\/strong><\/p>\n\n<ul><li>A simple and quick method to enable\/disable DEBUG mode for tracking requests<\/li>\n<\/ul>",
+ "documentation":"",
+ "changelog":"<p>0.1.0 First version. Toggle button to activate\/deactivate DEBUG mode<\/p>"},"download":"\/api\/2.0\/plugins\/kDebug\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LdapConnection",
+ "displayName":"Ldap Connection",
+ "owner":"ThaDafinser",
+ "description":"Plugin to make a LDAP connection, which can be used by various LDAP plugins",
+ "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection",
+ "createdDateTime":"2014-08-06 07:50:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection",
+ "lastUpdated":"2015-01-29 07:20:09",
+ "latestVersion":"0.3.1",
+ "numDownloads":4104,"screenshots":[],"previews":[],"activity":{"numCommits":"11",
+ "numContributors":"1",
+ "lastCommitDate":"2015-03-12 11:53:13"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-08-06 07:50:08",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":205,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.1.0"},{"name":"0.2.0",
+ "release":"2014-08-25 09:08:09",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":22,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.2.0"},{"name":"0.3.0",
+ "release":"2014-08-26 06:00:09",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":1119,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.3.0"},{"name":"0.3.1",
+ "release":"2015-01-29 07:20:09",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"# Piwik LdapConnection Plugin\n\n## Description\n\nConfigurable piwik plugin to create an LDAP connection, which can be reused by other plugins.\nIs uses the ZF2 Ldap component: http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap\n\nCurrently used by https:\/\/github.com\/ThaDafinser\/LdapVisitorInfo\n\n## FAQ\n\n__Why is PIWIK 2.5 required?__\n\nBecause the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890\n\n\n__What does this plugin do?__\n\nIt creates based on your configuration a connection to LDAP. Not more and not less :-)\n\n\n__How can i use this LDAP connection in another plugin?__\n\nThis is an example to retrieve the connection.\nFor documentation please see http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap\n\n```php\nnamespace Piwik\\Plugins\\YourPlugin;\n\nuse Piwik\\Plugin;\nuse Piwik\\Plugins\\LdapConnection\\API as APILdapConnection;\nuse Zend\\Ldap\\Ldap;\n\nclass YourPlugin extends Plugin\n{\n private function doSomething()\n {\n \t\/* @var $ldap \\Zend\\Ldap\\Ldap *\/\n $ldap = APILdapConnection::getInstance()->getConnection();\n $ldap->connect();\n \n $filter = sprintf('(&(objectclass=user)(samAccountName=%s))', $visitorUsername);\n $collection = $ldap->search($filter, null, Ldap::SEARCH_SCOPE_SUB, ['displayname']);\n \n if ($collection->count() >= 1) {\n \t$result = $collection->getFirst();\n \t\/\/do something with the result...\n }\n }\n}\n```\n",
+ "numDownloads":2758,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapConnection\/commits\/v0.5.1",
+ "readmeHtml":{"description":"\n\n<p>Configurable piwik plugin to create an LDAP connection, which can be reused by other plugins.\nIs uses the ZF2 Ldap component: http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap<\/p>\n\n<p>Currently used by https:\/\/github.com\/ThaDafinser\/LdapVisitorInfo<\/p>\n\n",
+ "faq":"<p><strong>Why is PIWIK 2.5 required?<\/strong><\/p>\n\n<p>Because the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890<\/p>\n\n<p><strong>What does this plugin do?<\/strong><\/p>\n\n<p>It creates based on your configuration a connection to LDAP. Not more and not less :-)<\/p>\n\n<p><strong>How can i use this LDAP connection in another plugin?<\/strong><\/p>\n\n<p>This is an example to retrieve the connection.\nFor documentation please see http:\/\/framework.zend.com\/manual\/2.3\/en\/index.html#zend-ldap<\/p>\n\n<pre><code>namespace Piwik\\Plugins\\YourPlugin;\n\nuse Piwik\\Plugin;\nuse Piwik\\Plugins\\LdapConnection\\API as APILdapConnection;\nuse Zend\\Ldap\\Ldap;\n\nclass YourPlugin extends Plugin\n{\n private function doSomething()\n {\n \/* @var $ldap \\Zend\\Ldap\\Ldap *\/\n $ldap = APILdapConnection::getInstance()-&gt;getConnection();\n $ldap-&gt;connect();\n\n $filter = sprintf('(&amp;(objectclass=user)(samAccountName=%s))', $visitorUsername);\n $collection = $ldap-&gt;search($filter, null, Ldap::SEARCH_SCOPE_SUB, ['displayname']);\n\n if ($collection-&gt;count() &gt;= 1) {\n $result = $collection-&gt;getFirst();\n \/\/do something with the result...\n }\n }\n}\n<\/code><\/pre>",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/LdapConnection\/download\/0.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LdapVisitorInfo",
+ "displayName":"Ldap Visitor Info",
+ "owner":"ThaDafinser",
+ "description":"Piwik plugin to get visitor details (thumbnail, description) from LDAP",
+ "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo",
+ "createdDateTime":"2014-08-06 07:50:42",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo",
+ "lastUpdated":"2015-02-23 09:30:03",
+ "latestVersion":"1.0.0",
+ "numDownloads":4381,"screenshots":[],"previews":[],"activity":{"numCommits":"16",
+ "numContributors":"1",
+ "lastCommitDate":"2015-03-12 11:51:34"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-08-06 07:50:42",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":175,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.1.0"},{"name":"0.2.0",
+ "release":"2014-08-25 09:06:04",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":80,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.2.0"},{"name":"0.3.0",
+ "release":"2014-09-01 06:28:05",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":1089,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.3.0"},{"name":"0.3.1",
+ "release":"2015-01-29 07:20:14",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":239,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.5.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/0.3.1"},{"name":"1.0.0",
+ "release":"2015-02-23 09:30:03",
+ "requires":{"piwik":">=2.5.0",
+ "php":">=5.4.0"},"readme":"# Piwik LdapVisitorInfo Plugin\n\n## Description\n\nConfigurable piwik plugin to view a visitor thumbnail and description live from LDAP.\n\n***This plugin requires https:\/\/github.com\/ThaDafinser\/LdapConnection to work!***\n\n## FAQ\n\n__Why is PIWIK 2.5 required?__\n\nBecause the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890\n\n\n__What does this plugin do?__\n\nIt displays live a thumbnail and a description in the visitor detail page from LDAP\n\n\n__How to tell Piwik which user is currently using your website?__\n\nYou need so track a custom user (username, mail, ...) visitor variable, so this plugin know which user shall be fetched from LDAP.\nPlease see the official documentation: http:\/\/piwik.org\/docs\/custom-variables\/ or http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables\n\nExample:\n`_paq.push([\"setCustomVariable\", 1, \"username\", \"<?php echo $usenamer; ?>\", \"visit\"]);`\n\n__NEW: Use the userId from Piwik itself__\n\nNow you can use the piwik UserId: http:\/\/piwik.org\/docs\/user-id\/\nJust change the plugin settings to use the piwik UserId instead of a custom variable!\n",
+ "numDownloads":2798,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-LdapVisitorInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Configurable piwik plugin to view a visitor thumbnail and description live from LDAP.<\/p>\n\n<p><strong><em>This plugin requires https:\/\/github.com\/ThaDafinser\/LdapConnection to work!<\/em><\/strong><\/p>\n\n",
+ "faq":"<p><strong>Why is PIWIK 2.5 required?<\/strong><\/p>\n\n<p>Because the configuration (to be explicit accountFilterFormat) is destroyed in the previous version\nSee the ticket here: https:\/\/github.com\/piwik\/piwik\/issues\/5890<\/p>\n\n<p><strong>What does this plugin do?<\/strong><\/p>\n\n<p>It displays live a thumbnail and a description in the visitor detail page from LDAP<\/p>\n\n<p><strong>How to tell Piwik which user is currently using your website?<\/strong><\/p>\n\n<p>You need so track a custom user (username, mail, ...) visitor variable, so this plugin know which user shall be fetched from LDAP.\nPlease see the official documentation: http:\/\/piwik.org\/docs\/custom-variables\/ or http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables<\/p>\n\n<p>Example:\n<code>_paq.push([\"setCustomVariable\", 1, \"username\", \"&lt;?php echo $usenamer; ?&gt;\", \"visit\"]);<\/code><\/p>\n\n<p><strong>NEW: Use the userId from Piwik itself<\/strong><\/p>\n\n<p>Now you can use the piwik UserId: http:\/\/piwik.org\/docs\/user-id\/\nJust change the plugin settings to use the piwik UserId instead of a custom variable!<\/p>",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/LdapVisitorInfo\/download\/1.0.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LiveTab",
+ "displayName":"Live Tab",
+ "owner":"tsteur",
+ "description":"Keep an eye on the number of live visitors in the browser tab. It displays the number of visitors in the last 30 minutes in the browser tab.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 00:38:34",
+ "donate":{"paypal":"test1@example.com",
+ "flattr":"https:\/\/flattr.com\/profile\/steurth",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":["live",
+ "tab"],"basePrice":0,"authors":[{"name":"Thomas Steur",
+ "email":"test10@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin",
+ "lastUpdated":"2014-12-23 01:01:50",
+ "latestVersion":"1.0.8",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/LiveTab\/images\/Browser_Tab.png"],"previews":[],"activity":{"numCommits":"54",
+ "numContributors":"1",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+ "release":"2014-12-23 00:38:34",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/0.1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0"},{"name":"1.0.1",
+ "release":"2014-12-23 00:38:48",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/v1.0.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.1"},{"name":"1.0.2",
+ "release":"2014-12-23 00:39:02",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/v1.0.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.2"},{"name":"1.0.3",
+ "release":"2014-12-23 00:40:08",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/v1.0.3b",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.3"},{"name":"1.0.8",
+ "release":"2014-12-23 01:01:50",
+ "requires":{"piwik":">=2.0.0"},"readme":"# Piwik LiveTab Plugin \n\n[![Build Status](https:\/\/travis-ci.org\/tsteur\/piwik-livetab-plugin.png?branch=master)](https:\/\/travis-ci.org\/tsteur\/piwik-livetab-plugin)\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform [Piwik](http:\/\/piwik.org). It allows you to keep an eye on the number of live visitors in the browser tab. It displays the number of visits, actions, unique visitors or converted goals in the last X minutes in the browser tab. The number will be updated every minute.\n\nFor better and faster readability the value will be shortened when greater than 1000. For instance to 3.12K or 3.43M.\n\n![Screenshot](https:\/\/raw.github.com\/tsteur\/piwik-livetab-plugin\/master\/screenshots\/Browser_Tab.png)\n\n## Installation\n\nSee http:\/\/piwik.org\/faq\/plugins\/#faq_21\n\n## FAQ\n\n__Is it possible to configure the displayed metric?__\n\nYes, you can choose between Visits, Actions, Converted Visits and Visitors.\n\n__Is it possible to configure the displayed metric per user?__\n\nYes, this is also possible. Each user can configure the plugin differently.\n\n\n## Changelog\n\n__1.0.2__\n* Compatible with Piwik 2.0\n\n__1.0.0__\n* Initial release\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease direct any feedback to: \n\n* [https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/issues](https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/issues)\n* [https:\/\/www.twitter.com\/tsteur](https:\/\/www.twitter.com\/tsteur)\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-livetab-plugin\/commits\/1.0.8",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform <a href=\"http:\/\/piwik.org\">Piwik<\/a>. It allows you to keep an eye on the number of live visitors in the browser tab. It displays the number of visits, actions, unique visitors or converted goals in the last X minutes in the browser tab. The number will be updated every minute.<\/p>\n\n<p>For better and faster readability the value will be shortened when greater than 1000. For instance to 3.12K or 3.43M.<\/p>\n\n<p><img src=\"https:\/\/raw.github.com\/tsteur\/piwik-livetab-plugin\/master\/screenshots\/Browser_Tab.png\" alt=\"Browser_Tab.png\" \/><\/p>\n\n",
+ "faq":"<p><strong>Is it possible to configure the displayed metric?<\/strong><\/p>\n\n<p>Yes, you can choose between Visits, Actions, Converted Visits and Visitors.<\/p>\n\n<p><strong>Is it possible to configure the displayed metric per user?<\/strong><\/p>\n\n<p>Yes, this is also possible. Each user can configure the plugin differently.<\/p>",
+ "documentation":"",
+ "changelog":"<p><strong>1.0.2<\/strong>\n* Compatible with Piwik 2.0<\/p>\n\n<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/LiveTab\/download\/1.0.8"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LoginHttpAuth",
+ "displayName":"Login Http Auth",
+ "owner":"piwik",
+ "description":"This plugin lets you connect to Piwik using HTTP Auth protocol instead of the standard Login mechanism",
+ "homepage":"http:\/\/plugins.piwik.org\/LoginHttpAuth",
+ "createdDateTime":"2014-12-23 01:16:17",
+ "donate":{},"support":[],"isTheme":false,"keywords":["authentication",
+ "httpAuth",
+ "login"],"basePrice":0,"authors":[{"name":"Piwik",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth",
+ "lastUpdated":"2014-12-23 01:16:33",
+ "latestVersion":"1.0.1",
+ "numDownloads":0,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.loginhttpauth.org"}],"activity":{"numCommits":"34",
+ "numContributors":"4",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+ "release":"2014-12-23 01:16:17",
+ "requires":{"piwik":">=2.0.4-b12"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/commits\/1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LoginHttpAuth\/download\/1.0"},{"name":"1.0.1",
+ "release":"2014-12-23 01:16:33",
+ "requires":{"piwik":">=2.0.4-b12"},"readme":"# Piwik LoginHttpAuth Plugin\n\n## Description\n\nThis plugin extends the standard Piwik authentication to use Basic HTTP Authentication.\nIt lets you login to Piwik using the HTTP Auth mechanism.\n\nHow do I setup HTTP Auth using Piwik?\n\n* Login your Piwik as Super User. Click Settings, then click Marketplace.\n* Install the LoginHttpAuth plugin, then click Activate.\n* Click Settings, then click Users.\n * Check that there is a user in Piwik for each person that should have access to Piwik.\n* Enable HTTP Auth on the Piwik on your web server.\n\n For example, if you are using Apache webserver:\n\n * generate a .htpasswd file with your encrypted logins and passwords\n * [copy this example .htaccess file](https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/blob\/master\/TemplateHtaccess\/.htaccess) in the root directory of Piwik, and set the path to your .htpasswd file\n* When you go to Piwik, you will see the Authentication window.\n Congratulations! You are now using HTTP Auth to protect Piwik.\n\n## Changelog\n\n * 1.0 - First public release [compatible with Piwik 2](http:\/\/piwik.org\/blog\/2013\/12\/piwik-2-0-release-announced-biggest-best-release-yet\/)\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Report bugs for LoginHttpAuth in [our Github issues tracker](https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/issues)\n* Please direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n\n\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/commits\/1.0.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin extends the standard Piwik authentication to use Basic HTTP Authentication.\nIt lets you login to Piwik using the HTTP Auth mechanism.<\/p>\n\n<p>How do I setup HTTP Auth using Piwik?<\/p>\n\n<ul><li>Login your Piwik as Super User. Click Settings, then click Marketplace.<\/li>\n<li>Install the LoginHttpAuth plugin, then click Activate.<\/li>\n<li>Click Settings, then click Users.\n\n<ul><li>Check that there is a user in Piwik for each person that should have access to Piwik.<\/li>\n<\/ul><\/li>\n<li><p>Enable HTTP Auth on the Piwik on your web server.<\/p>\n\n<p>For example, if you are using Apache webserver:<\/p>\n\n<ul><li>generate a .htpasswd file with your encrypted logins and passwords<\/li>\n<li><a href=\"https:\/\/github.com\/piwik\/plugin-LoginHttpAuth\/blob\/master\/TemplateHtaccess\/.htaccess\">copy this example .htaccess file<\/a> in the root directory of Piwik, and set the path to your .htpasswd file<\/li>\n<\/ul><\/li>\n<li>When you go to Piwik, you will see the Authentication window.\nCongratulations! You are now using HTTP Auth to protect Piwik.<\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>1.0 - First public release <a href=\"http:\/\/piwik.org\/blog\/2013\/12\/piwik-2-0-release-announced-biggest-best-release-yet\/\">compatible with Piwik 2<\/a><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/LoginHttpAuth\/download\/1.0.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LoginRevokable",
+ "displayName":"Login Revokable",
+ "owner":"torosian",
+ "description":"An Authentication plugin that allows a user to log into multiple locations, however remotely logs out of all locations when any of the locations log o",
+ "homepage":"https:\/\/github.com\/torosian\/LoginRevokable",
+ "createdDateTime":"2015-03-06 16:52:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/torosian\/LoginRevokable",
+ "lastUpdated":"2015-03-06 16:52:03",
+ "latestVersion":"0.1.4",
+ "numDownloads":2310,"screenshots":[],"previews":[],"activity":{"numCommits":"10",
+ "numContributors":"1",
+ "lastCommitDate":"2015-03-09 18:52:53"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.4",
+ "release":"2015-03-06 16:52:03",
+ "requires":{"piwik":">=2.11.2-b1"},"readme":"# Piwik LoginRevokable Plugin\n\n## Description\n\nA plugin for Piwik that allows multiple logins by the same user, but remotely terminates sessions when any of them log out. This replaces the existing core Login plugin.\n\n## FAQ\n\n## Changelog\n\nInitial Commit, adding first version\n\n## Support\n\nPlease direct any feedback to https:\/\/github.com\/torosian\/LoginRevokable\/issues",
+ "numDownloads":2310,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/torosian\/LoginRevokable\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>A plugin for Piwik that allows multiple logins by the same user, but remotely terminates sessions when any of them log out. This replaces the existing core Login plugin.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>Initial Commit, adding first version<\/p>"},"download":"\/api\/2.0\/plugins\/LoginRevokable\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"LogViewer",
+ "displayName":"Log Viewer",
+ "owner":"piwik",
+ "description":"View log messages logged by Piwik",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-09-22 09:26:18",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer",
+ "lastUpdated":"2015-10-21 23:28:03",
+ "latestVersion":"0.2.0",
+ "numDownloads":2414,"screenshots":[],"previews":[],"activity":{"numCommits":"34",
+ "numContributors":"4",
+ "lastCommitDate":"2016-06-02 07:53:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-09-22 09:26:18",
+ "requires":{"piwik":">=2.15.0-b4"},"readme":"",
+ "numDownloads":115,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/commits\/0.1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LogViewer\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-10-02 11:18:04",
+ "requires":{"piwik":">=2.15.0-b4"},"readme":"",
+ "numDownloads":159,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/commits\/0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/LogViewer\/download\/0.1.1"},{"name":"0.2.0",
+ "release":"2015-10-21 23:28:03",
+ "requires":{"piwik":">=2.15.0-rc4"},"readme":"# Piwik LogViewer Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-LogViewer.svg)](https:\/\/travis-ci.org\/piwik\/plugin-LogViewer)\n\n## Description\n\nView log messages that were logged by Piwik via the Piwik UI or HTTP Reporting API.\n\n## FAQ\n\n__I want to see more than 100 log messages, is it possible?__\n\nYes, there is a `limit` URL parameter that you can change to any number.\n\n__Can I use regular expressions in the search field?__\n\nYes, you can enable regular expressions next to the search field.\n\n__Is the search field case insensitive?__\n\nYes.\n\n__How is a Piwik log line formatted by default?__\n\n`'$severity $tag[$datetime] [$requestId] $message` eg `WARNING Piwik\\Common[2015-01-01 01:02:03] [cf27] The log message`\n\n__Is the search pattern applied to the whole log line?__\n\nYes, this means a search for `WARNING Piwik\\Common` would deliver you all warnings triggered by `Piwik\\Common`.\n\n__How do I find all messages that belong to a certain request?__\n\nEach log message shows a \"Request Id\". By clicking on this Id it selects all log messages of the same request.\nAlternatively you can search for the expression `\\[1234\\]` where `1234` need to be replaced by a Request Id.\n\n__How do I find messages that belong to the same day?__\n\nEither click on a date field or search for it, eg `2012-12-12`.\n\n__What are the known issues?__\n\n* If there are messages being logged while viewing the log messages, the paging might not work 100% correctly.\n* There seems to be a problem when searching for a single quotation mark \"'\".\n\n## Changelog\n\n* 0.2.0 Compatibility w\/ Piwik 2.15.\n* 0.1.1 Fix for IE8\n* 0.1.0 Initial Release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n",
+ "numDownloads":2140,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>View log messages that were logged by Piwik via the Piwik UI or HTTP Reporting API.<\/p>\n\n",
+ "faq":"<p><strong>I want to see more than 100 log messages, is it possible?<\/strong><\/p>\n\n<p>Yes, there is a <code>limit<\/code> URL parameter that you can change to any number.<\/p>\n\n<p><strong>Can I use regular expressions in the search field?<\/strong><\/p>\n\n<p>Yes, you can enable regular expressions next to the search field.<\/p>\n\n<p><strong>Is the search field case insensitive?<\/strong><\/p>\n\n<p>Yes.<\/p>\n\n<p><strong>How is a Piwik log line formatted by default?<\/strong><\/p>\n\n<p><code>'$severity $tag[$datetime] [$requestId] $message<\/code> eg <code>WARNING Piwik\\Common[2015-01-01 01:02:03] [cf27] The log message<\/code><\/p>\n\n<p><strong>Is the search pattern applied to the whole log line?<\/strong><\/p>\n\n<p>Yes, this means a search for <code>WARNING Piwik\\Common<\/code> would deliver you all warnings triggered by <code>Piwik\\Common<\/code>.<\/p>\n\n<p><strong>How do I find all messages that belong to a certain request?<\/strong><\/p>\n\n<p>Each log message shows a \"Request Id\". By clicking on this Id it selects all log messages of the same request.\nAlternatively you can search for the expression <code>\\[1234\\]<\/code> where <code>1234<\/code> need to be replaced by a Request Id.<\/p>\n\n<p><strong>How do I find messages that belong to the same day?<\/strong><\/p>\n\n<p>Either click on a date field or search for it, eg <code>2012-12-12<\/code>.<\/p>\n\n<p><strong>What are the known issues?<\/strong><\/p>\n\n<ul><li>If there are messages being logged while viewing the log messages, the paging might not work 100% correctly.<\/li>\n<li>There seems to be a problem when searching for a single quotation mark \"'\".<\/li>\n<\/ul>",
+ "documentation":"",
+ "changelog":"<ul><li>0.2.0 Compatibility w\/ Piwik 2.15.<\/li>\n<li>0.1.1 Fix for IE8<\/li>\n<li>0.1.0 Initial Release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/LogViewer\/download\/0.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"page2images-visual-link",
+ "displayName":"page 2images-visual-link",
+ "owner":"SuzhouKada",
+ "description":"This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a previe",
+ "homepage":"http:\/\/www.page2images.com",
+ "createdDateTime":"2014-12-23 01:19:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":["page2images",
+ "website",
+ "screenshot"],"basePrice":0,"authors":[{"name":"SuzhouKada",
+ "email":"test5@example.com",
+ "homepage":"http:\/\/www.page2images.com"}],"repositoryUrl":"https:\/\/github.com\/SuzhouKada\/piwik",
+ "lastUpdated":"2014-12-23 01:19:04",
+ "latestVersion":"1.0.3",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/page2images-visual-link\/images\/visual-link-screenshot-on-domz.png",
+ "https:\/\/plugins.piwik.org\/page2images-visual-link\/images\/visual-link-screenshot-on-domz_02.png",
+ "https:\/\/plugins.piwik.org\/page2images-visual-link\/images\/visual-link-screenshot-on-domz_03.png"],"previews":[],"activity":{"numCommits":"8",
+ "numContributors":"1",
+ "lastCommitDate":"1970-01-01 00:33:34"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.3",
+ "release":"2014-12-23 01:19:04",
+ "requires":{},"readme":"# Page2Images Visual Link Plugin\n\n## Description\n\nThis plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.\n\n![Screenshot](https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png)\n\n## Installation\n\nJust download the plugin and copy it to the plugin directory.\nIf you need change the default behavior, you can open the js file and change the value as needed.\nEnable preload mode - p2iQuery().run(\"Free\", true, false);\nEnable preload mode & inner link mode - p2iQuery().run(\"Free\", true, true);\n\n## FAQ\n\nWho need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https. \n\n\n## Changelog\n\n__1.0.0__\n* Initial release\n\n## License\n\nGPL v2 or later\n\n## Support\n\nPlease direct any feedback to: \n\n* [https:\/\/github.com\/SuzhouKada\/piwik\/issues](https:\/\/github.com\/SuzhouKada\/piwik\/issues)\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/SuzhouKada\/piwik\/commits\/1.0.3",
+ "readmeHtml":{"description":"\n\n<p>This plugin allow you visualize links of your website by just one click installation. When user move mouse over the text links, they will see a preview picture of this link. By default, [only extra links] will have preview thumbnails. You can change the setting in the JS files.<\/p>\n\n<p><img src=\"https:\/\/github.com\/SuzhouKada\/piwik\/blob\/master\/screenshots\/visual-link-screenshot-on-domz.png\" alt=\"visual-link-screenshot-on-domz.png\" \/><\/p>\n\n",
+ "faq":"<p>Who need this plugin?\nWebsite master who want to their users see the webpage thumbnail of one extra link before they open this page.\nWhat is the benefit?\nThis plugin can save end users' time. They will know whether they need go to this page or not when they see the preview image. \nIs it free?\nYes, it is totally free. But we will add a small water mark in the bottom of preview picture. The paid version does not have this limitation.\nDoes it support https?\nFree version does not support https.<\/p>",
+ "documentation":"",
+ "changelog":"<p><strong>1.0.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/page2images-visual-link\/download\/1.0.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"readme":"# Piwik cacheBuster Plugin\n\n## Description\n\nThis plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally\n\n## Changelog\n~2014~\n\n2014-02-21 - Update some more code, added in notification area but it's not quite working yet (TODO - make it work)\n\n2014-02-21 - Rebranded to cacheBuster and set version to 1.0, updated code to use a better check for directory seperator\n\n2014-02-20 - v2.0\n - Updated plugin to work with Piwik 2.0.3\n\n~2013~\n Inital creation of plugin at http:\/\/www.spherexx.com under the name ClearCache\n\n## Support\nPlease direct any feedback to john.deery@gmail.com",
+ "numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":null,"loginUrl":"https:\/\/shop.piwik.org\/my-account"}},{"name":"PerformanceInfo",
+ "displayName":"Performance Info",
+ "owner":"ThaDafinser",
+ "description":"Piwik plugin to check if the settings are good for security\/performance",
+ "homepage":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo",
+ "createdDateTime":"2015-03-31 10:38:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo",
+ "lastUpdated":"2015-10-14 07:16:03",
+ "latestVersion":"v0.2.2",
+ "numDownloads":3314,"screenshots":[],"previews":[],"activity":{"numCommits":"18",
+ "numContributors":"1",
+ "lastCommitDate":"2015-10-14 07:15:10"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-03-31 10:38:03",
+ "requires":{"piwik":">=2.10.0",
+ "php":">=5.5.0"},"readme":"",
+ "numDownloads":106,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-04-07 06:42:03",
+ "requires":{"piwik":">=2.14.0",
+ "php":">=5.5.0"},"readme":"",
+ "numDownloads":156,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/0.1.1"},{"name":"0.2.0",
+ "release":"2015-04-27 06:04:03",
+ "requires":{"piwik":">=2.13.0",
+ "php":">=5.5.0"},"readme":"",
+ "numDownloads":2,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/0.2.0"},{"name":"v0.2.1",
+ "release":"2015-04-27 06:06:03",
+ "requires":{"piwik":">=2.13.0",
+ "php":">=5.5.0"},"readme":"",
+ "numDownloads":1139,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/v0.2.1"},{"name":"v0.2.2",
+ "release":"2015-10-14 07:16:03",
+ "requires":{"piwik":">=2.13.0",
+ "php":">=5.5.0"},"readme":"# Piwik ConfigurationInfo Plugin\n\n## Description\n\nThis plugin checks your configuration and compare it with some best practice settings.\n- Security\n- Performance\n- other\n\n## FAQ\n\n__Why does this plugin needs PHP 5.5?__\n\nYou look at this plugin because you care about security or performance? Then why you dont upgrade to the latest PHP version?\n",
+ "numDownloads":1911,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ThaDafinser\/Piwik-PerformanceInfo\/commits\/0.1.2",
+ "readmeHtml":{"description":"\n\n<p>This plugin checks your configuration and compare it with some best practice settings.\n- Security\n- Performance\n- other<\/p>\n\n",
+ "faq":"<p><strong>Why does this plugin needs PHP 5.5?<\/strong><\/p>\n\n<p>You look at this plugin because you care about security or performance? Then why you dont upgrade to the latest PHP version?<\/p>",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/PerformanceInfo\/download\/v0.2.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"PerformanceMonitor",
+ "displayName":"Performance Monitor",
+ "owner":"chanzler",
+ "description":"Displays the performance index of a site as a widget and adds an performance overview page to the top navigation. The index is calculated by the numbe",
+ "homepage":"http:\/\/github.com\/chanzler\/piwik-performance-monitor",
+ "createdDateTime":"2014-08-16 19:40:04",
+ "donate":{"paypal":"paypal@familiekanzler.de",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor",
+ "lastUpdated":"2014-11-08 20:20:03",
+ "latestVersion":"0.2.5",
+ "numDownloads":8174,"screenshots":[],"previews":[],"activity":{"numCommits":"13",
+ "numContributors":"1",
+ "lastCommitDate":"2014-11-10 16:18:43"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-08-16 19:40:04",
+ "requires":{},"readme":"",
+ "numDownloads":883,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.1.0"},{"name":"0.2.0",
+ "release":"2014-10-12 19:44:03",
+ "requires":{"piwik":">=2.7.0"},"readme":"",
+ "numDownloads":468,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2014-11-03 10:32:03",
+ "requires":{"piwik":">=2.0.0"},"readme":"",
+ "numDownloads":124,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.1"},{"name":"0.2.2",
+ "release":"2014-11-04 18:18:04",
+ "requires":{"piwik":">=2.0.0"},"readme":"",
+ "numDownloads":3,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.2"},{"name":"0.2.3",
+ "release":"2014-11-04 18:54:04",
+ "requires":{"piwik":">=2.0.0"},"readme":"",
+ "numDownloads":6,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.3"},{"name":"0.2.4",
+ "release":"2014-11-04 20:32:03",
+ "requires":{"piwik":">=2.0.0"},"readme":"",
+ "numDownloads":128,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.4"},{"name":"0.2.5",
+ "release":"2014-11-08 20:20:03",
+ "requires":{"piwik":">=2.0.0"},"readme":"# Piwik PerformanceMonitor Plugin\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard and a new link in the top navigation.\n\nThe widget will show the performance index of a site that auto-refreshes every 30 seconds. It shows the number of visitors or visit time in a 30 minute period compared to the maximum number of visitors in any 30 minute period of the last 30 days.\n\nThis plugin is inspired by the [piwik barometer plugin](https:\/\/github.com\/halfdan\/piwik-barometer-plugin) and uses a lightly modified jQuery-Dynameter (original by [Tzechiu Lei](http:\/\/tze1.com\/dynameter\/).\n\n**This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 5 million visits per day.**\n\n(Tested with piwik 2.7.0, but supposed to run with older versions)\n\n## Installation\n\nInstall it via Piwik Marketplace OR install manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n ```\n cd plugins\/\n git clone https:\/\/github.com\/chanzler\/piwik-performance-monitor.git PerformanceMonitor\n ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You will now find the widget under the Live! section.\n\n4. When you update: As there have been made several changes in v0.2.0 you might have to clear your cache (console core:clear-caches) \n\n## FAQ\n\n###Features\nHere is a list of features that are included in this project:\n\n* Live widget (\"Performance Monitor\") with key performance indices\n* Add an item to the top navigation (\"Performance overview\") which displays the performance monitor widget for all your sites (configurable).\n\n###Configuration\n*Refresh interval*: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.\n\n*Measurement period*: Defines the measurement period in minutes. 5 minutes is a good value to choose.\n\n*Comparison period*: Defines the period (x * 24h) the last 30 minutes are compared to. A good value for small sites with more or less static content is 30. For sites with peak days on weekends for example 1 will be a good value. 1 is also a good value for very big sites with a lot of traffic. You will have to play around with this value a little bit and figure out whalt will fit your needs.\n\n*Sites in overview*: Defines which sites are displayed in the overview. \n\n## Changelog\n\n### 0.2.5 Bugfix Release\n* fixed bug with timezones that match \/^UTC[+-]*\/\n\n### 0.2.4 Bugfix Release\n* reengineering of scheduled task\n\n### 0.2.3 Bugfix Release\n* fixed bug in scheduled task\n\n### 0.2.2 Bugfix Release\n* fixed an installation bug\n\n### 0.2.0 Second Beta\n* made the plugin configurable by settings\n* added more key performance indices\n* performance overview now links to the dashboards\n* fixed the timezone bug (configure timezone for each site properly)\n* fixed several minor bugs\n\n### 0.1.0 First Beta\n* initial release\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Please direct any feedback to [frank@intersolve.de](mailto:frank@intersolve.de)\n\n## Contribute\n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+ "numDownloads":6562,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-performance-monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard and a new link in the top navigation.<\/p>\n\n<p>The widget will show the performance index of a site that auto-refreshes every 30 seconds. It shows the number of visitors or visit time in a 30 minute period compared to the maximum number of visitors in any 30 minute period of the last 30 days.<\/p>\n\n<p>This plugin is inspired by the <a href=\"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\">piwik barometer plugin<\/a> and uses a lightly modified jQuery-Dynameter (original by <a href=\"http:\/\/tze1.com\/dynameter\/\">Tzechiu Lei<\/a>.<\/p>\n\n<p><strong>This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 5 million visits per day.<\/strong><\/p>\n\n<p>(Tested with piwik 2.7.0, but supposed to run with older versions)<\/p>\n\n",
+ "faq":"<h3>Features<\/h3>\n\n<p>Here is a list of features that are included in this project:<\/p>\n\n<ul><li>Live widget (\"Performance Monitor\") with key performance indices<\/li>\n<li>Add an item to the top navigation (\"Performance overview\") which displays the performance monitor widget for all your sites (configurable).<\/li>\n<\/ul><h3>Configuration<\/h3>\n\n<p><em>Refresh interval<\/em>: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.<\/p>\n\n<p><em>Measurement period<\/em>: Defines the measurement period in minutes. 5 minutes is a good value to choose.<\/p>\n\n<p><em>Comparison period<\/em>: Defines the period (x * 24h) the last 30 minutes are compared to. A good value for small sites with more or less static content is 30. For sites with peak days on weekends for example 1 will be a good value. 1 is also a good value for very big sites with a lot of traffic. You will have to play around with this value a little bit and figure out whalt will fit your needs.<\/p>\n\n<p><em>Sites in overview<\/em>: Defines which sites are displayed in the overview.<\/p>",
+ "documentation":"",
+ "changelog":"<h3>0.2.5 Bugfix Release<\/h3>\n\n<ul><li>fixed bug with timezones that match \/^UTC[+-]*\/<\/li>\n<\/ul><h3>0.2.4 Bugfix Release<\/h3>\n\n<ul><li>reengineering of scheduled task<\/li>\n<\/ul><h3>0.2.3 Bugfix Release<\/h3>\n\n<ul><li>fixed bug in scheduled task<\/li>\n<\/ul><h3>0.2.2 Bugfix Release<\/h3>\n\n<ul><li>fixed an installation bug<\/li>\n<\/ul><h3>0.2.0 Second Beta<\/h3>\n\n<ul><li>made the plugin configurable by settings<\/li>\n<li>added more key performance indices<\/li>\n<li>performance overview now links to the dashboards<\/li>\n<li>fixed the timezone bug (configure timezone for each site properly)<\/li>\n<li>fixed several minor bugs<\/li>\n<\/ul><h3>0.1.0 First Beta<\/h3>\n\n<ul><li>initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/PerformanceMonitor\/download\/0.2.5"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"PlatformsReport",
+ "displayName":"Platforms Report",
+ "owner":"PiwikPRO",
+ "description":"New report in Visitors > Platforms that aggregates visits based on device type, OS version & browser version.",
+ "homepage":"http:\/\/piwik.pro",
+ "createdDateTime":"2015-10-27 02:06:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport",
+ "lastUpdated":"2016-01-04 08:42:03",
+ "latestVersion":"1.0.4",
+ "numDownloads":2347,"screenshots":[],"previews":[],"activity":{"numCommits":"24",
+ "numContributors":"3",
+ "lastCommitDate":"2016-03-15 04:25:00"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+ "release":"2015-10-27 02:06:03",
+ "requires":{"piwik":">=2.14.3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.0"},{"name":"1.0.1",
+ "release":"2015-10-27 02:14:03",
+ "requires":{"piwik":">=2.14.3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.1"},{"name":"1.0.2",
+ "release":"2015-10-27 02:30:04",
+ "requires":{"piwik":">=2.14.3"},"readme":"",
+ "numDownloads":100,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.2"},{"name":"1.0.3",
+ "release":"2015-10-29 23:52:03",
+ "requires":{"piwik":">=2.14.3"},"readme":"",
+ "numDownloads":777,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.3"},{"name":"1.0.4",
+ "release":"2016-01-04 08:42:03",
+ "requires":{"piwik":">=2.14.3"},"readme":"# Piwik PlatformReports Plugin\n\n## Description\n\nIncludes two new reports: Platforms and Platforms With Versions. \n\nThe **Platforms** report displays visitors by their device type, OS and browser.\n\nThe **Platforms With Versions** report displays the same information, but includes OS version & browser version information.\n\nThe new reports are available via the Visitors > Platforms menu.\n\n## Changelog\n\n- 1.0.3\n * Moved sub-menu entry after 'Software'\n- 1.0.2\n * Initial release on Marketplace.\n- 1.0.0\n * Initial release.\n",
+ "numDownloads":1470,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-PlatformsReport\/commits\/1.0.1",
+ "readmeHtml":{"description":"\n\n<p>Includes two new reports: Platforms and Platforms With Versions.<\/p>\n\n<p>The <strong>Platforms<\/strong> report displays visitors by their device type, OS and browser.<\/p>\n\n<p>The <strong>Platforms With Versions<\/strong> report displays the same information, but includes OS version &amp; browser version information.<\/p>\n\n<p>The new reports are available via the Visitors &gt; Platforms menu.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>1.0.3\n\n<ul><li>Moved sub-menu entry after 'Software'<\/li>\n<\/ul><\/li>\n<li>1.0.2\n\n<ul><li>Initial release on Marketplace.<\/li>\n<\/ul><\/li>\n<li>1.0.0\n\n<ul><li>Initial release.<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/PlatformsReport\/download\/1.0.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"QueuedTracking",
+ "displayName":"Queued Tracking",
+ "owner":"piwik",
+ "description":"Scale your large traffic Piwik service by queuing tracking requests in Redis for better performance. ",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2015-01-05 23:28:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking",
+ "lastUpdated":"2016-04-19 02:26:04",
+ "latestVersion":"0.3.1",
+ "numDownloads":5296,"screenshots":[],"previews":[],"activity":{"numCommits":"115",
+ "numContributors":"4",
+ "lastCommitDate":"2016-06-02 09:32:10"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-01-05 23:28:05",
+ "requires":{"piwik":">=2.10.0-b10"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.7",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-01-06 00:48:04",
+ "requires":{"piwik":">=2.10.0-b10"},"readme":"",
+ "numDownloads":487,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.7",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2015-03-09 05:56:04",
+ "requires":{"piwik":">=2.10.0"},"readme":"",
+ "numDownloads":221,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2015-03-31 21:44:04",
+ "requires":{"piwik":">=2.10.0"},"readme":"",
+ "numDownloads":611,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2015-06-09 21:38:04",
+ "requires":{"piwik":">=2.13.0"},"readme":"",
+ "numDownloads":80,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.4"},{"name":"0.1.5",
+ "release":"2015-06-11 21:56:04",
+ "requires":{"piwik":">=2.13.0"},"readme":"",
+ "numDownloads":163,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.5"},{"name":"0.1.6",
+ "release":"2015-06-22 01:00:05",
+ "requires":{"piwik":">=2.13.0"},"readme":"",
+ "numDownloads":328,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.6"},{"name":"0.1.7",
+ "release":"2015-07-24 12:44:05",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":26,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.7"},{"name":"0.1.8",
+ "release":"2015-07-25 08:08:04",
+ "requires":{"piwik":">=2.14.2"},"readme":"",
+ "numDownloads":736,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.1.8"},{"name":"0.2.0",
+ "release":"2015-10-21 22:36:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":481,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2015-12-14 20:46:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/0.44",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.1"},{"name":"0.2.2",
+ "release":"2015-12-14 21:02:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":31,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.2"},{"name":"0.2.3",
+ "release":"2015-12-15 21:06:05",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":5,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.3"},{"name":"0.2.4",
+ "release":"2015-12-15 21:58:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":350,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.4",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.4"},{"name":"0.2.5",
+ "release":"2016-01-13 19:58:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":480,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/1.0.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.5"},{"name":"0.2.6",
+ "release":"2016-02-16 16:06:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":426,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.2.6"},{"name":"0.3.0",
+ "release":"2016-03-14 19:00:04",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":404,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/0.6.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.3.0"},{"name":"0.3.1",
+ "release":"2016-04-19 02:26:04",
+ "requires":{"piwik":">=2.16.0"},"readme":"# Piwik QueuedTracking Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/piwik\/plugin-QueuedTracking.svg?branch=master)](https:\/\/travis-ci.org\/piwik\/plugin-QueuedTracking)\n\n## Description\n\nThis plugin writes all tracking requests into a [Redis](http:\/\/redis.io\/) instance instead of directly into the database.\nThis is useful if you have too many requests per second and your server cannot handle all of them directly (eg too many connections in nginx or MySQL).\nIt is also useful if you experience peaks sometimes. Those peaks can be handled much better by using this queue.\nWriting a tracking request into the queue is very fast (a tracking request takes in total a few milliseconds) compared to a regular tracking request (that takes multiple hundreds of milliseconds). The queue makes sure to process the tracking requests whenever possible even if it takes a while to process all requests after there was a peak.\n\n*This plugin is currently BETA and there might be issues causing not tracked requests, wrongly tracked requests or duplicated tracked requests.*\n\nHave a look at the FAQ for more information.\n\n## FAQ\n\n__What are the requirements for this plugin?__\n\n* [Redis server 2.8+](http:\/\/redis.io\/) - [Redis quickstart](http:\/\/redis.io\/topics\/quickstart)\n* [phpredis PHP extension](https:\/\/github.com\/nicolasff\/phpredis) - [Install](https:\/\/github.com\/nicolasff\/phpredis#installingconfiguring)\n* Transactions are used and must be supported by the SQL database.\n\n__Where can I configure and enable the queue?__\n\nIn your Piwik instance go to \"Settings => Plugin Settings\". There is a config section for this plugin.\n\n__When will a queued tracking request be processed?__\n\nFirst you should know that multiple tracking requests will be inserted into the database at once using\n[bulk tracking](http:\/\/developer.piwik.org\/api-reference\/tracking-api#bulk-tracking) as soon as a configurable number\nof requests is queued. By default we will check whether enough requests are queued during a regular tracking request\nand start processing them right after sending a response to the browser to make sure a user won't have to wait until\nthe queue has finished to process all requests. Have a look at this graph to see how it works:\n\n![How it works](https:\/\/raw.githubusercontent.com\/piwik\/plugin-QueuedTracking\/master\/docs\/How_it_works.png)\n\n__I do not want to process queued requests within a tracking request, what shall I do?__\n\nDon't worry, if this solution doesn't work out for you for some reason you can disable it and process all queued\nrequests using the [Piwik console](http:\/\/developer.piwik.org\/guides\/piwik-on-the-command-line). Just follow these steps:\n\n* Disable the setting \"Process during tracking request\" in the Piwik UI under \"Settings => Plugin Settings\"\n* Setup a cronjob that executes the command `.\/console queuedtracking:process` for instance every minute\n* That's it\n\nThe `queuedtracking:process` command will make sure to process all queued tracking requests whenever possible and the\ncommand will exit as soon as there are not enough requests queued anymore. That's why you should setup a cronjob to start\nthe command every minute as it will just start processing again as soon as there are enough requests. Be aware that it won't\nspeed up processing queued requests when starting this command multiple times. Only one process will actually replay\nqueued requests at a time.\n\nExample crontab entry that starts the processor every minute:\n\n`* * * * * cd \/piwik && .\/console queuedtracking:process >\/dev\/null 2>&1`\n\n__Can I keep track of the state of the queue?__\n\nYes, you can. Just execute the command `.\/console queuedtracking:monitor`. This will show the current state of the queue.\n\n__Can I improve the speed of inserting requests from the Redis queue to the database?__\n\nYes, you can by adding more workers. By default only one worker is activated at a time and only one worker processes tracking requests from Redis to the database. When inserting tracking requests into the database, at time of writing this, about 80% of the time is spent in PHP and the database might be rather bored. If you have multiple CPUs available on your server you can add more workers. You can do this by going in the Piwik Admin interface to \"Plugin Settings\". There will be a setting \"Number of queue workers\". Increase this number to the number of CPUs you want to dedeciate for processing requests. Best practice is to add more workers step by step. So first increase this number to 2 and check if the tracking request insertions is fast enough for you. If not and you have more CPUs available, increase the number again.\n\nWhen using multiple workers it might be worth to lower the number of \"Number of requests to process\" to eg 15 in \"Plugin Settings\". By default 25 requests are inserted in one step by using transactions. This means different workers might have to wait for each other. By lowering that number each worker will block the DB for less time.\n\nIf you process requests from the command line via `.\/console queuedtracking:process` make sure to always start enough workers. Each time you execute this command one worker will be started. If already enough workers are in process no new worker will be started and the command just finishes immediately.\n\n__How fast are the requests inserted from Redis to the Database?__\n\nThis very much depends on your setup and hardware. With fast CPUs you can achive up to 250req\/s with 1 worker, 400req\/s with 2 workers and 1500req\/s with 8 workers (tested on a AWS c3.x2large instance).\n\n__How should the redis server be configured?__\n\nMake sure to have enough memory to save all tracking requests in the queue. One tracking request in the queue takes about 2KB,\n20.000 tracking requests take about 50MB. All tracking requests of all websites are stored in the same queue.\nThere should be only one Redis server to make sure the data will be replayed in the same order as they were recorded.\nIf you want to configure Redis HA (High Availability) it is possible to use Redis Sentinel see further down.\nWe currently write into the Redis default database by default but you can configure to use a different one.\n\n__Why do some tests fail on my local Piwik instance?__\n\nMake sure the requirements mentioned above are met and Redis needs to run on 127.0.0.1:6379 with no password for the\nintegration tests to work. It will use the database \"15\" and the tests may flush all data it contains. Make sure\nit does not contain any important data.\n\n__What if I want to disable the queue?__\n\nYou might want to disable the queue at some point but there are still some pending requests in the queue. We recommend to\nchange the \"Number of requests to process\" in plugin settings to \"1\" and process all requests using the command\n`.\/console queuedtracking:process` shortly before disabling the queue and directly afterwards. It is still possible to\nprocess remaining request once the queue is disabled but new tracking requests won't be written into the queue.\n\n__How can I access Redis data?__\n\nYou can either acccess data on the command line via `redis-cli` or use a Redis monitor like [phpRedisAdmin](https:\/\/github.com\/ErikDubbelboer\/phpRedisAdmin).\nIn case you are using something like a Redis monitor make sure it is not accessible by everyone.\n\n__The processor won't start processing again as it things another processor is processing the data already, what can I do?__\n\nFirst make sure there is actually no processor processing any requests. For example by executing the command\n`.\/console queuedtracking:monitor`. In case you are using the command line to process tracking requests make sure there\nis no processer running using the Linux command `ps`. If you are sure there is no process running you can release the lock\nby executing the command `.\/console queuedtracking:lock-status`. This will output more information which locks are in use and how to unlock them. Afterwards everything should work as normal again.\nYou should actually never have to do this as a lock automatically expires after a while. It just may take a while depending\non the amount of requests you are importing.\n\n__How can I test my Redis \/ QueuedTracking setup in case I'm getting errors?__\n\nThere is a command to test some the connection to Redis as well as some needed features: `.\/console queuedtracking:test`.\n\nIt might directly give you an error message if something goes wrong that helps you to resolve the issue. If your queue\nis always locked you might be as well interested in executing `.console queuedtracking:lock-status`.\n\n__How can I debug in case something goes wrong?__\n\n* Use the command `.\/console queuedtracking:monitor` to view the current state of all workers\n* Use the command `.\/console queuedtracking:lock-status` to view the current state of all locks\n* Set the option `-vvv` when processing via `.\/console queuedtracking:process -vvv` to enable the tracker debug mode for this run. This will print detailed information to screen.\n* Enable tracker mode in `config.ini.php` via `[Tracker] debug=1` if processing requests during tracking is enabled.\n* Use the command `.\/console queuedtracking:print-queued-requests` to view the next requests to process in each queue. If you execute this command twice within 1-10 minutes, and it outputs the same, the queue is not being processed most likely indicating a problem.\n\n__I am using the Log Importer in combination with Queued Tracking, is there something to consider?__\n\nYes, we recommend to set the \"Number of requests to process\" to `1` as the log importer usually sends multiple requests at once using bulk tracking already.\n\n__How can I configure the QueuedTracking plugin to use Redis Sentinel?__\n\nYou can enable the Sentinel in the plugin settings. Make sure to specify the correct Sentinel \"master\" name.\n\nWhen using Sentinel, the `phpredis` extension is not needed as it uses a PHP class to connect to your Redis. Please note that calls to Redis might be a little bit slower.\n\n__Can I configure multiple Sentinel servers?__\n\nYes, once Sentinel is enabled you can configure multiple servers by specifying multiple hosts and ports comma separated via the UI.\n\n__Are there any known issues?__\n\n* In case you are using bulk tracking the bulk tracking response varies compared to the regular one. We will always return\n either an image or a 204 HTTP response code in case the parameter `send_image=0` is sent.\n* Anything related with Cookies won't work\n* By design this plugin can delay the insertion of tracking requests causing real time plugins to not show the actual data since\n under load tracking requests may take a while until they are replayed.\n\n## Changelog\n\n0.3.1\n\n- Fixed Redis Sentinel was not working properly. Sentinel can be now configured via the UI and not via config. Also\n multiple servers can be configured now.\n\n0.3.0\n\n- Added support to use Redis Sentinel for automatic failover\n\n0.2.6\n\n- When a request takes more than 2 seconds and debug tracker mode is enabled, log information about the request.\n\n0.2.5\n\n- Use a better random number generator if available on the system to more evenly process queues.\n\n0.2.4\n\n- The command `queuedtracking:monitor` will now work even when the queue is disabled\n\n0.2.3\n\n- Added more tests and information to the `queuedtracking:test` command\n- It is now possible to configure up to 16 workers\n\n0.2.2\n\n- Improved output for the new `test` command\n- New FAQ entries\n\n0.2.1\n\n- Added a new command to test the connection to Redis. To test yor connection use `.\/console queuedtracking:test`\n\n0.2.0\n\n- Compatibility w\/ Piwik 2.15.\n\n0.1.6\n \n- For bulk requests we do no longer skip all tracking requests after a tracking request that has an invalid `idSite` set. The same behaviour was changed in Piwik 2.14 for regular bulk requests.\n\n0.1.5\n\n- Fixed a notice in case an incompatible Redis version is used.\n\n0.1.4\n\n- It is now possible to start multiple workers for faster insertion from Redis to the database. This can be configured in the \"Plugin Settings\"\n- Monitor does now output information whether a processor is currently processing the queue.\n- Added a new command `queuedtracking:lock-status` that outputs the status of each queue lock. This command can also unlock a queue by using the option `--unlock`.\n- Added a new command `queuedtracking:print-queued-requests` that outputs the next requests to process in each queue.\n- If someone passes the option `-vvv` to `.\/console queuedtracking:process` the Tracker debug mode will be enabled and additional information will be printed to the screen.\n\n0.1.2\n\n- Updated description on Marketplace\n\n0.1.0\n\n- Initial Release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org). In case of any issues with the plugin or\nfeature wishes create a new issues here: https:\/\/github.com\/piwik\/plugin-QueuedTracking\/issues . In case you experience\nany problems please post the output of `.\/console queuedtracking:test` in the issue.\n\n## TODO\n\nFor usage with multiple redis servers we should lock differently:\nhttp:\/\/redis.io\/topics\/distlock eg using https:\/\/github.com\/ronnylt\/redlock-php\n",
+ "numDownloads":466,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin writes all tracking requests into a <a href=\"http:\/\/redis.io\/\">Redis<\/a> instance instead of directly into the database.\nThis is useful if you have too many requests per second and your server cannot handle all of them directly (eg too many connections in nginx or MySQL).\nIt is also useful if you experience peaks sometimes. Those peaks can be handled much better by using this queue.\nWriting a tracking request into the queue is very fast (a tracking request takes in total a few milliseconds) compared to a regular tracking request (that takes multiple hundreds of milliseconds). The queue makes sure to process the tracking requests whenever possible even if it takes a while to process all requests after there was a peak.<\/p>\n\n<p><em>This plugin is currently BETA and there might be issues causing not tracked requests, wrongly tracked requests or duplicated tracked requests.<\/em><\/p>\n\n<p>Have a look at the FAQ for more information.<\/p>\n\n",
+ "faq":"<p><strong>What are the requirements for this plugin?<\/strong><\/p>\n\n<ul><li><a href=\"http:\/\/redis.io\/\">Redis server 2.8+<\/a> - <a href=\"http:\/\/redis.io\/topics\/quickstart\">Redis quickstart<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nicolasff\/phpredis\">phpredis PHP extension<\/a> - <a href=\"https:\/\/github.com\/nicolasff\/phpredis#installingconfiguring\">Install<\/a><\/li>\n<li>Transactions are used and must be supported by the SQL database.<\/li>\n<\/ul><p><strong>Where can I configure and enable the queue?<\/strong><\/p>\n\n<p>In your Piwik instance go to \"Settings =&gt; Plugin Settings\". There is a config section for this plugin.<\/p>\n\n<p><strong>When will a queued tracking request be processed?<\/strong><\/p>\n\n<p>First you should know that multiple tracking requests will be inserted into the database at once using\n<a href=\"http:\/\/developer.piwik.org\/api-reference\/tracking-api#bulk-tracking\">bulk tracking<\/a> as soon as a configurable number\nof requests is queued. By default we will check whether enough requests are queued during a regular tracking request\nand start processing them right after sending a response to the browser to make sure a user won't have to wait until\nthe queue has finished to process all requests. Have a look at this graph to see how it works:<\/p>\n\n<p><img src=\"https:\/\/raw.githubusercontent.com\/piwik\/plugin-QueuedTracking\/master\/docs\/How_it_works.png\" alt=\"How_it_works.png\" \/><\/p>\n\n<p><strong>I do not want to process queued requests within a tracking request, what shall I do?<\/strong><\/p>\n\n<p>Don't worry, if this solution doesn't work out for you for some reason you can disable it and process all queued\nrequests using the <a href=\"http:\/\/developer.piwik.org\/guides\/piwik-on-the-command-line\">Piwik console<\/a>. Just follow these steps:<\/p>\n\n<ul><li>Disable the setting \"Process during tracking request\" in the Piwik UI under \"Settings =&gt; Plugin Settings\"<\/li>\n<li>Setup a cronjob that executes the command <code>.\/console queuedtracking:process<\/code> for instance every minute<\/li>\n<li>That's it<\/li>\n<\/ul><p>The <code>queuedtracking:process<\/code> command will make sure to process all queued tracking requests whenever possible and the\ncommand will exit as soon as there are not enough requests queued anymore. That's why you should setup a cronjob to start\nthe command every minute as it will just start processing again as soon as there are enough requests. Be aware that it won't\nspeed up processing queued requests when starting this command multiple times. Only one process will actually replay\nqueued requests at a time.<\/p>\n\n<p>Example crontab entry that starts the processor every minute:<\/p>\n\n<p><code>* * * * * cd \/piwik &amp;&amp; .\/console queuedtracking:process &gt;\/dev\/null 2&gt;&amp;1<\/code><\/p>\n\n<p><strong>Can I keep track of the state of the queue?<\/strong><\/p>\n\n<p>Yes, you can. Just execute the command <code>.\/console queuedtracking:monitor<\/code>. This will show the current state of the queue.<\/p>\n\n<p><strong>Can I improve the speed of inserting requests from the Redis queue to the database?<\/strong><\/p>\n\n<p>Yes, you can by adding more workers. By default only one worker is activated at a time and only one worker processes tracking requests from Redis to the database. When inserting tracking requests into the database, at time of writing this, about 80% of the time is spent in PHP and the database might be rather bored. If you have multiple CPUs available on your server you can add more workers. You can do this by going in the Piwik Admin interface to \"Plugin Settings\". There will be a setting \"Number of queue workers\". Increase this number to the number of CPUs you want to dedeciate for processing requests. Best practice is to add more workers step by step. So first increase this number to 2 and check if the tracking request insertions is fast enough for you. If not and you have more CPUs available, increase the number again.<\/p>\n\n<p>When using multiple workers it might be worth to lower the number of \"Number of requests to process\" to eg 15 in \"Plugin Settings\". By default 25 requests are inserted in one step by using transactions. This means different workers might have to wait for each other. By lowering that number each worker will block the DB for less time.<\/p>\n\n<p>If you process requests from the command line via <code>.\/console queuedtracking:process<\/code> make sure to always start enough workers. Each time you execute this command one worker will be started. If already enough workers are in process no new worker will be started and the command just finishes immediately.<\/p>\n\n<p><strong>How fast are the requests inserted from Redis to the Database?<\/strong><\/p>\n\n<p>This very much depends on your setup and hardware. With fast CPUs you can achive up to 250req\/s with 1 worker, 400req\/s with 2 workers and 1500req\/s with 8 workers (tested on a AWS c3.x2large instance).<\/p>\n\n<p><strong>How should the redis server be configured?<\/strong><\/p>\n\n<p>Make sure to have enough memory to save all tracking requests in the queue. One tracking request in the queue takes about 2KB,\n20.000 tracking requests take about 50MB. All tracking requests of all websites are stored in the same queue.\nThere should be only one Redis server to make sure the data will be replayed in the same order as they were recorded.\nIf you want to configure Redis HA (High Availability) it is possible to use Redis Sentinel see further down.\nWe currently write into the Redis default database by default but you can configure to use a different one.<\/p>\n\n<p><strong>Why do some tests fail on my local Piwik instance?<\/strong><\/p>\n\n<p>Make sure the requirements mentioned above are met and Redis needs to run on 127.0.0.1:6379 with no password for the\nintegration tests to work. It will use the database \"15\" and the tests may flush all data it contains. Make sure\nit does not contain any important data.<\/p>\n\n<p><strong>What if I want to disable the queue?<\/strong><\/p>\n\n<p>You might want to disable the queue at some point but there are still some pending requests in the queue. We recommend to\nchange the \"Number of requests to process\" in plugin settings to \"1\" and process all requests using the command\n<code>.\/console queuedtracking:process<\/code> shortly before disabling the queue and directly afterwards. It is still possible to\nprocess remaining request once the queue is disabled but new tracking requests won't be written into the queue.<\/p>\n\n<p><strong>How can I access Redis data?<\/strong><\/p>\n\n<p>You can either acccess data on the command line via <code>redis-cli<\/code> or use a Redis monitor like <a href=\"https:\/\/github.com\/ErikDubbelboer\/phpRedisAdmin\">phpRedisAdmin<\/a>.\nIn case you are using something like a Redis monitor make sure it is not accessible by everyone.<\/p>\n\n<p><strong>The processor won't start processing again as it things another processor is processing the data already, what can I do?<\/strong><\/p>\n\n<p>First make sure there is actually no processor processing any requests. For example by executing the command\n<code>.\/console queuedtracking:monitor<\/code>. In case you are using the command line to process tracking requests make sure there\nis no processer running using the Linux command <code>ps<\/code>. If you are sure there is no process running you can release the lock\nby executing the command <code>.\/console queuedtracking:lock-status<\/code>. This will output more information which locks are in use and how to unlock them. Afterwards everything should work as normal again.\nYou should actually never have to do this as a lock automatically expires after a while. It just may take a while depending\non the amount of requests you are importing.<\/p>\n\n<p><strong>How can I test my Redis \/ QueuedTracking setup in case I'm getting errors?<\/strong><\/p>\n\n<p>There is a command to test some the connection to Redis as well as some needed features: <code>.\/console queuedtracking:test<\/code>.<\/p>\n\n<p>It might directly give you an error message if something goes wrong that helps you to resolve the issue. If your queue\nis always locked you might be as well interested in executing <code>.console queuedtracking:lock-status<\/code>.<\/p>\n\n<p><strong>How can I debug in case something goes wrong?<\/strong><\/p>\n\n<ul><li>Use the command <code>.\/console queuedtracking:monitor<\/code> to view the current state of all workers<\/li>\n<li>Use the command <code>.\/console queuedtracking:lock-status<\/code> to view the current state of all locks<\/li>\n<li>Set the option <code>-vvv<\/code> when processing via <code>.\/console queuedtracking:process -vvv<\/code> to enable the tracker debug mode for this run. This will print detailed information to screen.<\/li>\n<li>Enable tracker mode in <code>config.ini.php<\/code> via <code>[Tracker] debug=1<\/code> if processing requests during tracking is enabled.<\/li>\n<li>Use the command <code>.\/console queuedtracking:print-queued-requests<\/code> to view the next requests to process in each queue. If you execute this command twice within 1-10 minutes, and it outputs the same, the queue is not being processed most likely indicating a problem.<\/li>\n<\/ul><p><strong>I am using the Log Importer in combination with Queued Tracking, is there something to consider?<\/strong><\/p>\n\n<p>Yes, we recommend to set the \"Number of requests to process\" to <code>1<\/code> as the log importer usually sends multiple requests at once using bulk tracking already.<\/p>\n\n<p><strong>How can I configure the QueuedTracking plugin to use Redis Sentinel?<\/strong><\/p>\n\n<p>You can enable the Sentinel in the plugin settings. Make sure to specify the correct Sentinel \"master\" name.<\/p>\n\n<p>When using Sentinel, the <code>phpredis<\/code> extension is not needed as it uses a PHP class to connect to your Redis. Please note that calls to Redis might be a little bit slower.<\/p>\n\n<p><strong>Can I configure multiple Sentinel servers?<\/strong><\/p>\n\n<p>Yes, once Sentinel is enabled you can configure multiple servers by specifying multiple hosts and ports comma separated via the UI.<\/p>\n\n<p><strong>Are there any known issues?<\/strong><\/p>\n\n<ul><li>In case you are using bulk tracking the bulk tracking response varies compared to the regular one. We will always return\neither an image or a 204 HTTP response code in case the parameter <code>send_image=0<\/code> is sent.<\/li>\n<li>Anything related with Cookies won't work<\/li>\n<li>By design this plugin can delay the insertion of tracking requests causing real time plugins to not show the actual data since\nunder load tracking requests may take a while until they are replayed.<\/li>\n<\/ul>",
+ "documentation":"",
+ "changelog":"<p>0.3.1<\/p>\n\n<ul><li>Fixed Redis Sentinel was not working properly. Sentinel can be now configured via the UI and not via config. Also\nmultiple servers can be configured now.<\/li>\n<\/ul><p>0.3.0<\/p>\n\n<ul><li>Added support to use Redis Sentinel for automatic failover<\/li>\n<\/ul><p>0.2.6<\/p>\n\n<ul><li>When a request takes more than 2 seconds and debug tracker mode is enabled, log information about the request.<\/li>\n<\/ul><p>0.2.5<\/p>\n\n<ul><li>Use a better random number generator if available on the system to more evenly process queues.<\/li>\n<\/ul><p>0.2.4<\/p>\n\n<ul><li>The command <code>queuedtracking:monitor<\/code> will now work even when the queue is disabled<\/li>\n<\/ul><p>0.2.3<\/p>\n\n<ul><li>Added more tests and information to the <code>queuedtracking:test<\/code> command<\/li>\n<li>It is now possible to configure up to 16 workers<\/li>\n<\/ul><p>0.2.2<\/p>\n\n<ul><li>Improved output for the new <code>test<\/code> command<\/li>\n<li>New FAQ entries<\/li>\n<\/ul><p>0.2.1<\/p>\n\n<ul><li>Added a new command to test the connection to Redis. To test yor connection use <code>.\/console queuedtracking:test<\/code><\/li>\n<\/ul><p>0.2.0<\/p>\n\n<ul><li>Compatibility w\/ Piwik 2.15.<\/li>\n<\/ul><p>0.1.6<\/p>\n\n<ul><li>For bulk requests we do no longer skip all tracking requests after a tracking request that has an invalid <code>idSite<\/code> set. The same behaviour was changed in Piwik 2.14 for regular bulk requests.<\/li>\n<\/ul><p>0.1.5<\/p>\n\n<ul><li>Fixed a notice in case an incompatible Redis version is used.<\/li>\n<\/ul><p>0.1.4<\/p>\n\n<ul><li>It is now possible to start multiple workers for faster insertion from Redis to the database. This can be configured in the \"Plugin Settings\"<\/li>\n<li>Monitor does now output information whether a processor is currently processing the queue.<\/li>\n<li>Added a new command <code>queuedtracking:lock-status<\/code> that outputs the status of each queue lock. This command can also unlock a queue by using the option <code>--unlock<\/code>.<\/li>\n<li>Added a new command <code>queuedtracking:print-queued-requests<\/code> that outputs the next requests to process in each queue.<\/li>\n<li>If someone passes the option <code>-vvv<\/code> to <code>.\/console queuedtracking:process<\/code> the Tracker debug mode will be enabled and additional information will be printed to the screen.<\/li>\n<\/ul><p>0.1.2<\/p>\n\n<ul><li>Updated description on Marketplace<\/li>\n<\/ul><p>0.1.0<\/p>\n\n<ul><li>Initial Release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/QueuedTracking\/download\/0.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ReferrersManager",
+ "displayName":"Referrers Manager",
+ "owner":"sgiehl",
+ "description":"This plugin allows to view and manage search engines and social networks that are recognized with piwik.",
+ "homepage":"http:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager",
+ "createdDateTime":"2014-12-23 01:14:53",
+ "donate":{"paypal":"test3@example.com",
+ "flattr":null,"bitcoin":null},"support":[],"isTheme":false,"keywords":["referrer",
+ "search",
+ "engine",
+ "social"],"basePrice":0,"authors":[{"name":"Stefan Giehl",
+ "email":"test9@example.com",
+ "homepage":"http:\/\/github.com\/sgiehl"}],"repositoryUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager",
+ "lastUpdated":"2014-12-23 01:15:17",
+ "latestVersion":"1.1",
+ "numDownloads":0,"screenshots":[],"previews":[],"activity":{"numCommits":"72",
+ "numContributors":"1",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+ "release":"2014-12-23 01:14:53",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager\/commits\/v1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ReferrersManager\/download\/1.0"},{"name":"1.1",
+ "release":"2014-12-23 01:15:17",
+ "requires":{"piwik":">=2.0.4",
+ "php":">=5.3.0"},"readme":"# Piwik Referrers Manager Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ReferrersManager.png?branch=master)](https:\/\/travis-ci.org\/sgiehl\/piwik-plugin-ReferrersManager) [![Flattr this git repo](http:\/\/api.flattr.com\/button\/flattr-badge-large.png)](https:\/\/flattr.com\/submit\/auto?user_id=sgiehl&url=https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager&title=Piwik Plugin Referrers Manager&language=&tags=github&category=software) \n\n\n## Description\n\nThis plugin allows to view and manage custom search engines and social networks that are recognized with piwik.\n\n### Requirements\n\n[Piwik](https:\/\/github.com\/piwik\/piwik) 2.0.4 or higher is required.\n\n### Features\n\n- Shows a list of all search engines and social networks defined in Piwik core.\n- Abillity to manage custom search engines and social networks\n- Abillity to disable\/enable Piwik's default social network list\n\n## Changelog\n\n- 1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [stefan@piwik.org](mailto:stefan@piwik.org)\n\n## Contribute\n\nFeel free to create issues and pull requests.\n\n## License\n\nGPLv3 or later\n\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/sgiehl\/piwik-plugin-ReferrersManager\/commits\/v1.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin allows to view and manage custom search engines and social networks that are recognized with piwik.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p><a href=\"https:\/\/github.com\/piwik\/piwik\">Piwik<\/a> 2.0.4 or higher is required.<\/p>\n\n<h3>Features<\/h3>\n\n<ul><li>Shows a list of all search engines and social networks defined in Piwik core.<\/li>\n<li>Abillity to manage custom search engines and social networks<\/li>\n<li>Abillity to disable\/enable Piwik's default social network list<\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ReferrersManager\/download\/1.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"RerUserDates",
+ "displayName":"Rer User Dates",
+ "owner":"RegioneER",
+ "description":"Hide custom date range selection from calendar, avoid users to set ranges in their default profile",
+ "homepage":"https:\/\/RegioneER.github.io\/projects\/",
+ "createdDateTime":"2014-05-13 11:40:04",
+ "donate":{"paypal":"supporters@piwik.org",
+ "flattr":"https:\/\/flattr.com\/thing\/131552\/Piwik-Web-Analytics-Open-Source",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/RegioneER\/RerUserDates",
+ "lastUpdated":"2015-02-05 09:36:03",
+ "latestVersion":"1.3.0",
+ "numDownloads":4930,"screenshots":[],"previews":[],"activity":{"numCommits":"28",
+ "numContributors":"3",
+ "lastCommitDate":"2015-02-05 09:35:05"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.1",
+ "release":"2014-05-13 11:40:04",
+ "requires":{"piwik":">=2.2.3b4"},"readme":"",
+ "numDownloads":30,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.0.1"},{"name":"1.0.2",
+ "release":"2014-05-14 14:14:07",
+ "requires":{"piwik":">=2.2.3b4"},"readme":"",
+ "numDownloads":53,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.0.2"},{"name":"1.1.0",
+ "release":"2014-05-16 13:12:05",
+ "requires":{"piwik":">=2.2.3b4"},"readme":"",
+ "numDownloads":72,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.1.0"},{"name":"1.1.1a",
+ "release":"2014-05-19 07:32:03",
+ "requires":{"piwik":">=2.2.3b4"},"readme":"",
+ "numDownloads":125,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.1.1a"},{"name":"1.2.0",
+ "release":"2014-05-29 15:46:04",
+ "requires":{"piwik":">=2.2.3-b4"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.0"},{"name":"1.2.1",
+ "release":"2014-05-29 16:00:04",
+ "requires":{"piwik":">=2.2.3-b4"},"readme":"",
+ "numDownloads":150,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.1"},{"name":"1.2.2",
+ "release":"2014-06-17 14:28:05",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":9,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.2"},{"name":"1.2.3",
+ "release":"2014-06-17 14:50:05",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":20,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.3"},{"name":"1.2.4",
+ "release":"2014-06-18 14:36:05",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":171,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.4"},{"name":"1.2.5",
+ "release":"2014-07-08 07:20:05",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":1664,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.5"},{"name":"1.2.6",
+ "release":"2015-01-29 13:50:04",
+ "requires":{"piwik":">=2.3.0"},"readme":"",
+ "numDownloads":78,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/2.0.5",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.2.6"},{"name":"1.3.0",
+ "release":"2015-02-05 09:36:03",
+ "requires":{"piwik":">=2.8.0"},"readme":"# Piwik RerUserDates Plugin\n\n## Description\n\nThis [Piwik](http:\/\/piwik.org) Plugin lets you hide custom date range selection from calendar for regular users,\nalso lets you avoid users setting ranges as default value in their profile.\n\nEach time users asks for ranged date reports, Piwik builds it on the fly during user's browsing.\nThis slows down your server when there is a load of visits and a large number of tracked websites.\nAs you can see this action is resource intensive so when it happens, live websites tracking may become slow or inaccurate.\n\nInstalling this plugin you remove choices in the field _\"Report date to load by default\"_ in _User Settings page_ for all regular users.\nSuperadmin users setting page remains untouched and administrators will see only a notification about plugin's current behavior.\n\nAnother plugin's feature is regular users can't select any more a custom range in the calendar but Superadmins still can build reports.\n\nYou can enable or disable the two features independently by clicking checkboxes in the plugin's configuration page available in the super admin user interface.\n\nThis plugin is translated in: English, Italian and French (just send a pull request to include your favourite language, see _Can I contribute_ f.a.q.)\n\n## Installation\n\nPlease, read official [Piwik's documentation](http:\/\/piwik.org\/faq\/plugins\/#faq_21) about it.\n\n## FAQ\n\n__I would like to see a demonstration...__\nJust take a look at _screenshots_ .\n\n__Can I donate to you?__\nThanks but we can't accept money donations because we're a Government Organization.\nAll donation are linked to official Piwik project's accounts, simply help them to help us.\n\n__Can I contribute on development?__\nSure, you're welcome! Just send a [pull request on Github](https:\/\/github.com\/RegioneER\/RerNewSite\/issues)\n\n## Changelog\n\n### v1.0\n\n - First release and Marketplace integration\n - User Manager screen shot and better readme documentation\n\n### v1.1\n\n- Custom date range selection is disabled in the calendar only for regular users. A shorts jQuery snippet hides radio input and submit button.\n- Regular users who chose a range date as their default are now forced to _yesterday_ report just visiting the index page with a warning notification.\n- New French translation by @gaumondp\n\n### v.1.2\n\n- New plugin settings user interface for super admins, some better improvement and few bugs solved.\n- Solved a regression due to a lack of Settings Feature in Piwik's versions below 2.4.0\n- Merged French translation \n- Fixed Piwik compatibility with 2.10 from 2.7 by @ThaDafinser in PR #6\n\n### v.1.3\n\n- Settings environment breaks compatibility with Piwik versions < 2.8.0, thanks to @ThaDafinser.\n\n## License\n\n[GPL v3](http:\/\/www.gnu.org\/licenses\/gpl-3.0-standalone.html) or later\n\n## Support\n\nYou can ask for support and your feedback is appreciated at plugin's [issue center on Github](https:\/\/github.com\/RegioneER\/RerUserDates\/issues).\n",
+ "numDownloads":2558,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RegioneER\/RerUserDates\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This <a href=\"http:\/\/piwik.org\">Piwik<\/a> Plugin lets you hide custom date range selection from calendar for regular users,\nalso lets you avoid users setting ranges as default value in their profile.<\/p>\n\n<p>Each time users asks for ranged date reports, Piwik builds it on the fly during user's browsing.\nThis slows down your server when there is a load of visits and a large number of tracked websites.\nAs you can see this action is resource intensive so when it happens, live websites tracking may become slow or inaccurate.<\/p>\n\n<p>Installing this plugin you remove choices in the field <em>\"Report date to load by default\"<\/em> in <em>User Settings page<\/em> for all regular users.\nSuperadmin users setting page remains untouched and administrators will see only a notification about plugin's current behavior.<\/p>\n\n<p>Another plugin's feature is regular users can't select any more a custom range in the calendar but Superadmins still can build reports.<\/p>\n\n<p>You can enable or disable the two features independently by clicking checkboxes in the plugin's configuration page available in the super admin user interface.<\/p>\n\n<p>This plugin is translated in: English, Italian and French (just send a pull request to include your favourite language, see <em>Can I contribute<\/em> f.a.q.)<\/p>\n\n",
+ "faq":"<p><strong>I would like to see a demonstration...<\/strong>\nJust take a look at <em>screenshots<\/em> .<\/p>\n\n<p><strong>Can I donate to you?<\/strong>\nThanks but we can't accept money donations because we're a Government Organization.\nAll donation are linked to official Piwik project's accounts, simply help them to help us.<\/p>\n\n<p><strong>Can I contribute on development?<\/strong>\nSure, you're welcome! Just send a <a href=\"https:\/\/github.com\/RegioneER\/RerNewSite\/issues\">pull request on Github<\/a><\/p>",
+ "documentation":"",
+ "changelog":"<h3>v1.0<\/h3>\n\n<ul><li>First release and Marketplace integration<\/li>\n<li>User Manager screen shot and better readme documentation<\/li>\n<\/ul><h3>v1.1<\/h3>\n\n<ul><li>Custom date range selection is disabled in the calendar only for regular users. A shorts jQuery snippet hides radio input and submit button.<\/li>\n<li>Regular users who chose a range date as their default are now forced to <em>yesterday<\/em> report just visiting the index page with a warning notification.<\/li>\n<li>New French translation by @gaumondp<\/li>\n<\/ul><h3>v.1.2<\/h3>\n\n<ul><li>New plugin settings user interface for super admins, some better improvement and few bugs solved.<\/li>\n<li>Solved a regression due to a lack of Settings Feature in Piwik's versions below 2.4.0<\/li>\n<li>Merged French translation <\/li>\n<li>Fixed Piwik compatibility with 2.10 from 2.7 by @ThaDafinser in PR #6<\/li>\n<\/ul><h3>v.1.3<\/h3>\n\n<ul><li>Settings environment breaks compatibility with Piwik versions &lt; 2.8.0, thanks to @ThaDafinser.<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/RerUserDates\/download\/1.3.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SecurityInfo",
+ "displayName":"Security Info",
+ "owner":"piwik",
+ "description":"Provides security information about your PHP environment and offers suggestions based on PhpSecInfo from the PHP Security Consortium.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 01:17:19",
+ "donate":{},"support":[],"isTheme":false,"keywords":["security",
+ "phpsec"],"basePrice":0,"authors":[{"name":"Piwik",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo",
+ "lastUpdated":"2014-12-23 01:18:41",
+ "latestVersion":"1.0.4",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/SecurityInfo\/images\/Security_Info.png"],"previews":[],"activity":{"numCommits":"150",
+ "numContributors":"7",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":true,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.3",
+ "release":"2014-12-23 01:17:21",
+ "requires":{"piwik":">=2.0.4-b5",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo\/commits\/1.0.3",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SecurityInfo\/download\/1.0.3"},{"name":"1.0.4",
+ "release":"2014-12-23 01:18:41",
+ "requires":{"piwik":">=2.0.4-b5",
+ "php":">=5.3.0"},"readme":"# Piwik SecurityInfo Plugin\n\n## Description\n\nWe highly recommend that all Piwik administrators enable the SecurityInfo plugin, and then view the Settings. The plugin is a tool in a multilayered security approach.\n\nPerformed checks include for instance usage of latest PHP version, usage of latest Piwik version, usage of PHP ini settings like magic_quotes_gpc and more. \n\n## FAQ\n\n__Does the plugin replace secure development practices or audit the code\/application?__\n\nNo, it doesn't. It just gives you some information based on PhpSecInfo from the PHP Security Consortium.\n\n## Changelog\n\n1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo\/commits\/1.0.4",
+ "readmeHtml":{"description":"\n\n<p>We highly recommend that all Piwik administrators enable the SecurityInfo plugin, and then view the Settings. The plugin is a tool in a multilayered security approach.<\/p>\n\n<p>Performed checks include for instance usage of latest PHP version, usage of latest Piwik version, usage of PHP ini settings like magic_quotes_gpc and more.<\/p>\n\n",
+ "faq":"<p><strong>Does the plugin replace secure development practices or audit the code\/application?<\/strong><\/p>\n\n<p>No, it doesn't. It just gives you some information based on PhpSecInfo from the PHP Security Consortium.<\/p>",
+ "documentation":"",
+ "changelog":"<p>1.0 Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/SecurityInfo\/download\/1.0.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ServerMonitor",
+ "displayName":"Server Monitor",
+ "owner":"Invision-Technology-Soultions",
+ "description":"Use Piwik as a front-end application to the Munin server monitoring tool. This is a Piwik plugin that reads the raw RRD data files from your Munin mas",
+ "homepage":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor",
+ "createdDateTime":"2015-07-13 06:44:04",
+ "donate":{"paypal":"support@invisionit.com.au",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor",
+ "lastUpdated":"2015-08-08 07:10:03",
+ "latestVersion":"0.1.1",
+ "numDownloads":2514,"screenshots":[],"previews":[],"activity":{"numCommits":"12",
+ "numContributors":"1",
+ "lastCommitDate":"2015-08-08 07:09:13"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-07-13 06:44:04",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":312,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ServerMonitor\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-08-08 07:10:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"# Piwik ServerMonitor Plugin\n\n## Description\n\nUse [Piwik](http:\/\/piwik.org\/) as your analytics platform for statistics collected by [Munin server monitoring](http:\/\/munin-monitoring.org\/) tool. \n\nThis is a [Piwik](http:\/\/piwik.org\/) plugin that reads the raw RRD files from your Munin master server. \n\nThis enhances the Munin functionality by providing all the great benefits of Piwik, such as\n \n* Real time data\n* Customizable Dashboards\n* Enhanced Graphing\n* Access Munin data using Piwik API\n* TODO: Access Munin data using Piwik Mobile\n* TODO: Scheduled reports \n* TODO: Custom alerts for Server Monitoring - using [Piwik CustomAlerts plugin](https:\/\/github.com\/piwik\/plugin-CustomAlerts) \n\n## Screenshots\n\nThe following screenshots show how Munin is integrated with Piwik Analytics platform.\n\n__Piwik Menu__\n\nThe Piwik Menu is automatically populated based on the Munin configuration.\n\n![Piwik Menu](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/menu.png)\n\nYou can filter results based on Munin node server.\n\n![Server Filter](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/serverfilter.png)\n\n__Piwik Graphs__\n\nBelow are some example graphs that are created based on Munin data.\n\n![Bind monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/bind.png)\n![Ngnix monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/nginx.png)\n![CPU monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/cpu.png)\n![Memory monitoring](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/memory.png)\n\n__Piwik Dashboard Widgets__\n\nAll Munin metrics are available as dashboard widgets, allowing you to create custom dashboards for Server Monitoring.\n\n![Widgets](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/widgets.png)\n\n![Custom Dashboard](https:\/\/raw.githubusercontent.com\/Invision-Technology-Soultions\/ServerMonitor\/master\/screenshots\/dashboard.png)\n\n## Requirements\n\n* Requires [Piwik](http:\/\/piwik.org\/) (Tested >=2.13) and [Munin server monitoring](http:\/\/guide.munin-monitoring.org\/en\/latest\/master\/) (Tested 1.4.6) installed on same server.\n* [PHP RRD Functions](http:\/\/php.net\/manual\/en\/book.rrd.php) (Tested 1.1.3)\n* Piwik requires read-only access to Munin datafile and RRD files located in: \/var\/lib\/munin\/ \n\n## Installation\n\n* Ensure you meet the above requirements\n* Install via Piwik Marketplace\n\n## Roadmap\n \n* Integration with Piwik Scheduled reports\n* Integration with Piwik Custom Alerts\n* Integration with Piwik Mobile App\n* Support data collection from remote Munin master\n* Store Munin RRD data in Piwik database for historical statistics \n\n## Changelog\n\n* 0.1.0 - First beta\n* 0.1.5 - Tested Munin v2.25, Support Piwik Periods: Week, Month, Year\n\n## License\n\nGPL v3 or later\n\n## Support\n\nIf you require proffesional services, please contact us at [support@invisionit.com.au](mailto:support@invisionit.com.au)",
+ "numDownloads":2202,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/Invision-Technology-Soultions\/ServerMonitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Use <a href=\"http:\/\/piwik.org\/\">Piwik<\/a> as your analytics platform for statistics collected by <a href=\"http:\/\/munin-monitoring.org\/\">Munin server monitoring<\/a> tool.<\/p>\n\n<p>This is a <a href=\"http:\/\/piwik.org\/\">Piwik<\/a> plugin that reads the raw RRD files from your Munin master server.<\/p>\n\n<p>This enhances the Munin functionality by providing all the great benefits of Piwik, such as<\/p>\n\n<ul><li>Real time data<\/li>\n<li>Customizable Dashboards<\/li>\n<li>Enhanced Graphing<\/li>\n<li>Access Munin data using Piwik API<\/li>\n<li>TODO: Access Munin data using Piwik Mobile<\/li>\n<li>TODO: Scheduled reports <\/li>\n<li>TODO: Custom alerts for Server Monitoring - using <a href=\"https:\/\/github.com\/piwik\/plugin-CustomAlerts\">Piwik CustomAlerts plugin<\/a> <\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0 - First beta<\/li>\n<li>0.1.5 - Tested Munin v2.25, Support Piwik Periods: Week, Month, Year<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ServerMonitor\/download\/0.1.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ShibbolethLogin",
+ "displayName":"Shibboleth Login",
+ "owner":"pouyana",
+ "description":"Shibboleth Login Plugin for Piwik",
+ "homepage":"https:\/\/github.com\/pouyana\/LoginShibboleth",
+ "createdDateTime":"2015-08-10 12:00:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth",
+ "lastUpdated":"2015-09-07 08:10:03",
+ "latestVersion":"1.1.4",
+ "numDownloads":1603,"screenshots":[],"previews":[],"activity":{"numCommits":"10",
+ "numContributors":"1",
+ "lastCommitDate":"2015-09-07 08:18:19"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.1.2",
+ "release":"2015-08-10 12:00:03",
+ "requires":{"piwik":">=2.2.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ShibbolethLogin\/download\/1.1.2"},{"name":"1.1.3",
+ "release":"2015-08-10 12:10:02",
+ "requires":{"piwik":">=2.2.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":187,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ShibbolethLogin\/download\/1.1.3"},{"name":"1.1.4",
+ "release":"2015-09-07 08:10:03",
+ "requires":{"piwik":">=2.2.0",
+ "php":">=5.3.0"},"readme":"# Login Shibboleth\nLogin Shibboleth replaces the default Piwik Login plug-in and offers the user a way to incorporate existing Shibboleth with Piwik.\n\n# Pre-Requirement\nTo use this plug-in you should have the following pre-requirements set:\n- Your Shibboleth system is up and running and is connected to apache.\n- You can access some data from $\\_SERVER so, you can read user data from $\\_SERVER.\n- If you want to combine Shibboleth with LDAP, you should have php5-ldap or your distribution version of php-ldap installed.\n- You are familiar with PHP coding, so you can change the custom parameters and function to suite your system.\n- You follow the same user Model as Piwik. If you change the user Model to contain some extra informations, you should also change this plug-in's handling on the way users are created.\n- This plug-in supports the following user informations retrieval:\n - username (login)\n - email\n - alias (name or fullname)\n - token (random string length 32chars)\n - websites (access_level and websites id)\n\n# Configuration\nFor the configuration following settings should be set in config\/config.ini.php\n\n## Datasource:\n\n```\n[datasource] \ndatasource[\"alias\"] = \"shib\" \ndatasource[\"login\"] = \"shib\"\ndatasource[\"email\"] = \"shib\"\ndatasource[\"websites\"] = \"shib, ldap\"\ndatasource[\"superuser\"] = \"shib\"\n```\n\nThe datasource helps you to change the way this plug-in accesses the information needed to generate or add users to Piwik. Normally Shibboleth (shib) should suffice. The software will look at the options in config.ini.php as it is ordered. If you want Shibboleth to prevail, add it first. If your first choice for an option is LDAP add (ldap) first. The MySQL database will automatically comes to help if none of the options give a valid result, which is most of the time unlikely. if your User Model is different, you can set other options here. If you use other resources than this tree, you can also define it here and the use the AuthLib class as parent class and extend it to your own Model.\n\n## Shib:\n\n```\n[shib]\nshib[\"login\"] = \"uid\"\nshib[\"alias\"] = \"fullName\"\nshib[\"email\"] = \"mail\"\nshib[\"superuser\"] = \"groupMembership\"\nshib[\"superuser_type\"] = \"string\"\nshib[\"superuser_param\"] = \"cn=RZ-Piwik-Admin\"\nshib[\"to_get_view\"] = \"groupMembership\"\nshib[\"to_get_view_type\"] = \"string\"\nshib[\"to_get_view_param\"] = \"cn=RZ-Piwik-View\"\nshib[\"to_get_admin\"] = \"groupMembership\"\nshib[\"to_get_admin_type\"] = \"string\"\nshib[\"to_get_admin_param\"] = \"cn=RZ-Piwik-View\"\n```\n\nIn shib you can set the Shibboleth parameter in which user data is caught. if you have some other settings it is possible to set them here. The information would be available in Shibboleth class.\n\n## LDAP:\n\n```\n[ldap]\nldap[\"host\"] = \"ldaphost\"\nldap[\"port\"] = 636\nldap[\"user\"] = \"binduser\"\nldap[\"password\"] = \"bindpassword\"\nldap[\"dn\"] = \"binddn\"\nldap[\"to_filter_view\"] = \"(userfilter)\"\nldap[\"to_get_view\"] = \"website attr\"\nldap[\"to_get_type_view\"] = \"string\"\nldap[\"to_filter_admin\"] = \"\"\nldap[\"to_get_admin\"] = \"\"\nldap[\"to_get_type_admin\"] = \"\"\n```\n\nThe same applies here just like the Shibboleth settings above.\n\n## Apache Settings\nTo exclude the public part of piwik, mainly the tracker and piwik.php from the Shibboleth Auth, the following settings have been set in apache VirtualHost.\n\n###Apache 2.2\n```\n<LocationMatch \"^\/(?!piwik.js|piwik.php|opt_out.php)\">\n AuthType shibboleth\n ShibRequireSession On\n require shibboleth\n require valid-user\n satisfy any\n<\/LocationMatch>\n```\n\n###Apache 2.4\n```\n<LocationMatch \"^\/(?!piwik.js|piwik.php|opt_out.php)\">\n AuthType Shibboleth\n ShibrequestSetting requireSession 1\n Require valid-user\n satisfy all\n<\/LocationMatch>\n```\n\n# License\n> The MIT License (MIT)\n\n> Copyright (c) 2015 Pouyan Azari \n> Copyright (c) 2015 University of W\u00fcrzburg\n\n> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n> THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "numDownloads":1415,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/pouyana\/LoginShibboleth\/commits\/0.1.3",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/ShibbolethLogin\/download\/1.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ShortcodeTracker",
+ "displayName":"Shortcode Tracker",
+ "owner":"mgazdzik",
+ "description":"Plugin allowing user to create shortcodes and track their usage within Piwik. Also integrates with UI to deliver user-friendly interaction.",
+ "homepage":"http:\/\/mgazdzik.pl\/shortcodetracker",
+ "createdDateTime":"2015-11-11 12:46:02",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker",
+ "lastUpdated":"2015-12-12 16:54:03",
+ "latestVersion":"0.6.2",
+ "numDownloads":1454,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2015-12-20 11:58:06"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.4.3",
+ "release":"2015-11-11 12:46:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.1.8",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.4.3"},{"name":"0.4.5",
+ "release":"2015-11-11 12:52:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":214,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.1.9",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.4.5"},{"name":"0.5.0",
+ "release":"2015-12-10 21:22:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":46,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/1.0.3",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.5.0"},{"name":"0.6.0",
+ "release":"2015-12-12 16:48:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.0.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.6.0"},{"name":"0.6.2",
+ "release":"2015-12-12 16:54:03",
+ "requires":{"piwik":">=2.14.0"},"readme":"# ShortcodeTracker Plugin\n\n| Branch | Status |\n| --- | --- |\n| Master | [![Build Status](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker.svg?branch=master)](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker) |\n| Develop | [![Build Status](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker.svg?branch=develop)](https:\/\/travis-ci.org\/mgazdzik\/plugin-ShortcodeTracker) |\n\n## Description\n\nPlugin allows to turn Piwik instance into URL Shortener.\n\nBasic features:\n\n* easily create shortcode from any page you track in Piwik (integration with Actions report UI),\n* create shortcode for any custom URL you want,\n* perform redirects using your Piwik instance,\n* get usage statistics for shortcodes handled by your instance\n * get best performing URL's on websites you track,\n * external URLs redirect statistics,\n* see which URLs are being shortened and visited most often - also for external URLs not tracked in your Piwik.\n\nGoodness coming:\n\n* for redirect performance improvement, store your shortcodes in storage like Memcache or Redis,\n* attributing shortcode redirects with actual visits on your page,\n* more advanced reports,\n\nBefore using, please read content in [`Setup`](https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker#setup) section \nas it contains steps required to make plugin work with your Piwik instance!\n\n## Usage\n\nAfter correctly setting up this plugin (please see section below), you are ready for shortening your Urls.\n\nThere is one new section in top reporting menu called \"Shortcodes\".\n\nThis view gives you possibility to shorten any URL you want and operate with shortcode retrieved.\n\nAdditionally this plugin integrates with Page URL's report - hover over URL you want to shorten and click scissors icon.\n\nThis will call popup with appropriate shortcode, so you don't need to manually shorten any URL you already track with your\nPiwik instance.\n\nEnjoy!\n\n## Setup\n\n### Webserver\nBesides of functional Piwik instance with this plugin enabled you will also need special configuration for your webserver.\n\nIt's purpose is to redirect any short url hitting your server to proper API method doing the magic.\n\nBelow you can find example configurations\n\n* [for NGINX webserver vhost](docs\/nginx_config.md)\n* [for Apache2 webserver .htaccess file](docs\/apache_config.md)\n\n**Please be aware that in your case this configuration may be different, so please contact your system\/webserver\nadmin for advisory!**\n\n\n### Plugin\n\nBefore you can start shortening your URLs you need to perform following steps:\n\n* go to Administration -> Plugins,\n* find \"ShortcodeTracker\" plugin and click `enable`,\n\nAfter you confirm that plugin has been enabled:\n* go to Administration -> Plugin Settings,\n* go to ShortcodeTracker section,\n* fill in Shortener URL input,\n* if you want to track external sites, you need to decide to which Piwik page those actions will be attributed (see\nExternal redirects tracking section below),\n* click 'save',\n* **additionally you have to make Shortener URL a trusted host for Piwik by entering it in settings section**,\n\nThis is necessary to perform, as otherwise you will not be able to generate shortened URLs or use them with Piwik.\n\n### External redirects tracking\n\nIt is possible to also track redirect actions for external URLs (i.e. which URL doesn't match any page tracked within\nyour Piwik instance). However, it is required to decide to which site this traffic will be attributed to.\n\nIt is recommended to create a separate Website in Piwik instance only dedicated to this traffic, so that other websites\nreports won't be affected by redirect events.\n\nTo select which site should collect redirects:\n\n* go to `Plugin Settings` section,\n* from dropdown you can select site for external redirects,\n* alternatively you can select not to track external redirects by setting `Do not collect external shortcode redirects`,\n* click save\n\n## Changelog\n\n* 0.6.2\n * Sort out mistakenly pushed tag\n\n\n* 0.6.0\n * Shortcode usage report added link to shortened page to for easier recognition of what is being shortened and used most,\n * Display summarized report displaying which URLs were visited most via shortcode redirects,\n\n\n* 0.5.0\n * Add statistics collection for redirects to pages not tracked with Piwik (external pages)\n * collect redirect statistics into Site you choose in interface,\n * aggregate and display report for external shortcodes in separate view\n\n\n* 0.4.5\n * fix README formating for sake of Plugin market\n \n \n* 0.4.4\n * add license to plugin.json\n \n \n* 0.4.3\n * fix plugin.json structure for Plugin market\n\n\n* 0.4.2\n * Added missing changelog\n\n\n* 0.4.0\n * Piwik Plugin market release\n\n\n* 0.3.0\n * Tuned travis build file\n * Mark Shortcodes as internal during creating\n * Track custom event with \"redirect\" category upon each redirect for internal Shortcode\n * Secure API methods from anonymous user usage\n * Add shortcode report for internally tracked URLs:\n * Create new visit during redirect (store referrer)\n * Add Shortcode usage report based on Custom Events plugin API\n\n\n* 0.2.0\n * added Travis build badges for master and develop branches\n * fixed existing unit tests\n * slight refactor in terms of class naming\n * added integration test for API methods\n\n\n* 0.1.0\n * API allowing to create and retrieve shortcodes,\n * basic storage in MySQL, but possible to add other caching layers - for ex. Memcache, Redis,\n * unit tests covering core logic,\n * redirect API method that will preform appropriate redirects for incoming shortcode requests,\n * basic setup guide involving Apache2 and Nginx configs,\n * settings section allowing user to configure Shortener base URL (which may and should be different than Piwik instance)\n\n## Backlog\n\n\n\n* Migrate plugin to work with Piwik 2.15 LTS version,\n* Add advanced report for each shortcode\n * stitch every redirect event with following action,\n * add new referrer type (shortcode),\n * aggregate statistics,\n * add segment for referrer,\n* Refactor plugin so it's possible to cover Model.php with tests,\n* Add queue system for tracking redirect events to improve performance of redirect feature,\n* Add integration test for redirect tracking,\n* Add support for at least one caching system (redis\/memcache),\n* Improve HTML elements designs\/styles,\n* Throw exception\/signal in UI in case Shortener URL is not changed,\n* Introduce Shortener base URL validation (in Settings section),\n* introduce value object to store Shortcode,\n* handle case when given idsite has multiple domains assigned (currently it's only for main domain URL),\n\n\n## Support\n\nPlease direct any feedback regarding plugin to Github repository issue tracker available at\n[https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/issues](https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/issues).\n\n\n## Credits\nScissors icon visible in Actions report is originating from\n[https:\/\/icons8.com\/](https:\/\/icons8.com\/).\n",
+ "numDownloads":1193,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker\/commits\/0.43b",
+ "readmeHtml":{"description":"\n\n<p>Plugin allows to turn Piwik instance into URL Shortener.<\/p>\n\n<p>Basic features:<\/p>\n\n<ul><li>easily create shortcode from any page you track in Piwik (integration with Actions report UI),<\/li>\n<li>create shortcode for any custom URL you want,<\/li>\n<li>perform redirects using your Piwik instance,<\/li>\n<li>get usage statistics for shortcodes handled by your instance\n\n<ul><li>get best performing URL's on websites you track,<\/li>\n<li>external URLs redirect statistics,<\/li>\n<\/ul><\/li>\n<li>see which URLs are being shortened and visited most often - also for external URLs not tracked in your Piwik.<\/li>\n<\/ul><p>Goodness coming:<\/p>\n\n<ul><li>for redirect performance improvement, store your shortcodes in storage like Memcache or Redis,<\/li>\n<li>attributing shortcode redirects with actual visits on your page,<\/li>\n<li>more advanced reports,<\/li>\n<\/ul><p>Before using, please read content in <a href=\"https:\/\/github.com\/mgazdzik\/plugin-ShortcodeTracker#setup\"><code>Setup<\/code><\/a> section \nas it contains steps required to make plugin work with your Piwik instance!<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<ul><li><p>0.6.2<\/p>\n\n<ul><li>Sort out mistakenly pushed tag<\/li>\n<\/ul><\/li>\n<li><p>0.6.0<\/p>\n\n<ul><li>Shortcode usage report added link to shortened page to for easier recognition of what is being shortened and used most,<\/li>\n<li>Display summarized report displaying which URLs were visited most via shortcode redirects,<\/li>\n<\/ul><\/li>\n<li><p>0.5.0<\/p>\n\n<ul><li>Add statistics collection for redirects to pages not tracked with Piwik (external pages)\n\n<ul><li>collect redirect statistics into Site you choose in interface,<\/li>\n<li>aggregate and display report for external shortcodes in separate view<\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<li><p>0.4.5<\/p>\n\n<ul><li>fix README formating for sake of Plugin market<\/li>\n<\/ul><\/li>\n<li><p>0.4.4<\/p>\n\n<ul><li>add license to plugin.json<\/li>\n<\/ul><\/li>\n<li><p>0.4.3<\/p>\n\n<ul><li>fix plugin.json structure for Plugin market<\/li>\n<\/ul><\/li>\n<li><p>0.4.2<\/p>\n\n<ul><li>Added missing changelog<\/li>\n<\/ul><\/li>\n<li><p>0.4.0<\/p>\n\n<ul><li>Piwik Plugin market release<\/li>\n<\/ul><\/li>\n<li><p>0.3.0<\/p>\n\n<ul><li>Tuned travis build file<\/li>\n<li>Mark Shortcodes as internal during creating<\/li>\n<li>Track custom event with \"redirect\" category upon each redirect for internal Shortcode<\/li>\n<li>Secure API methods from anonymous user usage<\/li>\n<li>Add shortcode report for internally tracked URLs:\n\n<ul><li>Create new visit during redirect (store referrer)<\/li>\n<li>Add Shortcode usage report based on Custom Events plugin API<\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<li><p>0.2.0<\/p>\n\n<ul><li>added Travis build badges for master and develop branches<\/li>\n<li>fixed existing unit tests<\/li>\n<li>slight refactor in terms of class naming<\/li>\n<li>added integration test for API methods<\/li>\n<\/ul><\/li>\n<li><p>0.1.0<\/p>\n\n<ul><li>API allowing to create and retrieve shortcodes,<\/li>\n<li>basic storage in MySQL, but possible to add other caching layers - for ex. Memcache, Redis,<\/li>\n<li>unit tests covering core logic,<\/li>\n<li>redirect API method that will preform appropriate redirects for incoming shortcode requests,<\/li>\n<li>basic setup guide involving Apache2 and Nginx configs,<\/li>\n<li>settings section allowing user to configure Shortener base URL (which may and should be different than Piwik instance)<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ShortcodeTracker\/download\/0.6.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SimplePageBuilder",
+ "displayName":"Simple Page Builder",
+ "owner":"PiwikPRO",
+ "description":"Lets you add a custom page to Piwik. The page will be visible to all users in the top menu.",
+ "homepage":"https:\/\/github.com\/PiwikPRO\/SimplePageBuilder",
+ "createdDateTime":"2014-12-08 04:50:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder",
+ "lastUpdated":"2016-03-08 12:08:04",
+ "latestVersion":"1.2.0",
+ "numDownloads":3892,"screenshots":[],"previews":[],"activity":{"numCommits":"38",
+ "numContributors":"5",
+ "lastCommitDate":"2016-04-15 22:58:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.1",
+ "release":"2014-12-08 04:50:03",
+ "requires":{"piwik":">=2.10.0-b2"},"readme":"",
+ "numDownloads":14,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.1"},{"name":"1.0.2",
+ "release":"2014-12-09 02:18:04",
+ "requires":{"piwik":">=2.10.0-b2"},"readme":"",
+ "numDownloads":52,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.2"},{"name":"1.0.3",
+ "release":"2014-12-12 14:08:03",
+ "requires":{"piwik":">=2.10.0-b2"},"readme":"",
+ "numDownloads":289,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.3"},{"name":"1.0.4",
+ "release":"2015-01-19 14:28:03",
+ "requires":{"piwik":">=2.9.0"},"readme":"",
+ "numDownloads":1234,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.4"},{"name":"1.0.5",
+ "release":"2015-07-28 10:00:03",
+ "requires":{"piwik":">=2.9.0"},"readme":"",
+ "numDownloads":557,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.0.5"},{"name":"1.1.0",
+ "release":"2015-10-21 22:20:03",
+ "requires":{"piwik":">=2.15.0-b15"},"readme":"",
+ "numDownloads":1124,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.1.0"},{"name":"1.2.0",
+ "release":"2016-03-08 12:08:04",
+ "requires":{"piwik":">=2.16.0"},"readme":"# Piwik CustomPage Plugin\n\nMaster [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder)\nDevelop [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SimplePageBuilder)\n\n## Description\n\nThis plugin lets you add a page with custom HTML content to Piwik. The page will be linked in the top menu and can be edited by the super user.\n\n## Changelog\n\n**1.2.0**\n\n- PPCDEV-2609 Compatibility with Piwik 2.16.0\n\n**1.1.0**\n\n- Compatibility with Piwik 2.15.\n\n**1.0.3**\n\n- added composer.json\n\n**1.0.2**\n\n- Correctly replace {date} when period is range.\n- In example use H2 in the sample text for the custom page title\n\n**1.0.0**\n\n- First stable version\n\n## Support\n\nPlease direct any feedback to [SimplePageBuilder issues on GitHub](https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/issues).\n",
+ "numDownloads":622,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SimplePageBuilder\/commits\/v0.1.2",
+ "readmeHtml":{"description":"\n\n<p>This plugin lets you add a page with custom HTML content to Piwik. The page will be linked in the top menu and can be edited by the super user.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p><strong>1.2.0<\/strong><\/p>\n\n<ul><li>PPCDEV-2609 Compatibility with Piwik 2.16.0<\/li>\n<\/ul><p><strong>1.1.0<\/strong><\/p>\n\n<ul><li>Compatibility with Piwik 2.15.<\/li>\n<\/ul><p><strong>1.0.3<\/strong><\/p>\n\n<ul><li>added composer.json<\/li>\n<\/ul><p><strong>1.0.2<\/strong><\/p>\n\n<ul><li>Correctly replace {date} when period is range.<\/li>\n<li>In example use H2 in the sample text for the custom page title<\/li>\n<\/ul><p><strong>1.0.0<\/strong><\/p>\n\n<ul><li>First stable version<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/SimplePageBuilder\/download\/1.2.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SimpleSysMon",
+ "displayName":"Simple Sys Mon",
+ "owner":"job963",
+ "description":"Simple System Monitor for visualizing system data like cpu load, memory use or network traffic",
+ "homepage":"https:\/\/github.com\/job963\/SimpleSysMon",
+ "createdDateTime":"2014-09-16 07:38:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/job963\/SimpleSysMon",
+ "lastUpdated":"2015-03-15 14:34:04",
+ "latestVersion":"0.3.1",
+ "numDownloads":6929,"screenshots":[],"previews":[],"activity":{"numCommits":"25",
+ "numContributors":"2",
+ "lastCommitDate":"2015-03-15 14:33:05"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-09-16 07:38:04",
+ "requires":{},"readme":"",
+ "numDownloads":53,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-09-17 18:30:04",
+ "requires":{},"readme":"",
+ "numDownloads":3,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.1.1"},{"name":"0.1.3",
+ "release":"2014-09-17 18:50:03",
+ "requires":{},"readme":"",
+ "numDownloads":1108,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.1.3"},{"name":"0.2",
+ "release":"2014-12-09 20:36:03",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.2"},{"name":"0.2.1",
+ "release":"2014-12-09 20:40:04",
+ "requires":{},"readme":"",
+ "numDownloads":936,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.2.1"},{"name":"0.3",
+ "release":"2015-03-01 11:36:04",
+ "requires":{},"readme":"",
+ "numDownloads":339,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.3"},{"name":"0.3.1",
+ "release":"2015-03-15 14:34:04",
+ "requires":{},"readme":"# Piwik Simple System Monitor Plugin\n\n## Description\n\nThis plugin shows how much load your webserver does have, where Piwik (and maybe your main website) is running. Additionally the free or the used memory will be displayed.\n\nThe display will be refreshed automatically as often as you like. This can be setup by yourself in the plugin settings.\n\n\n## Screenshots\n**Table Widget** \n![](https:\/\/github.com\/job963\/SimpleSysMon\/raw\/master\/screenshots\/widgetLiveSysLoad-EN.png)\n\n**Graph Widget** \n![](https:\/\/github.com\/job963\/SimpleSysMon\/raw\/master\/screenshots\/widgetLiveSysLoadBars-EN.png)\n\n**Plugin Settings** \n![](https:\/\/github.com\/job963\/SimpleSysMon\/raw\/master\/screenshots\/settingLiveSysLoad-EN.png)\n\n\n## Installation\n\nInstall it via [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\nOR \n\nInstall manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n ```\n cd plugins\/\n git clone https:\/\/github.com\/job963\/SimpleSysMon.git SimpleSysMon\n ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. Goto Settings -> Plugin Settings an setup the values for the widget.\n\n4. You will now find the widget under the Simple System Monitor -> Live System Load.\n\n## Changelog\n\n* **0.1.0 Initial release**\n * Display of CPU load\n * Display of free or used memory \n\n* **0.1.1 Initial release**\n * Corrections and error trapping for shared websites where the some values aren't accessible \n \n* **0.2.0 Graphical display**\n * Display as bar chart for system load and memory use added \n \n* **0.2.1 Hungarian language**\n * Hungarian language added \n \n* **0.3.0 Bar charts for network and disk**\n * Two new bars for displaying network traffic (upload and download) and disk usage added\n * Additional to the percentage values, the real values are display on hover \n\n\n## FAQ\n\n**How is the CPU load calculated?** \nFor the CPU load the PHP function sys_getloadavg() is used and divided by the number of cores.\n \n**Why is there a difference between free and used memory?** \nThere are three \"memory parts\" under Linux: \n\n* Used memory\n* Cache\n* Free memory\n \nThe sum of these three parts will be equal to the total memory. But only `used memory` and `free memory` are available as options (in settings).\n \n**What is the value for 100% network traffic** \nYou can setup the value for the maximum network traffic in the plugin system settings. The value there must be specified in kB\/s (kilobyte per second). This value is used as 100% network traffic.\n \n**Does the plugin work on a shared webspace?** \nIn the most cases a shared webspace doesn't have access to system information. Therefore in these cases, the plugin cannot be used. The pseudo file system \/proc must be accessible.\n \n**Does the plugin work on Windows system?** \nIf the server where Piwik is running is using Windows as OS, the plugin doesn't work yet. \nIf just your browser is running under Windows (and the server runs under Linux) this plugin works well.\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease report any issues directly in [Github](https:\/\/github.com\/job963\/SimpleSysMon\/issues). \n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+ "numDownloads":4490,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/SimpleSysMon\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin shows how much load your webserver does have, where Piwik (and maybe your main website) is running. Additionally the free or the used memory will be displayed.<\/p>\n\n<p>The display will be refreshed automatically as often as you like. This can be setup by yourself in the plugin settings.<\/p>\n\n",
+ "faq":"<p><strong>How is the CPU load calculated?<\/strong>\nFor the CPU load the PHP function sys_getloadavg() is used and divided by the number of cores.<\/p>\n\n<p><strong>Why is there a difference between free and used memory?<\/strong>\nThere are three \"memory parts\" under Linux:<\/p>\n\n<ul><li>Used memory<\/li>\n<li>Cache<\/li>\n<li>Free memory<\/li>\n<\/ul><p>The sum of these three parts will be equal to the total memory. But only <code>used memory<\/code> and <code>free memory<\/code> are available as options (in settings).<\/p>\n\n<p><strong>What is the value for 100% network traffic<\/strong>\nYou can setup the value for the maximum network traffic in the plugin system settings. The value there must be specified in kB\/s (kilobyte per second). This value is used as 100% network traffic.<\/p>\n\n<p><strong>Does the plugin work on a shared webspace?<\/strong>\nIn the most cases a shared webspace doesn't have access to system information. Therefore in these cases, the plugin cannot be used. The pseudo file system \/proc must be accessible.<\/p>\n\n<p><strong>Does the plugin work on Windows system?<\/strong>\nIf the server where Piwik is running is using Windows as OS, the plugin doesn't work yet.\nIf just your browser is running under Windows (and the server runs under Linux) this plugin works well.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li><p><strong>0.1.0 Initial release<\/strong><\/p>\n\n<ul><li>Display of CPU load<\/li>\n<li>Display of free or used memory <\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.1 Initial release<\/strong><\/p>\n\n<ul><li>Corrections and error trapping for shared websites where the some values aren't accessible <\/li>\n<\/ul><\/li>\n<li><p><strong>0.2.0 Graphical display<\/strong><\/p>\n\n<ul><li>Display as bar chart for system load and memory use added <\/li>\n<\/ul><\/li>\n<li><p><strong>0.2.1 Hungarian language<\/strong><\/p>\n\n<ul><li>Hungarian language added <\/li>\n<\/ul><\/li>\n<li><p><strong>0.3.0 Bar charts for network and disk<\/strong><\/p>\n\n<ul><li>Two new bars for displaying network traffic (upload and download) and disk usage added<\/li>\n<li>Additional to the percentage values, the real values are display on hover <\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/SimpleSysMon\/download\/0.3.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SiteMigration",
+ "displayName":"Site Migration",
+ "owner":"PiwikPRO",
+ "description":"Migrate your website and all website data between two Piwik installations.",
+ "homepage":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration",
+ "createdDateTime":"2014-11-11 21:28:05",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration",
+ "lastUpdated":"2015-11-27 02:46:04",
+ "latestVersion":"1.0.8",
+ "numDownloads":5191,"screenshots":[],"previews":[],"activity":{"numCommits":"70",
+ "numContributors":"7",
+ "lastCommitDate":"2016-05-11 09:27:40"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0.0",
+ "release":"2014-11-11 21:28:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.0-b9"},"readme":"",
+ "numDownloads":77,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.0"},{"name":"1.0.1",
+ "release":"2014-11-12 23:34:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.0-b9"},"readme":"",
+ "numDownloads":127,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.1"},{"name":"1.0.2",
+ "release":"2014-11-17 00:04:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.0-b9"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.2"},{"name":"1.0.3",
+ "release":"2014-11-17 00:06:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.0-b9"},"readme":"",
+ "numDownloads":19,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.3"},{"name":"1.0.4",
+ "release":"2014-11-17 11:06:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.1"},"readme":"",
+ "numDownloads":202,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.4"},{"name":"1.0.5",
+ "release":"2014-11-26 21:26:06",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.1"},"readme":"",
+ "numDownloads":130,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.5"},{"name":"1.0.6",
+ "release":"2014-12-03 03:34:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.9.1"},"readme":"",
+ "numDownloads":174,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.6"},{"name":"1.0.7",
+ "release":"2014-12-21 22:04:05",
+ "requires":{"php":">=5.3.0",
+ "piwik":">=2.10.0-b10"},"readme":"",
+ "numDownloads":2669,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.7"},{"name":"1.0.8",
+ "release":"2015-11-27 02:46:04",
+ "requires":{"php":">=5.3.3",
+ "piwik":">=2.11.0"},"readme":"# Piwik SiteMigration Plugin\n\n[![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SiteMigration.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-SiteMigration)\n\n## Description\n\nMigrate websites, and all the tracking data between two Piwik installations. \n\nThis tool is useful in case you want to merge two Piwik installations, or if you want to move one or several websites to another Piwik server.\n\n### Requirements\n\nTo migrate data from one Piwik server to another server, you must:\n\n * First make sure that both Piwik servers are using the latest Piwik version.\n * You must be able to connect to the Mysql server of the Target Piwik Server.\n * You must run the console command on the Piwik Server that data will be copied from.\n \n### Migrating the data\n\nStart the migration by calling from the command line CLI the following command:\n\n .\/console migration:site idSite --db-prefix piwik_\n \nThe command will ask for the credentials to the target database.\n \nIt will then migrate the data from the current Piwik to the target Piwik.\n\n### Options\n\nRun `.\/console migration:site --help` to get a full list of options.\n \n## FAQ\n\n**How do I migrate site data between two dates only?**\n\nYou can use command options: `--date-from` and `--date-to`.\n\n**How do I migrate tracking log data only, and skip migrating archived data?**\n\nJust add the `--skip-archive-data` option.\n\n\n**How do I migrate the archived data and skip the tracking data?**\n\nJust add the `--skip-log-data` option.\n\n**Can I run the command on the Target Piwik server (where data will be imported)?**\n\nNo, you must run the command from the source Piwik server (the server which contains the data you want to migrate).\n\n## Changelog\n\n**v1.0.7**\n\n- Updated the plugin for compatibility with Piwik 2.10.\n\n**v1.0.6**\n\n- [#6](https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/6): fixed a PHP 5.3 incompatibility\n\n**v1.0.5**\n\n- [#5](https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/5): fixed `Integrity constraint violation: 1048 Column 'idaction_url' cannot be null`\n\n**v1.0.4**\n\n- [#3](https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/3): fixed `--db-prefix` option\n\n**v1.0.3**\n\n- Documentation update\n\n**v1.0.2**\n\n- Documentation update & fixed bug when archive_blob tables are not found \n\n**v1.0.1**\n\n- Documentation update\n\n**v1.0.0**\n\n- First stable release\n- Bugfixes\n\n**v0.1.1**\n\n- Changed license to free plugin\n- Changed name to SiteMigration\n\n**v0.1.0**\n\n- Initial release\n\n## Credits\n\nCreated by [Piwik PRO](http:\/\/piwik.pro\/)\n",
+ "numDownloads":1793,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/commits\/v1.0.0",
+ "readmeHtml":{"description":"\n\n<p>Migrate websites, and all the tracking data between two Piwik installations.<\/p>\n\n<p>This tool is useful in case you want to merge two Piwik installations, or if you want to move one or several websites to another Piwik server.<\/p>\n\n<h3>Requirements<\/h3>\n\n<p>To migrate data from one Piwik server to another server, you must:<\/p>\n\n<ul><li>First make sure that both Piwik servers are using the latest Piwik version.<\/li>\n<li>You must be able to connect to the Mysql server of the Target Piwik Server.<\/li>\n<li>You must run the console command on the Piwik Server that data will be copied from.<\/li>\n<\/ul><h3>Migrating the data<\/h3>\n\n<p>Start the migration by calling from the command line CLI the following command:<\/p>\n\n<pre><code>.\/console migration:site idSite --db-prefix piwik_\n<\/code><\/pre>\n\n<p>The command will ask for the credentials to the target database.<\/p>\n\n<p>It will then migrate the data from the current Piwik to the target Piwik.<\/p>\n\n<h3>Options<\/h3>\n\n<p>Run <code>.\/console migration:site --help<\/code> to get a full list of options.<\/p>\n\n",
+ "faq":"<p><strong>How do I migrate site data between two dates only?<\/strong><\/p>\n\n<p>You can use command options: <code>--date-from<\/code> and <code>--date-to<\/code>.<\/p>\n\n<p><strong>How do I migrate tracking log data only, and skip migrating archived data?<\/strong><\/p>\n\n<p>Just add the <code>--skip-archive-data<\/code> option.<\/p>\n\n<p><strong>How do I migrate the archived data and skip the tracking data?<\/strong><\/p>\n\n<p>Just add the <code>--skip-log-data<\/code> option.<\/p>\n\n<p><strong>Can I run the command on the Target Piwik server (where data will be imported)?<\/strong><\/p>\n\n<p>No, you must run the command from the source Piwik server (the server which contains the data you want to migrate).<\/p>",
+ "documentation":"",
+ "changelog":"<p><strong>v1.0.7<\/strong><\/p>\n\n<ul><li>Updated the plugin for compatibility with Piwik 2.10.<\/li>\n<\/ul><p><strong>v1.0.6<\/strong><\/p>\n\n<ul><li><a href=\"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/6\">#6<\/a>: fixed a PHP 5.3 incompatibility<\/li>\n<\/ul><p><strong>v1.0.5<\/strong><\/p>\n\n<ul><li><a href=\"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/5\">#5<\/a>: fixed <code>Integrity constraint violation: 1048 Column 'idaction_url' cannot be null<\/code><\/li>\n<\/ul><p><strong>v1.0.4<\/strong><\/p>\n\n<ul><li><a href=\"https:\/\/github.com\/PiwikPRO\/plugin-SiteMigration\/issues\/3\">#3<\/a>: fixed <code>--db-prefix<\/code> option<\/li>\n<\/ul><p><strong>v1.0.3<\/strong><\/p>\n\n<ul><li>Documentation update<\/li>\n<\/ul><p><strong>v1.0.2<\/strong><\/p>\n\n<ul><li>Documentation update &amp; fixed bug when archive_blob tables are not found <\/li>\n<\/ul><p><strong>v1.0.1<\/strong><\/p>\n\n<ul><li>Documentation update<\/li>\n<\/ul><p><strong>v1.0.0<\/strong><\/p>\n\n<ul><li>First stable release<\/li>\n<li>Bugfixes<\/li>\n<\/ul><p><strong>v0.1.1<\/strong><\/p>\n\n<ul><li>Changed license to free plugin<\/li>\n<li>Changed name to SiteMigration<\/li>\n<\/ul><p><strong>v0.1.0<\/strong><\/p>\n\n<ul><li>Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/SiteMigration\/download\/1.0.8"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"SnoopyBehavioralScoring",
+ "displayName":"Snoopy Behavioral Scoring",
+ "owner":"spletnik",
+ "description":"User behaviour scoring plugin for piwik. It allows you to score your visitors depending on goals reached, pages visited, email campaigns opened and ot",
+ "homepage":"http:\/\/spletnik.si\/",
+ "createdDateTime":"2015-12-08 20:52:03",
+ "donate":{"paypal":"srle@spletnik.si",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring",
+ "lastUpdated":"2016-01-27 08:50:04",
+ "latestVersion":"0.1.2",
+ "numDownloads":1211,"screenshots":[],"previews":[],"activity":{"numCommits":"18",
+ "numContributors":"1",
+ "lastCommitDate":"2016-01-27 08:49:31"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-12-08 20:52:03",
+ "requires":{"piwik":">=2.15.0",
+ "php":">=5.4.0"},"readme":"",
+ "numDownloads":428,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/commits\/v1.0.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/SnoopyBehavioralScoring\/download\/0.1.0"},{"name":"0.1.2",
+ "release":"2016-01-27 08:50:04",
+ "requires":{"piwik":">=2.15.0",
+ "php":">=5.4.0"},"readme":"# Piwik Snoopy Plugin\n\n## Description\n\nSnoopy is a User behaviour scoring plugin for piwik. It allows you to score your visitors depending on goals reached, pages visited, email campaigns opened and other factors. In other words this plugin enables you to score your visitors based on actions they do on your website. It has a robust scoring methodology for heating and cooling visitor score.\n\nSnoopy also provides some basic API functions to integrate it with third party applications souch as your CRM or lead management system. More information about the API can be found on [github wiki](https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/wiki\/API).\n\n## Installation\n### Automatic\nInstall it via Piwik Marketplace and [configure](#configuration) plugin.\n### Manual installation\n1. Download whole repository as ZIP.\n2. Go to your piwik Administration => Marketplace and click on \"upload a plugin in .zip format.\"\n3. After plugin is upladed press \"Activate plugin\"\n\nIf you did everything correct and you have sufficient permissions on folder plugins, Snoopy should be successfully installed.\n\nNow all you need to do is to set your configuration and create a cron that calculates visitors scores.\n\n## Configuration\n\n### Required\nBefore Snoopy starts scoring visitors you first have to tweak some configuration to match your needs.\n\n1. Matching site:\nYou have to select for which site your Snoopy scores visitors. For now only one website property tracking is available.\n\n2. Matching goal:\nSnoopy will start scoring only when specific goal is achieved. You can choose one or more goals as entry point to start .ing.\n\n3. Cooling factor:\nCooling factor is number that tells you how fast visitors will loose their score.\n\nHere is example simulation for factor 1.1\n\n|Number of inactive days|Current penalty|Penalty since beginning|Visitor scores\t|\n|-----------------------|---------------|-----------------------|---------------|\n|\t\t\t\t\t\t|\t\t\t\t|\t\t\t\t\t\t|\t100\t\t \t|\n|\t1\t\t\t\t\t|\t1\t\t\t|\t1\t\t\t\t\t|\t99\t\t \t|\n|\t2\t\t\t\t\t|\t1.1\t\t\t|\t2.1\t\t\t\t\t|\t97.9\t\t|\n|\t3\t\t\t\t\t|\t1.21\t\t|\t3.31\t\t\t\t|\t96.69\t\t|\n|\t4\t\t\t\t\t|\t1.331\t\t|\t4.641\t\t\t\t|\t95.359\t\t|\n|\t5\t\t\t\t\t|\t1.4641\t\t|\t6.1051\t\t\t\t|\t93.8949\t\t|\n|\t6\t\t\t\t\t|\t1.61051\t\t|\t7.71561\t\t\t\t|\t92.28439\t|\n|\t7\t\t\t\t\t|\t1.771561\t|\t9.487171\t\t\t|\t90.512829\t|\n|\t8\t\t\t\t\t|\t1.9487171\t|\t11.4358881\t\t\t|\t88.5641119\t|\n|\t9\t\t\t\t\t|\t2.14358881\t|\t13.57947691\t\t\t|\t86.42052309\t|\n|\t10\t\t\t\t\t|\t2.357947691\t|\t15.9374246\t\t\t|\t84.0625754\t|\n\nFrom the table you can see that on first inactive day you loose 1 point, \non the second inactive day you loose 1*factor point\non third inactive day you loose second_day*factor point etc.\n\nThose configuration parameters are mandatory for Snoopy to score propperly. \n\nWhen you are finished with configuration you just need to put this comand as your cronjob and Snoopy will start to calculate your score (This will recalcualte score hourly):\n\n**0 * * * * \/piwik_root\/console snoopybehavioralscoring:recalculate-score**\n\nAdditionally you can pipe log to file:\n\n**0 * * * * \/piwik_root\/console snoopybehavioralscoring:recalculate-score >> \/var\/log\/snoopy.log**\n\n### Optional\n- Enable console full debug\n\nWhen running recalculate-score some additional info is printed, that could be usefull when debuging why score is not calculated properly.\n\n- Campaign entry bonus\n\nBonus score that is added when visitor visits your webpage trough campaign (Google Analytics campaign parameters are set)\n- Special URL's\n\nURL;SCORE pairs that make some of your URL's worth more score points. \n\nFor example:\n\nhttp:\/\/example.com\/contact;3\n\nHere contact page is worth 3 points instead just one.\n## FAQ\n\n__When does my visitors gets scored.__\n\nWhen they reach specified goal in plugin settings.\n\n## Changelog\n0.1.2 - Bugfix for settings + Fixed fatal error on first calculation + Fixed permissions problems\n0.1.1 - Readme changes + minor fixes\n0.1.0 - Initial version\n\n## Support\n\nPlease direct any feedback to info@spletnik.si\n",
+ "numDownloads":783,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Snoopy is a User behaviour scoring plugin for piwik. It allows you to score your visitors depending on goals reached, pages visited, email campaigns opened and other factors. In other words this plugin enables you to score your visitors based on actions they do on your website. It has a robust scoring methodology for heating and cooling visitor score.<\/p>\n\n<p>Snoopy also provides some basic API functions to integrate it with third party applications souch as your CRM or lead management system. More information about the API can be found on <a href=\"https:\/\/github.com\/spletnik\/snoopy-behavioral-scoring\/wiki\/API\">github wiki<\/a>.<\/p>\n\n",
+ "faq":"<p><strong>When does my visitors gets scored.<\/strong><\/p>\n\n<p>When they reach specified goal in plugin settings.<\/p>",
+ "documentation":"",
+ "changelog":"<p>0.1.2 - Bugfix for settings + Fixed fatal error on first calculation + Fixed permissions problems\n0.1.1 - Readme changes + minor fixes\n0.1.0 - Initial version<\/p>"},"download":"\/api\/2.0\/plugins\/SnoopyBehavioralScoring\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TasksTimetable",
+ "displayName":"Tasks Timetable",
+ "owner":"piwik",
+ "description":"Plugin to list all scheduled tasks: Name of the tasks and next execution time displayed in a table.",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 01:09:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":["monitoring",
+ "tasks",
+ "scheduled",
+ "timetable"],"basePrice":0,"authors":[{"name":"Megan Liang",
+ "email":null,"homepage":null},{"name":"Jay Deshpande",
+ "email":null,"homepage":null},{"name":"Piwik",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable",
+ "lastUpdated":"2014-12-23 01:14:35",
+ "latestVersion":"0.1.3",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/TasksTimetable\/images\/Timetable.png"],"previews":[],"activity":{"numCommits":"64",
+ "numContributors":"6",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-12-23 01:09:03",
+ "requires":{"piwik":">=2.0.4-b1"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPL v3",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-12-23 01:09:21",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPL v3",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-12-23 01:13:01",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPL v3",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2014-12-23 01:14:35",
+ "requires":{"piwik":">=2.0.4-b5"},"readme":"# Piwik TasksTimetable Plugin\n\n## Description\n\nPlugin to list all scheduled tasks: Name of the tasks and next execution time displayed in a table. \n\n## FAQ\n\n__Where can I find the timetable?__\n\nIt is located as a menu item \"Scheduled Tasks\" under diagnostics on the settings page.\n\n## Changelog\n\n* 0.1.0 Initial release\n\n## Support\n\nPlease direct any feedback to [hello@piwik.org](mailto:hello@piwik.org)\n\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/commits\/0.1.3",
+ "readmeHtml":{"description":"\n\n<p>Plugin to list all scheduled tasks: Name of the tasks and next execution time displayed in a table.<\/p>\n\n",
+ "faq":"<p><strong>Where can I find the timetable?<\/strong><\/p>\n\n<p>It is located as a menu item \"Scheduled Tasks\" under diagnostics on the settings page.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0 Initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/TasksTimetable\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TopPagesByActions",
+ "displayName":"Top Pages By Actions",
+ "owner":"chanzler",
+ "description":"Live widget that displays the top pages by actions in a 20 minute timespan. Auto-refresh interval can be configured.",
+ "homepage":"http:\/\/github.com\/chanzler\/piwik-top-pages-by-actions",
+ "createdDateTime":"2014-11-03 15:20:05",
+ "donate":{"paypal":"paypal@familiekanzler.de",
+ "bitcoin":null},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions",
+ "lastUpdated":"2014-11-11 10:32:03",
+ "latestVersion":"0.1.3",
+ "numDownloads":4124,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2014-11-11 10:30:36"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+ "release":"2014-11-03 15:20:05",
+ "requires":{"piwik":">=2.0.0"},"readme":"",
+ "numDownloads":112,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TopPagesByActions\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2014-11-08 20:26:03",
+ "requires":{"piwik":">=2.0.0"},"readme":"",
+ "numDownloads":60,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TopPagesByActions\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2014-11-11 10:32:03",
+ "requires":{"piwik":">=2.0.0"},"readme":"# Piwik TopPagesByActions Plugin\n\n## Description\n\nThis is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard.\n\nThe widget will show the top performing pages of a site that auto-refreshes every x seconds. It shows the number of actions and the title of the page. It is auto-sorting the entries.\n\n**This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 10 million visits per day.**\n\n(Tested with piwik 2.8.3, but supposed to run with older versions)\n\n## Installation\n\nInstall it via Piwik Marketplace OR install manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n ```\n cd plugins\/\n git clone https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions.git TopPagesByActions\n ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. You will now find the widget under the Live! section.\n\n## FAQ\n\n###Features\nHere is a list of features that are included in this project:\n\n* Live widget (\"Bestperforming pages\") with key performance indices\n\n###Configuration\n*Refresh interval*: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.\n\n*Number of entries*: Defines the number of entries to show in the widget.\n\n## Changelog\n\n### 0.1.3 Bugfix Release\n* fixed english translation of table headers\n\n### 0.1.2 Bugfix Release\n* removed javascript console log\n* fixed bug with timezones that match \/^UTC[+-]*\/\n\n### 0.1.1 Bugfix Release\n* fixed css bug in internet explorer\n\n### 0.1.0 First Beta\n* initial release\n\n## License\n\nGPL v3 or later\n\n## Support\n\n* Please direct any feedback to [frank@intersolve.de](mailto:frank@intersolve.de)\n\n## Contribute\n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+ "numDownloads":3952,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/chanzler\/piwik-top-pages-by-actions\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a new widget that you can add to your dashboard.<\/p>\n\n<p>The widget will show the top performing pages of a site that auto-refreshes every x seconds. It shows the number of actions and the title of the page. It is auto-sorting the entries.<\/p>\n\n<p><strong>This plugin should run fine with installations with up to 100.000 page impressions per day. If you run a very large piwik installation and have performance issues with this plugin, please contact me - there is a solution for this. I have it up and running in an installation with more than 10 million visits per day.<\/strong><\/p>\n\n<p>(Tested with piwik 2.8.3, but supposed to run with older versions)<\/p>\n\n",
+ "faq":"<h3>Features<\/h3>\n\n<p>Here is a list of features that are included in this project:<\/p>\n\n<ul><li>Live widget (\"Bestperforming pages\") with key performance indices<\/li>\n<\/ul><h3>Configuration<\/h3>\n\n<p><em>Refresh interval<\/em>: Defines how often the widgets will be updated. Every 30 seconds is a good value to choose.<\/p>\n\n<p><em>Number of entries<\/em>: Defines the number of entries to show in the widget.<\/p>",
+ "documentation":"",
+ "changelog":"<h3>0.1.3 Bugfix Release<\/h3>\n\n<ul><li>fixed english translation of table headers<\/li>\n<\/ul><h3>0.1.2 Bugfix Release<\/h3>\n\n<ul><li>removed javascript console log<\/li>\n<li>fixed bug with timezones that match \/^UTC[+-]*\/<\/li>\n<\/ul><h3>0.1.1 Bugfix Release<\/h3>\n\n<ul><li>fixed css bug in internet explorer<\/li>\n<\/ul><h3>0.1.0 First Beta<\/h3>\n\n<ul><li>initial release<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/TopPagesByActions\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TrackingCodeCustomizer",
+ "displayName":"Tracking Code Customizer",
+ "owner":"jbrule",
+ "description":"Allows Piwik admininstrators to customize the tracking code that is autogenerated for users. This is useful for directing requests to the correct serv",
+ "homepage":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer",
+ "createdDateTime":"2015-04-20 16:28:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer",
+ "lastUpdated":"2015-11-20 19:16:09",
+ "latestVersion":"0.1.2",
+ "numDownloads":2647,"screenshots":[],"previews":[],"activity":{"numCommits":"5",
+ "numContributors":"1",
+ "lastCommitDate":"2016-04-26 07:22:01"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2015-04-20 16:28:03",
+ "requires":{"piwik":">=v2.9.0"},"readme":"",
+ "numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TrackingCodeCustomizer\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2015-04-20 16:30:04",
+ "requires":{"piwik":">=v2.9.0"},"readme":"",
+ "numDownloads":1298,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TrackingCodeCustomizer\/download\/0.1.1"},{"name":"0.1.2",
+ "release":"2015-11-20 19:16:09",
+ "requires":{"piwik":">=v2.12.0"},"readme":"# Piwik TrackingCodeCustomizer Plugin\nTracking Code Customizer plugin for the Piwik Web Analytics software package\n\n##Description\nAllows Piwik admininstrators to customize the tracking code that is autogenerated for users. This is useful for directing requests to the correct servers in a multi-server setup, include additional parameters in default tracking, or to perform conditional checks before initiating a tracking call. \n\n##Instructions\nThe easiest way to install is to find the plugin in the [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\n##Usage\n\nSet additional default OPTIONS for tracking. The follwing is entered into the \"options\" field.\n\n```javascript\nif (typeof(hash) !== 'undefined'){_paq.push(['setCustomVariable','1','U',hash,'visit']); _paq.push(['setUserId',hash]);};\n```\nResultant tracking code\n```javascript\n<!-- Piwik -->\n<script type=\"text\/javascript\">\n var _paq = _paq || [];\n if (typeof(hash) !== 'undefined'){_paq.push(['setCustomVariable','1','U',hash,'visit']); _paq.push(['setUserId',hash]);};\n _paq.push(['trackPageView']);\n _paq.push(['enableLinkTracking']);\n var u=\"\/\/webanalytics-tracker.XXXX.XXX\/\";\n_paq.push(['setTrackerUrl', u+'piwik.php']);\n _paq.push(['setSiteId', 1]);\n var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n g.type='text\/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);\n })();\n<\/script>\n<noscript><p><img src=\"\/\/webanalytics-tracker.XXXX.XXX\/piwik.php?idsite=1\" style=\"border:0;\" alt=\"\" \/><\/p><\/noscript>\n<!-- End Piwik Code -->\n```\n\n##Changelog\n0.1.2 Updated for compatibility with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Version bump to activation Marketplace hook\n0.1.0 Initial Release\n\n##License\nGPL v3 \/ fair use\n\n## Support\nPlease [report any issues](https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/issues). Pull requests welcome.\n",
+ "numDownloads":1348,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/jbrule\/piwikplugin-TrackingCodeCustomizer\/commits\/v1.1",
+ "readmeHtml":{"description":"\n\n<p>Allows Piwik admininstrators to customize the tracking code that is autogenerated for users. This is useful for directing requests to the correct servers in a multi-server setup, include additional parameters in default tracking, or to perform conditional checks before initiating a tracking call.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>0.1.2 Updated for compatibility with Piwik v2.15 and included new registerEvents() hook for compatibility with Piwik 3.0\n0.1.1 Version bump to activation Marketplace hook\n0.1.0 Initial Release<\/p>"},"download":"\/api\/2.0\/plugins\/TrackingCodeCustomizer\/download\/0.1.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"TreemapVisualization",
+ "displayName":"Treemap Visualization",
+ "owner":"piwik",
+ "description":"This Piwik plugin adds a new report visualization: the treemap. With this plugin you can view your data as a graph that displays rows with rectangles ",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 00:37:31",
+ "donate":{},"support":[],"isTheme":false,"keywords":["treemap",
+ "graph",
+ "visualization",
+ "infovis",
+ "jit"],"basePrice":0,"authors":[{"name":"Piwik",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization",
+ "lastUpdated":"2014-12-23 00:38:05",
+ "latestVersion":"1.0.1",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/Treemap.png",
+ "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/screen-resolution-treemap.png",
+ "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/social-network-treemap.png"],"previews":[],"activity":{"numCommits":"106",
+ "numContributors":"6",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":true,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+ "release":"2014-12-23 00:37:32",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0"},{"name":"1.0.1",
+ "release":"2014-12-23 00:38:05",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"readme":"# Description\n\nTreemapVisualization is a Piwik plugin that provides the treemap report visualization. \n\n## Features\n\nThe treemap visualization will show rows of data tables as squares whose size correspond to the metric of the row. For example, if you're looking at visits, the row with the most visits will take up the most space. Just like the other graph visualizations, you can use it to easily see which rows have the largest values. The treemap differs from other graphs though, in that it shows much more rows.\n\nThe treemap visualization will also show you one thing that no other visualization included with Piwik does: the evolution of each row. You can hover over a treemap square to see how much the row changed from the last period. Each treemap square is also colored based on the evolution. A red square means the change is negative; a green square means the change is positive. The more green the bigger the change; the more red the smaller the change.\n\n## Limitations\n\nCurrently there is one known limitation:\n\n* Treemaps will not work with flattened tables. Currently, if a table is flattened, the treemap icon will be removed.\n",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":"http:\/\/plugins.piwik.org\/TreemapVisualization\/1.0.1\/license"},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0.1"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"UptimeRobotMonitor",
+ "displayName":"Uptime Robot Monitor",
+ "owner":"job963",
+ "description":"Plugin for displaying UptimeRobot data in Piwik",
+ "homepage":"https:\/\/github.com\/job963\/UptimeRobot-Monitor",
+ "createdDateTime":"2014-10-26 13:14:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor",
+ "lastUpdated":"2014-12-04 20:20:04",
+ "latestVersion":"0.2",
+ "numDownloads":4572,"screenshots":[],"previews":[],"activity":{"numCommits":"9",
+ "numContributors":"2",
+ "lastCommitDate":"2016-02-12 19:01:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-10-26 13:14:03",
+ "requires":{},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.1.0"},{"name":"0.1.1",
+ "release":"2014-10-26 13:24:04",
+ "requires":{},"readme":"",
+ "numDownloads":440,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.1.1"},{"name":"0.1.3",
+ "release":"2014-11-26 06:38:03",
+ "requires":{},"readme":"",
+ "numDownloads":152,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.1.3"},{"name":"0.2",
+ "release":"2014-12-04 20:20:04",
+ "requires":{},"readme":"# UptimeRobot Monitor Plugin\n\n## Description\n\nThis plugin shows data, collected by UptimeRobot, in Piwik. This helps you to see all information about your website in one system without having the need to login into several systems.\n\nThe access to UptimeRobot will be managed by an individual monitor API key, which you have to create in UptimeRobot (see FAQ).\n\n\n## Screenshots\n**LogList Widget** \n![](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/raw\/master\/screenshots\/widgetLogList.png)\n\n**TimeBar Widget** \n![](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/raw\/master\/screenshots\/widgetTimeBar.png)\n\n**Plugin Settings** \n![](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/raw\/master\/screenshots\/SettingsDE.png)\n\n\n## Installation\n\nInstall it via [Piwik Marketplace](http:\/\/plugins.piwik.org\/).\n\nOR \n\nInstall manually:\n\n1. Clone the plugin into the plugins directory of your Piwik installation.\n\n ```\n cd plugins\/\n git clone https:\/\/github.com\/job963\/UptimeRobot-Monitor.git UptimeRobotMonitor\n ```\n\n2. Login as superuser into your Piwik installation and activate the plugin under Settings -> Plugins\n\n3. Goto Settings -> Plugin Settings an setup the values for the widget.\n\n4. You will now find the widget under the UptimeRobotMonitor -> UptimeRobot - Latest Events.\n\n## Changelog\n\n* **0.1.0 Initial release**\n * Widget for latest events\n * Setting for monitor API key\n\n* **0.1.1 Small corrections**\n * Small correction in README\n\n* **0.1.2 New Language added**\n * Now usable in hungarian language (thanks to sagikazarmark)\n\n* **0.1.3 Readme updated**\n * New version description added\n\n* **0.2 Timebar widget added**\n * New widget for displaying the log as a time bar\n * Support of multiple servers\n\n## FAQ\n\n**Where do I get the API key?** \n\nGo in UptimeRoboto to \"My Settings\" and click in the paragraph \"Monitor-specific API Keys\" on \"Show\/hide it\". Search as next for the name of the desired website. Now you will see the API key for monitoring this website. \nThis API key you have to enter in the plugin settings of _UptimeRobotMonitor_.\n\n## License\n\nGPL v3 or later\n\n## Support\n\nPlease report any issues directly in [Github](https:\/\/github.com\/job963\/UptimeRobot-Monitor\/issues). \n\n## Contribute \n\nIf you are interested in contributing to this plugin, feel free to send pull requests!\n\n",
+ "numDownloads":3980,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/job963\/UptimeRobot-Monitor\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>This plugin shows data, collected by UptimeRobot, in Piwik. This helps you to see all information about your website in one system without having the need to login into several systems.<\/p>\n\n<p>The access to UptimeRobot will be managed by an individual monitor API key, which you have to create in UptimeRobot (see FAQ).<\/p>\n\n",
+ "faq":"<p><strong>Where do I get the API key?<\/strong><\/p>\n\n<p>Go in UptimeRoboto to \"My Settings\" and click in the paragraph \"Monitor-specific API Keys\" on \"Show\/hide it\". Search as next for the name of the desired website. Now you will see the API key for monitoring this website.\nThis API key you have to enter in the plugin settings of <em>UptimeRobotMonitor<\/em>.<\/p>",
+ "documentation":"",
+ "changelog":"<ul><li><p><strong>0.1.0 Initial release<\/strong><\/p>\n\n<ul><li>Widget for latest events<\/li>\n<li>Setting for monitor API key<\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.1 Small corrections<\/strong><\/p>\n\n<ul><li>Small correction in README<\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.2 New Language added<\/strong><\/p>\n\n<ul><li>Now usable in hungarian language (thanks to sagikazarmark)<\/li>\n<\/ul><\/li>\n<li><p><strong>0.1.3 Readme updated<\/strong><\/p>\n\n<ul><li>New version description added<\/li>\n<\/ul><\/li>\n<li><p><strong>0.2 Timebar widget added<\/strong><\/p>\n\n<ul><li>New widget for displaying the log as a time bar<\/li>\n<li>Support of multiple servers<\/li>\n<\/ul><\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/UptimeRobotMonitor\/download\/0.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"VisitorAvatar",
+ "displayName":"Visitor Avatar",
+ "owner":"surenjie",
+ "description":"Custom display visitors avatar(URL) and description(Title & Alt)",
+ "homepage":"http:\/\/plugins.piwik.org\/VisitorAvatar",
+ "createdDateTime":"2014-11-06 11:42:04",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar",
+ "lastUpdated":"2014-11-18 06:08:04",
+ "latestVersion":"0.2.2",
+ "numDownloads":3871,"screenshots":[],"previews":[],"activity":{"numCommits":"14",
+ "numContributors":"1",
+ "lastCommitDate":"2014-11-18 06:08:02"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-11-06 11:42:04",
+ "requires":{"piwik":">=2.8.3"},"readme":"",
+ "numDownloads":110,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.1.0"},{"name":"0.2.0",
+ "release":"2014-11-13 08:36:03",
+ "requires":{"piwik":">=2.8.3"},"readme":"",
+ "numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.2.0"},{"name":"0.2.1",
+ "release":"2014-11-13 09:34:03",
+ "requires":{"piwik":">=2.8.3"},"readme":"",
+ "numDownloads":120,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.2.1"},{"name":"0.2.2",
+ "release":"2014-11-18 06:08:04",
+ "requires":{"piwik":">=2.5.0"},"readme":"# Piwik VisitorAvatar Plugin\n\nCustom display visitors avatar(URL) and description(Title & Alt)\n\nhttp:\/\/plugins.piwik.org\/VisitorAvatar\n\n## Description\n\n * Step1 Tracking Code\n\n Reference:\n \n http:\/\/piwik.org\/docs\/custom-variables\/#track-a-custom-variable-in-javascript\n \n http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables\n\n Example:\n\n ```JavaScript\n \/\/ you can set up to 5 custom variables for each visitor\n _paq.push([\n \"setCustomVariable\", \n 1, \n \"RTX\", \n document.cookie.match(new RegExp(\"(^| )_login_name=([^;]*)(;|$)\"))[2], \n \"visit\"\n ]);\n ```\n\n * Step2 Plugin Settings\n\n 1. Name of the custom variable : \n \n \"RTX\" (Previous set of custom variable names, no default)\n\n 2. Visitor avatar url rules : \n \n \"\/\/rtx.oa.com\/avatars\/%s\/profile.jpg\" (The default is \"plugins\/VisitorAvatar\/images\/default_avatar.gif\")\n\n 3. Visitor description text rules : \n \n \"my rtx is %s\" (The default is \"%s\")\n\n\n * Step3 Visitor Profile\n\n _View Visitors custom avatar and description_\n\n## Tutorial\n\n![Step1 Tracking Code](https:\/\/raw.githubusercontent.com\/surenjie\/VisitorAvatar\/master\/screenshots\/Step1_Tracking_Code.png \"Step1 Tracking Code\")\n\n![Step2 Plugin Settings](https:\/\/raw.githubusercontent.com\/surenjie\/VisitorAvatar\/master\/screenshots\/Step2_Plugin_Settings.png \"Step2 Plugin Settings\")\n\n![Step3 Visitor Profile](https:\/\/raw.githubusercontent.com\/surenjie\/VisitorAvatar\/master\/screenshots\/Step3_Visitor_Profile.png \"Step3 Visitor Profile\")\n\n## Support\n\nPlease direct any feedback to i@renjie.me\n\nIf you experience any issues feel free to file an issue at https:\/\/github.com\/surenjie\/VisitorAvatar\/issues",
+ "numDownloads":3641,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/surenjie\/VisitorAvatar\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<ul><li><p>Step1 Tracking Code<\/p>\n\n<p>Reference:<\/p>\n\n<p>http:\/\/piwik.org\/docs\/custom-variables\/#track-a-custom-variable-in-javascript<\/p>\n\n<p>http:\/\/developer.piwik.org\/api-reference\/tracking-javascript#custom-variables<\/p>\n\n<p>Example:<\/p>\n\n<pre><code>\/\/ you can set up to 5 custom variables for each visitor\n_paq.push([\n \"setCustomVariable\", \n 1, \n \"RTX\", \n document.cookie.match(new RegExp(\"(^| )_login_name=([^;]*)(;|$)\"))[2], \n \"visit\"\n]);\n<\/code><\/pre><\/li>\n<li><p>Step2 Plugin Settings<\/p>\n\n<ol><li><p>Name of the custom variable :<\/p>\n\n<p>\"RTX\" (Previous set of custom variable names, no default)<\/p><\/li>\n<li><p>Visitor avatar url rules :<\/p>\n\n<p>\"\/\/rtx.oa.com\/avatars\/%s\/profile.jpg\" (The default is \"plugins\/VisitorAvatar\/images\/default_avatar.gif\")<\/p><\/li>\n<li><p>Visitor description text rules :<\/p>\n\n<p>\"my rtx is %s\" (The default is \"%s\")<\/p><\/li>\n<\/ol><\/li>\n<li><p>Step3 Visitor Profile<\/p>\n\n<p><em>View Visitors custom avatar and description<\/em><\/p><\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/VisitorAvatar\/download\/0.2.2"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"WebsiteGroups",
+ "displayName":"Website Groups",
+ "owner":"PiwikPRO",
+ "description":"Assign websites to groups in your 'All Websites' dashboard. Useful to get a view by client or category.",
+ "homepage":"http:\/\/piwik.pro",
+ "createdDateTime":"2014-11-07 03:14:03",
+ "donate":{},"support":[],"isTheme":false,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups",
+ "lastUpdated":"2016-03-09 18:04:03",
+ "latestVersion":"0.3.0",
+ "numDownloads":5489,"screenshots":[],"previews":[],"activity":{"numCommits":"70",
+ "numContributors":"6",
+ "lastCommitDate":"2016-04-15 22:56:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.2",
+ "release":"2014-11-07 03:14:03",
+ "requires":{"piwik":">=2.1.1-b1"},"readme":"",
+ "numDownloads":3,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.1.2"},{"name":"0.1.3",
+ "release":"2014-11-07 03:18:03",
+ "requires":{"piwik":">=2.1.1-b1"},"readme":"",
+ "numDownloads":2156,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2015-07-28 14:50:03",
+ "requires":{"piwik":">=2.1.1-b1"},"readme":"",
+ "numDownloads":992,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.1.4"},{"name":"0.2.0",
+ "release":"2015-11-11 14:48:03",
+ "requires":{"piwik":">=2.15.0"},"readme":"",
+ "numDownloads":1320,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/0.1.3",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.2.0"},{"name":"0.3.0",
+ "release":"2016-03-09 18:04:03",
+ "requires":{"piwik":">=2.16.0"},"readme":"# Piwik WebsiteGroups Plugin\n\nMaster [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups.svg?branch=master)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups)\nDevelop [![Build Status](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups.svg?branch=develop)](https:\/\/travis-ci.org\/PiwikPRO\/plugin-WebsiteGroups)\n\n## Description\n\nFeatures of this plugin:\n\n * Users can assign websites to groups in the UI\n * 'All Websites' dashboard shows websites grouped by Group, and for each group it shows the sum of visits\/actions\/revenue for websites within this group\n * In the 'All Websites' dashboard, the Super User can see an aggregated number of visits\/pages for the group. Websites appear below their group row\n * A user can set the groups within the 'All Websites' dashboard\n * The website selector shows the website groups prefixed with the group name\n * The website selector allows you to search for groups\n\n## Changelog\n\n__v.0.3.0__\n- PPCDEV-2609 Compatibility with Piwik 2.16.0\n\n__v.0.2.0__\n- compatibility with Piwik 2.15.0\n\n## Support\n\nPlease direct any feedback to [contact@piwik.pro](mailto:contact@piwik.pro)\n\nIf you experience any issues feel free to file an issue at [https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/issues](https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/issues)\n",
+ "numDownloads":1018,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/PiwikPRO\/plugin-WebsiteGroups\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Features of this plugin:<\/p>\n\n<ul><li>Users can assign websites to groups in the UI<\/li>\n<li>'All Websites' dashboard shows websites grouped by Group, and for each group it shows the sum of visits\/actions\/revenue for websites within this group<\/li>\n<li>In the 'All Websites' dashboard, the Super User can see an aggregated number of visits\/pages for the group. Websites appear below their group row<\/li>\n<li>A user can set the groups within the 'All Websites' dashboard<\/li>\n<li>The website selector shows the website groups prefixed with the group name<\/li>\n<li>The website selector allows you to search for groups<\/li>\n<\/ul>",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p><strong>v.0.3.0<\/strong>\n- PPCDEV-2609 Compatibility with Piwik 2.16.0<\/p>\n\n<p><strong>v.0.2.0<\/strong>\n- compatibility with Piwik 2.15.0<\/p>"},"download":"\/api\/2.0\/plugins\/WebsiteGroups\/download\/0.3.0"}],"isDownloadable":true,"consumer":{"license":null}}]} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json b/plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json
new file mode 100644
index 0000000000..d63cce22ec
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_Barometer_info.json
@@ -0,0 +1,57 @@
+{"name":"Barometer",
+ "displayName":"Barometer",
+ "owner":"halfdan",
+ "description":"Live Plugin that shows the current number of visitors on the page.",
+ "homepage":"http:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+ "createdDateTime":"2014-12-23 00:38:20",
+ "donate":{"flattr":"https:\/\/flattr.com\/profile\/test1",
+ "bitcoin":null},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/barometer.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/barometer\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/baromter.forum.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"barometer@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/baromter",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/barometer\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/barometer\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/barometer.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["barometer",
+ "live"],"basePrice":0,"authors":[{"name":"Fabian Becker",
+ "email":"test8@example.com",
+ "homepage":"http:\/\/geekproject.eu"}],"repositoryUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin",
+ "lastUpdated":"2014-12-23 00:41:21",
+ "latestVersion":"0.5.0",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/Barometer\/images\/0.5.0\/piwik-barometer-01.png",
+ "https:\/\/plugins.piwik.org\/Barometer\/images\/0.5.0\/piwik-barometer-02.png"],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.piwik.org"}],"activity":{"numCommits":"31",
+ "numContributors":"3",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.1",
+ "release":"2014-12-23 00:38:20",
+ "requires":{"piwik":">=1.10.0"},"numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.1.1"},{"name":"0.5.0",
+ "release":"2014-12-23 00:41:21",
+ "requires":{},"numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/halfdan\/piwik-barometer-plugin\/commits\/v0.5.0",
+ "readmeHtml":{"description":"\n\n<p>This is a plugin for the Open Source Web Analytics platform Piwik. If enabled, it will add a two new widgets that you can add to your dashboard.<\/p>\n\n<p>The widgets will show a Visitor Barometer and a Visit Time Barometer that auto-refresh every 5 seconds. It shows the number of visitors or visit time in a N minute period compared to the maximum number of visitors\/average visit time in any N minute period of the last 30 days.<\/p>\n\n<p>The idea for this plugin came from <a href=\"http:\/\/github.com\/muesli\">@muesli<\/a> who suggested it on #piwik in IRC.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/Barometer\/download\/0.5.0"}],"isDownloadable":true,"consumer":{"license":null}} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json b/plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json
new file mode 100644
index 0000000000..df7f985b9c
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_CustomPlugin1_info-access_token-notexistingtoken.json
@@ -0,0 +1 @@
+{"error":"Requested plugin does not exist."} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json
new file mode 100644
index 0000000000..0415fa3320
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-access_token-consumer3_paid1_custom2.json
@@ -0,0 +1,90 @@
+{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":"2014-12-23 01:18:20",
+ "latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":"2014-12-23 01:18:20",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>~2014~<\/p>\n\n<p>2014-02-21 - Update some more code, added in notification area but it's not quite working yet (TODO - make it work)<\/p>\n\n<p>2014-02-21 - Rebranded to cacheBuster and set version to 1.0, updated code to use a better check for directory seperator<\/p>\n\n<p>2014-02-20 - v2.0\n - Updated plugin to work with Piwik 2.0.3<\/p>\n\n<p>~2013~\n Inital creation of plugin at http:\/\/www.spherexx.com under the name ClearCache<\/p>"},"download":"\/api\/2.0\/plugins\/PaidPlugin1\/download\/1.1"}],"isDownloadable":true,"consumer":{"license":{"startDate":"2016-05-22 04:46:05",
+ "endDate":"2030-05-29 11:03:06",
+ "nextPaymentDate":"2030-05-29 11:03:06",
+ "status":"Active",
+ "productType":"Unlimited users",
+ "isValid":true,"isExceeded":null,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
new file mode 100644
index 0000000000..79ba7be907
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info-purchase_type-paid-num_users-201-access_token-consumer2_paid1.json
@@ -0,0 +1,90 @@
+{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD",
+ "cheapest":true,"recommended":false},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD",
+ "cheapest":false,"recommended":false},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD",
+ "cheapest":false,"recommended":true}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":{"startDate":"2016-05-21 04:46:05",
+ "endDate":"2029-05-27 11:03:06",
+ "nextPaymentDate":null,"status":"Pending cancellation",
+ "productType":"Up to 4 users",
+ "isValid":true,"isExceeded":true,"isExpiredSoon":false},"loginUrl":"https:\/\/shop.piwik.org\/my-account"}} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json
new file mode 100644
index 0000000000..80711e4ae5
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_PaidPlugin1_info.json
@@ -0,0 +1,83 @@
+{"name":"PaidPlugin1",
+ "displayName":"Paid Plugin 1",
+ "owner":"TestVendor",
+ "description":"Clears all temporary cache files",
+ "homepage":"https:\/\/github.com\/JohnDeery\/piwik-clearcache-plugin",
+ "createdDateTime":"2014-12-23 01:18:01",
+ "donate":{},"support":[{"name":"Documentation",
+ "key":"docs",
+ "value":"https:\/\/paidplugin1.org\/docs\/",
+ "type":"url"},{"name":"Wiki",
+ "key":"wiki",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/wiki",
+ "type":"url"},{"name":"Forum",
+ "key":"forum",
+ "value":"https:\/\/forum.paidplugin1.org",
+ "type":"url"},{"name":"Email",
+ "key":"email",
+ "value":"paidplugin1@example.com",
+ "type":"email"},{"name":"IRC",
+ "key":"irc",
+ "value":"irc:\/\/freenode\/paidplugin1",
+ "type":"text"},{"name":"Issues \/ Bugs",
+ "key":"issues",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/issues",
+ "type":"url"},{"name":"Source",
+ "key":"source",
+ "value":"https:\/\/github.com\/paidplugin1\/piwik\/",
+ "type":"url"},{"name":"RSS",
+ "key":"rss",
+ "value":"https:\/\/paidplugin1.org\/feed\/",
+ "type":"url"}],"isTheme":false,"keywords":["cache",
+ "delete",
+ "tmp"],"basePrice":100,"authors":[{"name":"John Deery",
+ "email":"test3@example.com",
+ "homepage":"http:\/\/fractalice.com"}],"repositoryUrl":"https:\/\/github.com\/TestVendor\/PaidPlugin1",
+ "lastUpdated":null,"latestVersion":"1.1",
+ "numDownloads":null,"screenshots":[],"previews":[{"type":"demo",
+ "provider":"link",
+ "url":"https:\/\/demo.paidplugin1.com"}],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":null},"featured":false,"isFree":false,"isPaid":true,"isCustomPlugin":false,"shop":{"url":"https:\/\/plugins.piwik.org\/PaidPlugin1",
+ "variations":[{"price":"150",
+ "prettyPrice":"150\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=EUR"},{"price":"175",
+ "prettyPrice":"$175",
+ "currency":"USD",
+ "period":"year",
+ "name":"Up to 4 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=s&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Up+to+4+users&add-to-cart=0&variation_id=372&wcj-currency=USD"},{"price":"300",
+ "prettyPrice":"300\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=EUR"},{"price":"345",
+ "prettyPrice":"$345",
+ "currency":"USD",
+ "period":"year",
+ "name":"5 to 15 users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=m&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=5+to+15+users&add-to-cart=0&variation_id=373&wcj-currency=USD"},{"price":"600",
+ "prettyPrice":"600\u20ac",
+ "currency":"EUR",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=EUR",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=EUR"},{"price":"690",
+ "prettyPrice":"$690",
+ "currency":"USD",
+ "period":"year",
+ "name":"Unlimited users",
+ "addToCartUrl":"https:\/\/plugins.piwik.org\/PaidPlugin1?add-to-cart=l&currency=USD",
+ "addToCartEmbedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?attribute_type=Unlimited+users&add-to-cart=0&variation_id=374&wcj-currency=USD"}],"reviews":{"embedUrl":"http:\/\/myshop.piwik\/product\/PaidPlugin1?show_reviews=1&piwik_embed=1",
+ "height":200}},"versions":[{"name":"1.1",
+ "release":null,"requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":null,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":null,"readmeHtml":{"description":"\n\n<p>This plugin will clear out the tmp dir of Piwik. Useful for when you are developing other plugins or just need to kill that file and can't get to your installation to delete it normally<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":null}],"isDownloadable":false,"consumer":{"license":null,"loginUrl":"https:\/\/shop.piwik.org\/my-account"}} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json b/plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json
new file mode 100644
index 0000000000..b36f0e8bcd
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_TreemapVisualization_info.json
@@ -0,0 +1,36 @@
+{"name":"TreemapVisualization",
+ "displayName":"Treemap Visualization",
+ "owner":"piwik",
+ "description":"This Piwik plugin adds a new report visualization: the treemap. With this plugin you can view your data as a graph that displays rows with rectangles ",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 00:37:31",
+ "donate":{},"support":[],"isTheme":false,"keywords":["treemap",
+ "graph",
+ "visualization",
+ "infovis",
+ "jit"],"basePrice":0,"authors":[{"name":"Piwik",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization",
+ "lastUpdated":"2014-12-23 00:38:05",
+ "latestVersion":"1.0.1",
+ "numDownloads":0,"screenshots":["https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/1.0.1\/Treemap.png",
+ "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/1.0.1\/screen-resolution-treemap.png",
+ "https:\/\/plugins.piwik.org\/TreemapVisualization\/images\/1.0.1\/social-network-treemap.png"],"previews":[],"activity":{"numCommits":"106",
+ "numContributors":"6",
+ "lastCommitDate":"1970-01-01 00:33:35"},"featured":true,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"1.0",
+ "release":"2014-12-23 00:37:32",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":0,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0"},{"name":"1.0.1",
+ "release":"2014-12-23 00:38:05",
+ "requires":{"piwik":">=2.0.0",
+ "php":">=5.3.0"},"numDownloads":0,"license":{"name":"GPLv3+",
+ "url":"http:\/\/plugins.piwik.org\/TreemapVisualization\/1.0.1\/license"},"repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/TreemapVisualization\/download\/1.0.1"}],"isDownloadable":true,"consumer":{"license":null}} \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json b/plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json
new file mode 100644
index 0000000000..57214819eb
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_plugins_checkUpdates-pluginspluginsnameAnonymousPi.json
@@ -0,0 +1,17 @@
+[{"name":"AnonymousPiwikUsageMeasurement",
+ "version":"0.2.1",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-AnonymousPiwikUsageMeasurement\/commits\/v0.1.1"},{"name":"CustomAlerts",
+ "version":"0.1.12",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomAlerts\/compare\/0.0.1...0.1.12"},{"name":"CustomDimensions",
+ "version":"0.1.4",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-CustomDimensions\/compare\/0.1.11...0.1.4"},{"name":"LogViewer",
+ "version":"0.2.0",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-LogViewer\/compare\/0.1.0...v0.1.1"},{"name":"QueuedTracking",
+ "version":"0.3.1",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-QueuedTracking\/compare\/1.0.7...v0.1.1"},{"name":"SecurityInfo",
+ "version":"1.0.4",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-SecurityInfo\/commits\/1.0.4"},{"name":"TasksTimetable",
+ "version":"0.1.3",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TasksTimetable\/compare\/0.1.0...0.1.3"},{"name":"TreemapVisualization",
+ "version":"1.0.1",
+ "repositoryChangelogUrl":"https:\/\/github.com\/piwik\/plugin-TreemapVisualization\/commits\/1.0.1"}] \ No newline at end of file
diff --git a/plugins/Marketplace/tests/resources/v2.0_themes.json b/plugins/Marketplace/tests/resources/v2.0_themes.json
new file mode 100644
index 0000000000..62fc282a34
--- /dev/null
+++ b/plugins/Marketplace/tests/resources/v2.0_themes.json
@@ -0,0 +1,182 @@
+{"plugins":[{"name":"AnotherBlackTheme",
+ "displayName":"Another Black Theme",
+ "owner":"tsteur",
+ "description":"A black theme based on PleineLune",
+ "homepage":"http:\/\/piwik.org",
+ "createdDateTime":"2014-12-23 00:39:16",
+ "donate":{},"support":[],"isTheme":true,"keywords":["live",
+ "tab"],"basePrice":0,"authors":[{"name":"The Piwik Team",
+ "email":"test1@example.com",
+ "homepage":"http:\/\/piwik.org"}],"repositoryUrl":"https:\/\/github.com\/tsteur\/piwik-anotherblack-theme",
+ "lastUpdated":"2014-12-23 00:39:16",
+ "latestVersion":"0.1.0",
+ "numDownloads":0,"screenshots":["https:\/\/themes.piwik.org\/AnotherBlackTheme\/images\/0.1.0\/Admin.png",
+ "https:\/\/themes.piwik.org\/AnotherBlackTheme\/images\/0.1.0\/All_Websites_Dashboard.png",
+ "https:\/\/themes.piwik.org\/AnotherBlackTheme\/images\/0.1.0\/Report.png"],"previews":[],"activity":{"numCommits":"3",
+ "numContributors":"1",
+ "lastCommitDate":"1970-01-01 00:33:33"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2014-12-23 00:39:16",
+ "requires":{},"numDownloads":0,"license":{"name":"GPLv3+",
+ "url":"http:\/\/themes.piwik.org\/AnotherBlackTheme\/0.1.0\/license"},"repositoryChangelogUrl":"https:\/\/github.com\/tsteur\/piwik-anotherblack-theme\/commits\/0.1.0",
+ "readmeHtml":{"description":"\n\n<p>A beautiful dark theme.<\/p>\n\n",
+ "faq":"<p><strong>Does it contain black?<\/strong>\nYes, it does.<\/p>\n\n<p><strong>Does it contain blue?<\/strong>\nYes, quite a lot.<\/p>",
+ "documentation":"",
+ "changelog":"<p><strong>0.1.0<\/strong>\n* Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/AnotherBlackTheme\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Darkness",
+ "displayName":"Darkness",
+ "owner":"TheCrowsJoker",
+ "description":"A dark theme for piwik",
+ "homepage":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme",
+ "createdDateTime":"2015-01-14 01:32:03",
+ "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme",
+ "lastUpdated":"2015-01-15 21:18:04",
+ "latestVersion":"0.1.4",
+ "numDownloads":3624,"screenshots":[],"previews":[],"activity":{"numCommits":"6",
+ "numContributors":"1",
+ "lastCommitDate":"2015-01-15 21:17:10"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.3",
+ "release":"2015-01-14 01:32:04",
+ "requires":{"piwik":">=2.11.0-b2"},"numDownloads":18,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme\/commits\/v0.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Darkness\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2015-01-15 21:18:04",
+ "requires":{"piwik":">=2.11.0-b2"},"numDownloads":3606,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/TheCrowsJoker\/DarknessPiwikTheme\/commits\/0.1.0",
+ "readmeHtml":{"description":"\n\n<p>This is a dark theme for piwik. It is great for viewing your piwik dashboard after the sun has gone down or just for lovers of darkness.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>1.0 Initial release<\/p>"},"download":"\/api\/2.0\/plugins\/Darkness\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Proteus_Bold",
+ "displayName":"Proteus_ Bold",
+ "owner":"ldidsbury",
+ "description":"The Proteus_Bold theme uses bold font that is easy-to-read with colors like that of the sea.",
+ "homepage":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme",
+ "createdDateTime":"2015-02-20 22:02:03",
+ "donate":{"paypal":"lawrence@winchesterresearch.it",
+ "bitcoin":null},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme",
+ "lastUpdated":"2015-02-21 02:48:03",
+ "latestVersion":"0.1.4",
+ "numDownloads":2838,"screenshots":[],"previews":[],"activity":{"numCommits":"8",
+ "numContributors":"1",
+ "lastCommitDate":"2015-09-15 19:11:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.3",
+ "release":"2015-02-20 22:02:03",
+ "requires":{},"numDownloads":10,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Proteus_Bold\/download\/0.1.3"},{"name":"0.1.4",
+ "release":"2015-02-21 02:48:03",
+ "requires":{},"numDownloads":2828,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ldidsbury\/Proteus_Bold-PiwikTheme\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Bold and easy-to-read...the Proteus_Bold theme for Piwik Analytics. Proteus was an early Greek god of the sea, capable of changing his appearance. The Proteus_Bold theme uses bold font that is easy-to-read with calming colors like that of the sea.<\/p>\n\n",
+ "faq":"<p>Q. Want to design a theme for Piwik? \nA. Go to https:\/\/developer.piwik.org\/guides\/theming to learn how.<\/p>",
+ "documentation":"",
+ "changelog":"<p>Version 0.1.2 \n-Basic theme adjustments, testing the process.<\/p>\n\n<p>Version 0.1.3 \n-Updated version number and Changelog<\/p>\n\n<p>Version 0.1.4 \n-Updated version number in json, \n-Updated Changelog, and \n-Edited description text length for the Piwik marketplace viewing<\/p>"},"download":"\/api\/2.0\/plugins\/Proteus_Bold\/download\/0.1.4"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Terrano",
+ "displayName":"Terrano",
+ "owner":"nstallinger",
+ "description":"A neutral and natural theme made during the Catalyst Project Week.",
+ "homepage":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano",
+ "createdDateTime":"2016-01-20 20:14:03",
+ "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano",
+ "lastUpdated":"2016-01-20 20:58:02",
+ "latestVersion":"1.4.0",
+ "numDownloads":1014,"screenshots":[],"previews":[],"activity":{"numCommits":"9",
+ "numContributors":"1",
+ "lastCommitDate":"2016-01-20 20:57:44"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2016-01-20 20:14:03",
+ "requires":{},"numDownloads":2,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Terrano\/download\/0.1.0"},{"name":"1.4.0",
+ "release":"2016-01-20 20:58:02",
+ "requires":{},"numDownloads":1012,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/nstallinger\/piwik_theme_terrano\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>A neutral and natural theme made during the Catalyst Project Week.<\/p>",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/Terrano\/download\/1.4.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"CoffeeCup",
+ "displayName":"Coffee Cup",
+ "owner":"RobotHoboDanceParty",
+ "description":"A shoothing background for those who missed their first cup of the day.",
+ "homepage":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme",
+ "createdDateTime":"2016-01-20 20:18:03",
+ "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme",
+ "lastUpdated":"2016-01-20 20:34:02",
+ "latestVersion":"0.1.3",
+ "numDownloads":961,"screenshots":[],"previews":[],"activity":{"numCommits":"6",
+ "numContributors":"1",
+ "lastCommitDate":"2016-01-20 20:33:03"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2016-01-20 20:18:03",
+ "requires":{},"numDownloads":1,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme\/commits\/v0.1.2",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/CoffeeCup\/download\/0.1.0"},{"name":"0.1.3",
+ "release":"2016-01-20 20:34:02",
+ "requires":{},"numDownloads":960,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/RobotHoboDanceParty\/piwik-coffee-cup-theme\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>A soothing background for those who missed their first cup of the day.<\/p>",
+ "faq":"",
+ "documentation":"",
+ "changelog":""},"download":"\/api\/2.0\/plugins\/CoffeeCup\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"Vale",
+ "displayName":"Vale",
+ "owner":"ashleighpearson",
+ "description":"A muted red, white, and blue theme",
+ "homepage":"https:\/\/github.com\/ashleighpearson\/apcustomthemes",
+ "createdDateTime":"2016-01-20 20:20:03",
+ "donate":{},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/ashleighpearson\/apcustomthemes",
+ "lastUpdated":"2016-01-20 21:08:03",
+ "latestVersion":"0.1.3",
+ "numDownloads":930,"screenshots":[],"previews":[],"activity":{"numCommits":"4",
+ "numContributors":"1",
+ "lastCommitDate":"2016-01-20 21:07:41"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2016-01-20 20:20:03",
+ "requires":{},"numDownloads":4,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ashleighpearson\/apcustomthemes\/commits\/v0.1.1",
+ "readmeHtml":{"description":"",
+ "faq":"",
+ "changelog":"",
+ "documentation":""},"download":"\/api\/2.0\/plugins\/Vale\/download\/0.1.0"},{"name":"0.1.3",
+ "release":"2016-01-20 21:08:03",
+ "requires":{},"numDownloads":926,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/ashleighpearson\/apcustomthemes\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>A muted red, white, and blue theme, giving Piwik a cool, calm feel. Good colour contrast makes things easy to read, as well as creating an overall pleasant aesthetic. Created during the 2016 Catalyst Open Source Academy.<\/p>\n\n",
+ "faq":"",
+ "documentation":"",
+ "changelog":"<p>Version 0.1.0: First public release\nVersion 0.1.1: Minor code fixes\nVersion 0.1.2: Typo fixes\nVersion 0.1.3: Typo fixes, more screenshots<\/p>"},"download":"\/api\/2.0\/plugins\/Vale\/download\/0.1.3"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ModernBlue",
+ "displayName":"Modern Blue",
+ "owner":"cuzzea",
+ "description":"Modern Blue theme for Piwik.",
+ "homepage":null,"createdDateTime":"2016-03-18 09:06:03",
+ "donate":{"paypal":"cuzzea@gmail.com",
+ "bitcoin":null},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-blue",
+ "lastUpdated":"2016-03-18 09:06:03",
+ "latestVersion":"0.1.0",
+ "numDownloads":757,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2016-03-18 09:04:26"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2016-03-18 09:06:03",
+ "requires":{},"numDownloads":757,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-blue\/commits\/v0.1.1",
+ "readmeHtml":{"description":"\n\n<p>Modern Blue theme for Piwik<\/p>\n\n",
+ "faq":"<p><strong>No FAQ at the moment<\/strong><\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0: First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ModernBlue\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}},{"name":"ModernGreen",
+ "displayName":"Modern Green",
+ "owner":"cuzzea",
+ "description":"Modern Green theme for Piwik.",
+ "homepage":null,"createdDateTime":"2016-03-18 09:22:03",
+ "donate":{"paypal":"cuzzea@gmail.com",
+ "bitcoin":null},"support":[],"isTheme":true,"keywords":[],"basePrice":0,"authors":[],"repositoryUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-green",
+ "lastUpdated":"2016-03-18 09:22:03",
+ "latestVersion":"0.1.0",
+ "numDownloads":710,"screenshots":[],"previews":[],"activity":{"numCommits":null,"numContributors":null,"lastCommitDate":"2016-03-18 09:21:07"},"featured":false,"isFree":true,"isPaid":false,"isCustomPlugin":false,"shop":null,"versions":[{"name":"0.1.0",
+ "release":"2016-03-18 09:22:03",
+ "requires":{},"numDownloads":710,"license":{"name":"GPLv3+",
+ "url":""},"repositoryChangelogUrl":"https:\/\/github.com\/cuzzea\/piwik-theme-modern-green\/commits\/v0.1.2",
+ "readmeHtml":{"description":"\n\n<p>Modern Green theme for Piwik<\/p>\n\n",
+ "faq":"<p><strong>No FAQ at the moment<\/strong><\/p>",
+ "documentation":"",
+ "changelog":"<ul><li>0.1.0: First beta<\/li>\n<\/ul>"},"download":"\/api\/2.0\/plugins\/ModernGreen\/download\/0.1.0"}],"isDownloadable":true,"consumer":{"license":null}}]} \ No newline at end of file
diff --git a/plugins/MobileAppMeasurable/lang/pt.json b/plugins/MobileAppMeasurable/lang/pt.json
new file mode 100644
index 0000000000..b8ca52398a
--- /dev/null
+++ b/plugins/MobileAppMeasurable/lang/pt.json
@@ -0,0 +1,5 @@
+{
+ "MobileAppMeasurable": {
+ "MobileApps": "Apps Mobile"
+ }
+} \ No newline at end of file
diff --git a/plugins/Morpheus/templates/javascriptCode.twig b/plugins/Morpheus/templates/javascriptCode.twig
index c18d850d34..da29f9b6b8 100644
--- a/plugins/Morpheus/templates/javascriptCode.twig
+++ b/plugins/Morpheus/templates/javascriptCode.twig
@@ -12,7 +12,7 @@
})();
</script>
-{% if not loadAsync %}<script type='text/javascript' src="{$protocol}{$piwikUrl}/piwik.js">
+{% if not loadAsync %}<script type='text/javascript' src="{$protocol}{$piwikUrl}/piwik.js"></script>
{% endif %}
<noscript><p><img src="{$protocol}{$piwikUrl}/piwik.php?idsite={$idSite}" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->
diff --git a/plugins/Morpheus/templates/layout.twig b/plugins/Morpheus/templates/layout.twig
index 29f2feefab..524d04389c 100644
--- a/plugins/Morpheus/templates/layout.twig
+++ b/plugins/Morpheus/templates/layout.twig
@@ -7,7 +7,7 @@
{%- block pageTitle -%}
{%- if title is defined %}{{ title }} - {% endif %}
{%- if categoryTitle is defined %}{{ categoryTitle }} - {% endif %}
- {%- if not isCustomLogo %}Piwik{% endif %}
+ Piwik
{%- endblock -%}
</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=1"/>
diff --git a/plugins/MultiSites/Menu.php b/plugins/MultiSites/Menu.php
index 8860eacec0..b57e0014c2 100644
--- a/plugins/MultiSites/Menu.php
+++ b/plugins/MultiSites/Menu.php
@@ -18,6 +18,6 @@ class Menu extends \Piwik\Plugin\Menu
$urlParams = $this->urlForActionWithDefaultUserParams('index', array('segment' => false, 'idSite' => false));
$tooltip = Piwik::translate('MultiSites_TopLinkTooltip');
- $menu->add('General_MultiSitesSummary', null, $urlParams, true, 3, $tooltip);
+ $menu->addItem('General_MultiSitesSummary', null, $urlParams, 3, $tooltip);
}
}
diff --git a/plugins/Overlay/lang/pt.json b/plugins/Overlay/lang/pt.json
index 8858700b5a..b350dd2fe5 100644
--- a/plugins/Overlay/lang/pt.json
+++ b/plugins/Overlay/lang/pt.json
@@ -1,5 +1,6 @@
{
"Overlay": {
+ "Domain": "Domínio",
"Location": "Localização"
}
} \ No newline at end of file
diff --git a/plugins/PrivacyManager/lang/ca.json b/plugins/PrivacyManager/lang/ca.json
index bc9e47251a..8f6c057e1f 100644
--- a/plugins/PrivacyManager/lang/ca.json
+++ b/plugins/PrivacyManager/lang/ca.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "Anonimitzar el(s) últim(s) de la IP de les adreces dels visitants per complir amb la vostra política de privacitat\/llei.",
"AnonymizeIpMaskLengtDescription": "Seleccioneu quans bytes de l'adreça IP del visitant voleu enmascarar.",
"AnonymizeIpMaskLength": "%1$s byte(s) - p.e. %2$s",
- "CannotLockSoDeleteLogActions": "La taula log_action no es purgarà: siusplau doneu el privilegi LOCK TABLES a l'ususair de MySQL '%s'.",
"ClickHereSettings": "Feu click aquí per entrar a %s la configuració",
"CurrentDBSize": "Tamany actual de la Base de dades",
"DBPurged": "Base de dades purgada",
diff --git a/plugins/PrivacyManager/lang/cs.json b/plugins/PrivacyManager/lang/cs.json
index a5c8be3f67..a4c711888f 100644
--- a/plugins/PrivacyManager/lang/cs.json
+++ b/plugins/PrivacyManager/lang/cs.json
@@ -5,7 +5,7 @@
"AnonymizeIpExtendedHelp": "Když uživatelé navštíví vaše stránky, Piwik neuloží jejich plnou IP adresu (jako %1$s), ale nejprve bude anonymizována (na %2$s). Anonymizace IP adres je jedním z požadavků práva na ochranu soukromí v některých zemí, jako je třeba Německo.",
"AnonymizeIpMaskLengtDescription": "Zvolte, kolik bitů z návštěvníkovy IP adresy má být maskováno.",
"AnonymizeIpMaskLength": "%1$s bitů - např. %2$s",
- "CannotLockSoDeleteLogActions": "Tabulka log_action nebude vyprázdněna: dejte Mysql uživateli %s privilegium LOCK TABLES.",
+ "CannotLockSoDeleteLogActions": "Tabulka log_action nebude vyprázdněna: přiřaďte '%s' MySQL uživateli LOCK TABLES oprávnění.",
"ClickHereSettings": "Pro přístup k nastavení %s klikněte zde.",
"CurrentDBSize": "Aktuální velikost databáze",
"DBPurged": "Databáze vyprázdněna.",
diff --git a/plugins/PrivacyManager/lang/da.json b/plugins/PrivacyManager/lang/da.json
index f4255ab3bd..8795ed7ed4 100644
--- a/plugins/PrivacyManager/lang/da.json
+++ b/plugins/PrivacyManager/lang/da.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Når brugerne besøger hjemmesiden, vil Piwik ikke bruge den fulde IP-adresse (f.eks %1$s), men i stedet vil Piwik anonymisere det først (til %2$s). IP-adresse anonymisering er et af de krav, som lovgivningen om privatlivets fred i visse lande som fx. Tyskland.",
"AnonymizeIpMaskLengtDescription": "Vælg hvor mange bytes af de besøgendes IP-adresser der skal maskeres.",
"AnonymizeIpMaskLength": "%1$s bytes - f.eks %2$s",
- "CannotLockSoDeleteLogActions": "log_action tabellen vil ikke blive slettet: giv LOCK TABELLER privilegium til '%s' MYSQL brugeren.",
"ClickHereSettings": "Klik her for at få adgang til %s indstillinger.",
"CurrentDBSize": "Nuværende database størrelse",
"DBPurged": "Databasen er opryddet.",
diff --git a/plugins/PrivacyManager/lang/de.json b/plugins/PrivacyManager/lang/de.json
index 2303439d45..ae7c2f0785 100644
--- a/plugins/PrivacyManager/lang/de.json
+++ b/plugins/PrivacyManager/lang/de.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Wenn Benutzer Ihre Website besuchen, wird Piwik nicht die komplette IP Adresse (so wie %1$s) benützen, sondern sie stattdessen zuerst anonymisieren (zu %2$s). Die Anonymisierung der IP Adresse ist in einigen Ländern eine gesetzliche Pflicht, zum Beispiel in Deutschland vorgegeben durch das Datenschutzrecht.",
"AnonymizeIpMaskLengtDescription": "Wählen Sie aus, wieviele Bytes der Besucher-IP maskiert werden sollen.",
"AnonymizeIpMaskLength": "%1$s byte(s) - z.B. %2$s",
- "CannotLockSoDeleteLogActions": "Die log_action Tabelle wird nicht geleert: bitte geben Sie dem MySQL User '%s' das LOCK TABLES Privileg.",
"ClickHereSettings": "Hier klicken, um die %s Einstellungen zu bearbeiten.",
"CurrentDBSize": "Aktuelle Größe der Datenbank",
"DBPurged": "Datenbank bereinigt.",
diff --git a/plugins/PrivacyManager/lang/el.json b/plugins/PrivacyManager/lang/el.json
index 9e771d4115..ee37084ef1 100644
--- a/plugins/PrivacyManager/lang/el.json
+++ b/plugins/PrivacyManager/lang/el.json
@@ -5,7 +5,7 @@
"AnonymizeIpExtendedHelp": "Όταν οι χρήστες επισκέπτονται τον ιστοτόπο σας, το Piwik δε θα χρησιμοποιήσει την πλήρη διεύθυνση IP (όπως %1$s), αντίθετα το Piwik θα την κάνει πρώτα ανώνυμη (σε %2$s). Η ανωνυμοποίηση των διευθύνσεων IP είναι μία από τις απαιτήσεις που θέτει η νομοθεσία σε ορισμένες χώρες όπως η Γερμανία.",
"AnonymizeIpMaskLengtDescription": "Επιλέξτε πόσα bytes από τις διευθύνσεις IP των επισκεπτών πρέπει να κρύβονται.",
"AnonymizeIpMaskLength": "%1$s byte - πχ. %2$s",
- "CannotLockSoDeleteLogActions": "Ο πίκανας log_action δεν θα διαγραφεί: δώστε δικαιώματα LOCK TABLES στον χρήστη MYSQL «%s».",
+ "CannotLockSoDeleteLogActions": "Ο πίνακας log_action δε θα καθαριστεί: εκχωρήστε το δικαίωμα LOCK TABLES στο χρήστη '%s' της MySQL.",
"ClickHereSettings": "Πατήστε εδώ για να έχετε πρόσβαση στις ρυθμίσεις %s.",
"CurrentDBSize": "Τρέχον μέγεθος βάσης δεδομένων",
"DBPurged": "Η βάση δεδομένων διαγράφτηκε.",
diff --git a/plugins/PrivacyManager/lang/es.json b/plugins/PrivacyManager/lang/es.json
index c97538b7d6..9375c4d3ac 100644
--- a/plugins/PrivacyManager/lang/es.json
+++ b/plugins/PrivacyManager/lang/es.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Cuando los usuarios visiten su sitio de internet, Piwik no usará la dirección completa IP (tales como %1$s) sino que Piwik las mantendrá anónimas primeramente (como %2$s). El anonimato de una dirección IP es uno de los requerimientos dispuesto por leyes de privacidad en algunos países tales como Alemania.",
"AnonymizeIpMaskLengtDescription": "Seleccione cuantos bytes de las direcciones IP de los visitantes deben ser enmascaradas.",
"AnonymizeIpMaskLength": "%1$s byte(s) - ej. %2$s",
- "CannotLockSoDeleteLogActions": "La tabla log_action no será purgada: por favor, conceda el privilegio LOCK TABLES al usuario MYSQL '%s'.",
"ClickHereSettings": "Haga clic aquí para acceder a la configuración de %s",
"CurrentDBSize": "Tamaño de la actual base de datos",
"DBPurged": "Base de datos purgada.",
diff --git a/plugins/PrivacyManager/lang/fi.json b/plugins/PrivacyManager/lang/fi.json
index af20fe9d0c..59a4336c12 100644
--- a/plugins/PrivacyManager/lang/fi.json
+++ b/plugins/PrivacyManager/lang/fi.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Kun käyttäjät vierailevat sivullasi, Piwik ei tallenna täyttä IP-osoitetta (esim. %1$s), vaan sen sijaan osoite anonymisoidaan (esim. %2$s). IP-osoitteen anonymisointi on osa yksityisyydensuojasta määrääviä lakeja esimerkiksi Saksassa.",
"AnonymizeIpMaskLengtDescription": "Valitse, montako tavua käyttäjien IP-osoitteista piilotetaan.",
"AnonymizeIpMaskLength": "%1$s tavua - esim. %2$s",
- "CannotLockSoDeleteLogActions": "log_action-taulua ei ole tyhjätty. Lisää \"LOCK TABLES\"-oikeus käyttäjälle %s.",
"ClickHereSettings": "Muokkaa %s:n asetuksia.",
"CurrentDBSize": "Nykyinen tietokannan koko",
"DBPurged": "Tietokannasta poistettiin vanhat tiedot.",
diff --git a/plugins/PrivacyManager/lang/fr.json b/plugins/PrivacyManager/lang/fr.json
index 916447f682..1ad6a6c933 100644
--- a/plugins/PrivacyManager/lang/fr.json
+++ b/plugins/PrivacyManager/lang/fr.json
@@ -5,7 +5,7 @@
"AnonymizeIpExtendedHelp": "Quand les utilisateurs visitent votre site, Piwik n'utilisera pas l'adresse IP complète (par exemple %1$s) mais l'anonymisera (par exemple %2$s). L'anonymisation des adresses IP est requise par certaines lois adressant la protection de la vie privée dans certains pays comme l'Allemagne.",
"AnonymizeIpMaskLengtDescription": "Sélectionnez combien de bytes de l'adresse IP du visiteur doivent être masqués.",
"AnonymizeIpMaskLength": "%1$s byte(s) - ex %2$s",
- "CannotLockSoDeleteLogActions": "La table log_action ne sera pas purgée : veuillez accorder le privilège LOCK TABLES à l'utilisateur MYSQL '%s'.",
+ "CannotLockSoDeleteLogActions": "La table log_action ne va pas être purgée : veuillez accorder le droit LOCK TABLES à l'utilisateur MySQL '%s'.",
"ClickHereSettings": "Cliquez ici pour accéder aux paramètres %s.",
"CurrentDBSize": "Taille actuelle de la base de données",
"DBPurged": "BDD purgée.",
diff --git a/plugins/PrivacyManager/lang/hi.json b/plugins/PrivacyManager/lang/hi.json
index d32636d946..536c9591dc 100644
--- a/plugins/PrivacyManager/lang/hi.json
+++ b/plugins/PrivacyManager/lang/hi.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "अपने स्थानीय गोपनीयता कानून \/ दिशा निर्देशों का अनुपालन करने के लिए आगंतुकों आईपी पतों की अज्ञात आखिरी बाइट",
"AnonymizeIpMaskLengtDescription": "आवृत किया जाना चाहिए कि कितने बाइट्स 'दर्शकों के आईपी का चयन करें.",
"AnonymizeIpMaskLength": "%1$s बाइट - e.g. %2$s",
- "CannotLockSoDeleteLogActions": "Log_action तालिका शुद्ध नहीं किया जाएगा: '%s' में MYSQL उपयोगकर्ता के लिए LOCK TABLES विशेषाधिकार का अनुदान करे कृपया.",
"ClickHereSettings": "%s की सेटिंग्स का उपयोग करने के लिए यहां क्लिक करें.",
"CurrentDBSize": "वर्तमान डेटाबेस का आकार",
"DBPurged": "डीबी शुद्ध किए गए.",
diff --git a/plugins/PrivacyManager/lang/id.json b/plugins/PrivacyManager/lang/id.json
index 183caceb03..8bef532eb2 100644
--- a/plugins/PrivacyManager/lang/id.json
+++ b/plugins/PrivacyManager/lang/id.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "Anonimasi bita terakhir dari alamat IP pengunjung sesuai dengan peraturan privasi\/panduan setempat Anda.",
"AnonymizeIpMaskLengtDescription": "Pilih berapa banyak bita dari IP pengunjung harus ditutupi.",
"AnonymizeIpMaskLength": "%1$s bita - misalnya %2$s",
- "CannotLockSoDeleteLogActions": "Tabel log_action tidak akan dibersihakan: harap memberi hak LOCK TABLES terhadap pengguna MySQL '%s'.",
"ClickHereSettings": "Klik di sini untuk mengakses pengaturan %s.",
"CurrentDBSize": "Ukuran basisdata saat ini",
"DBPurged": "BD terbersihkan.",
diff --git a/plugins/PrivacyManager/lang/it.json b/plugins/PrivacyManager/lang/it.json
index 770b33b81e..1182a1572f 100644
--- a/plugins/PrivacyManager/lang/it.json
+++ b/plugins/PrivacyManager/lang/it.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Quando gli utenti visitano il tuo sito web, Piwik non userà l'indirizzo IP completo (come %1$s) ma lo renderà prima anonimo (così: %2$s). Questo è uno dei requisiti definiti dalle leggi sulla privacy in alcuni paesi come la Germania.",
"AnonymizeIpMaskLengtDescription": "Seleziona quanti byte degli indirizzi IP dei visitatori devono essere nascosti.",
"AnonymizeIpMaskLength": "%1$s byte(s) - es. %2$s",
- "CannotLockSoDeleteLogActions": "La tabella log_action non verrà pulita: assicura il privilegio LOCK TABLES all'utente MYSQL '%s'.",
"ClickHereSettings": "Accedi alle impostazioni %s.",
"CurrentDBSize": "Dimensione corrente del database",
"DBPurged": "DB ripulito.",
diff --git a/plugins/PrivacyManager/lang/ja.json b/plugins/PrivacyManager/lang/ja.json
index c830a60a91..1bf0c65d1c 100644
--- a/plugins/PrivacyManager/lang/ja.json
+++ b/plugins/PrivacyManager/lang/ja.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "ユーザーがウェブサイトを訪れるとき、Piwik は ( %1$s のような ) 完全な IP アドレスを使用しませんが、代わりに最初に匿名化します ( %2$s まで ) 。IP アドレスの匿名化はドイツを含むいくつかの国においてプライバシー法によって設定されている条件の中の1つです。",
"AnonymizeIpMaskLengtDescription": "ビジターのIPアドレスから何バイトマスクするか選択してください。",
"AnonymizeIpMaskLength": "%1$s バイト- 例. %2$s",
- "CannotLockSoDeleteLogActions": "log_action 表は、パージされません。'%s' MYSQL ユーザーに、LOCK TABLES 権限を付与してください。",
"ClickHereSettings": "%s 設定はこちらをクリック",
"CurrentDBSize": "現在のデータベースサイズ",
"DBPurged": "データベースがパージされました。",
diff --git a/plugins/PrivacyManager/lang/ko.json b/plugins/PrivacyManager/lang/ko.json
index 033621a5ef..ebd2a80347 100644
--- a/plugins/PrivacyManager/lang/ko.json
+++ b/plugins/PrivacyManager/lang/ko.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "유저들이 웹사이트에 접속할 때, Piwik는 모든 IP 주소(예: %1$s)를 사용하지 않고 일부를 숨깁니다(예: %2$s). IP 주소 익명 처리는 독일과 같이 특정 국가에서 프라이버시 법률에 따라 요구되는 것 중 하나입니다.",
"AnonymizeIpMaskLengtDescription": "방문자의 IP 주소에서 몇 바이트를 숨기려면 선택하세요.",
"AnonymizeIpMaskLength": "%1$s 바이트 - 예) %2$s",
- "CannotLockSoDeleteLogActions": "log_action 테이블을 비울 수 없습니다: '%s' MYSQL 사용자에게 LOCK 테이블 권한을 부여하세요.",
"ClickHereSettings": "%s 설정은 여기를 클릭하세요.",
"CurrentDBSize": "현재 데이터베이스 크기",
"DBPurged": "DB가 제거되었습니다.",
diff --git a/plugins/PrivacyManager/lang/nl.json b/plugins/PrivacyManager/lang/nl.json
index 2bd5aa2db4..5476d60697 100644
--- a/plugins/PrivacyManager/lang/nl.json
+++ b/plugins/PrivacyManager/lang/nl.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Als gebruikers uw website bezoeken zal Piwik niet het volledige IP adres (zoals %1$s) gebruiken maar ditt eerst anonimiseren (tot %2$s). IP adres anonimisatie is in sommige landen zoals Duitsland, een van de eisen gesteld in privacy wetten.",
"AnonymizeIpMaskLengtDescription": "Geef aan hoeveel cijfers van het IP-adres moeten worden gemaskeerd.",
"AnonymizeIpMaskLength": "%1$s byte(s) - bijvoorbeeld %2$s",
- "CannotLockSoDeleteLogActions": "De log_action tabel zal niet worden opgekuist: Wijs het 'LOCK TABLES' recht toe aan de '%s' MYSQL gebruiker.",
"ClickHereSettings": "Klik hier om de%s-instellingen te openen.",
"CurrentDBSize": "Huidige database grotte",
"DBPurged": "DB purged",
diff --git a/plugins/PrivacyManager/lang/pt-br.json b/plugins/PrivacyManager/lang/pt-br.json
index c5bfb79b63..4ec0f7f924 100644
--- a/plugins/PrivacyManager/lang/pt-br.json
+++ b/plugins/PrivacyManager/lang/pt-br.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Quando usuários visitarem o seu site, Piwik não vai usar o endereço de IP completo (como %1$s), pelo contrário, Piwik vai anonimizá-los primeiro (para %2$s). Anonimização de endereço de IP é um dos requisitos estabelecidos pelas leis de privacidade em alguns países como a Alemanha.",
"AnonymizeIpMaskLengtDescription": "Selecione quantos bytes de IPs dos visitantes deve ser mascarado.",
"AnonymizeIpMaskLength": "%1$s byte(s) - e.g. %2$s",
- "CannotLockSoDeleteLogActions": "A tabela log_action não será purgada: por favor, conceder o privilégio LOCK TABLES para o usuário MYSQL '%s'.",
"ClickHereSettings": "Clique aqui para acessar as configurações do %s.",
"CurrentDBSize": "Tamanho atual do banco de dados",
"DBPurged": "DB purgado.",
diff --git a/plugins/PrivacyManager/lang/ro.json b/plugins/PrivacyManager/lang/ro.json
index 6cc21da90e..3c7c14e03f 100644
--- a/plugins/PrivacyManager/lang/ro.json
+++ b/plugins/PrivacyManager/lang/ro.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "Ascunde ultimele cifre ale IP-ului vizitatorilor pentru a fi în conformitate cu legile privind protecţia datelor personale.",
"AnonymizeIpMaskLengtDescription": "Selectați cât de multe bytes al IP-urilor de visitatori ar trebui să fie mascate.",
"AnonymizeIpMaskLength": "%1$s octet(ii)- ex. %2$s",
- "CannotLockSoDeleteLogActions": "Tabelul de acțiune jurnal nu va fi sters: vă rugăm să se acorde privilegiul LOCK TABLES pentru '%s' utilizatorul MySQL.",
"ClickHereSettings": "Dă click aici pentru a accesa setările %s.",
"CurrentDBSize": "Dimensiunea bazei de date curenta",
"DBPurged": "DB curățat.",
diff --git a/plugins/PrivacyManager/lang/ru.json b/plugins/PrivacyManager/lang/ru.json
index fb766962dc..4d6562b9f4 100644
--- a/plugins/PrivacyManager/lang/ru.json
+++ b/plugins/PrivacyManager/lang/ru.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Когда пользователи посещают ваш сайт, Piwik не будет использовать полный IP-адрес (например, %1$s), а анонимизирует его (например, в %2$s). Анонимизация IP-адреса является одним из требований, установленных законами о конфиденциальности в некоторых странах, таких как Германия.",
"AnonymizeIpMaskLengtDescription": "Выберите, как много байтов IP-адреса посетителей должно быть скрыто.",
"AnonymizeIpMaskLength": "%1$s байт(ов), например, %2$s",
- "CannotLockSoDeleteLogActions": "Таблица log_action не будет удалена: пожалуйста, установите привелегии LOCK TABLES для ’%s’ пользователя MYSQL.",
"ClickHereSettings": "Нажмите здесь, чтобы перейти к настройкам: %s.",
"CurrentDBSize": "Текущий размер базы данных",
"DBPurged": "База данных очищена.",
diff --git a/plugins/PrivacyManager/lang/sq.json b/plugins/PrivacyManager/lang/sq.json
index 708c63a31a..7da395409b 100644
--- a/plugins/PrivacyManager/lang/sq.json
+++ b/plugins/PrivacyManager/lang/sq.json
@@ -5,7 +5,7 @@
"AnonymizeIpExtendedHelp": "Kur përdoruesit vizitojnë sajtin tuaj, Piwik-u s’do të përdorë adresën e plotë IP (të tillë si %1$s), por në vend të kësaj Piwik-u së pari do ta anonimizojë (si %2$s). Anonimizimi i adresave IP është një nga domosdoshmëritë e vendosura nga ligjet mbi privatësinë në disa vende, si Gjermania, fjala vjen.",
"AnonymizeIpMaskLengtDescription": "Përzgjidhni sa bajte të maskohen te IP-ja e vizitorit.",
"AnonymizeIpMaskLength": "%1$s bajt(e) - p.sh. %2$s",
- "CannotLockSoDeleteLogActions": "Tabela log_action nuk do të pastrohet: ju lutemi, akordojini privilegjin LOCK TABLES përdoruesit MySQL '%s'.",
+ "CannotLockSoDeleteLogActions": "Tabela log_action nuk do të spastrohet: ju lutemi, akordojini privilegjin LOCK TABLES përdoruesit '%s' MySQL.",
"ClickHereSettings": "Klikoni këtu që të shkoni te rregullimet mbi %s.",
"CurrentDBSize": "Madhësia e tanishme e bazës së të dhënave",
"DBPurged": "DB-ja u pastrua.",
diff --git a/plugins/PrivacyManager/lang/sr.json b/plugins/PrivacyManager/lang/sr.json
index ecaf616498..b9dce39924 100644
--- a/plugins/PrivacyManager/lang/sr.json
+++ b/plugins/PrivacyManager/lang/sr.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "Kada korisnik poseti vaš sajt, Piwik neće koristiti punu IP adresu (poput %1$s) već će je anonimizirati (u %2$s). Anonimizacija IP adresa je jedan od zahteva koje su postavili zakoni o zaštit privatnosti u zemljama poput Nemačke.",
"AnonymizeIpMaskLengtDescription": "Izaberite koliko bajtova IP adrese treba da bude maskirano",
"AnonymizeIpMaskLength": "%1$s bajt(ova) - npr. %2$s",
- "CannotLockSoDeleteLogActions": "Tabela log_action ne može biti očišćena. Potrebno je da MYSQL korisnik '%s' ima privilegiju LOCK TABLES",
"ClickHereSettings": "Kliknite ovde kako biste pristupili %s podešavanjima.",
"CurrentDBSize": "Trenutna veličina baze",
"DBPurged": "Baza je očišćena",
diff --git a/plugins/PrivacyManager/lang/sv.json b/plugins/PrivacyManager/lang/sv.json
index aeefdffd2f..0f8e9c4ebe 100644
--- a/plugins/PrivacyManager/lang/sv.json
+++ b/plugins/PrivacyManager/lang/sv.json
@@ -5,7 +5,6 @@
"AnonymizeIpExtendedHelp": "När användare besöker din webbplats kommer inte Piwik använda deras fullständiga IP-adress (exempelvis %1$s). Istället kommer Piwik anonymisera den först (till %2$s). Anonymisering av IP-adresser är ett krav enligt personuppgiftslagen i några länder såsom Tyskland.",
"AnonymizeIpMaskLengtDescription": "Välj hur många bytes av besökares IP-adresser som ska döljas.",
"AnonymizeIpMaskLength": "%1$s byte(s) - t.ex. %2$s",
- "CannotLockSoDeleteLogActions": "Tabellen log_action kommer inte att rensas: vänligen lägg till behörigheten LOCK TABLES till MYSQL-användaren '%s'",
"ClickHereSettings": "Klicka här för att komma åt inställningar för %s.",
"CurrentDBSize": "Aktuell databasstorlek",
"DBPurged": "DB rensad.",
diff --git a/plugins/PrivacyManager/lang/tl.json b/plugins/PrivacyManager/lang/tl.json
index 96973bb979..86e78caf56 100644
--- a/plugins/PrivacyManager/lang/tl.json
+++ b/plugins/PrivacyManager/lang/tl.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "E-Anonymize ang huling byte ng IP address ng iyong mga bisita upang sumunod sa iyong mga alituntuning local at privacy.",
"AnonymizeIpMaskLengtDescription": "Piliin kung gaano karaming byte ng IP ng bisita ang dapat na ikubli.",
"AnonymizeIpMaskLength": "%1$s (na) byte - hal %2$s",
- "CannotLockSoDeleteLogActions": "Ang log_action table ay hindi maaring dayain: mangyaring magbigay ng pribilehiyo upang maisagawa ang LOCK TABLES sa '%s' MYSQL user.",
"ClickHereSettings": "Mag-click dito upang i-access ang mga setting sa %s.",
"CurrentDBSize": "Kasalukuyang laki ng database",
"DBPurged": "DB purged",
diff --git a/plugins/PrivacyManager/lang/uk.json b/plugins/PrivacyManager/lang/uk.json
index 2fdc90d4f1..755f635c67 100644
--- a/plugins/PrivacyManager/lang/uk.json
+++ b/plugins/PrivacyManager/lang/uk.json
@@ -5,7 +5,7 @@
"AnonymizeIpExtendedHelp": "Коли користувачі відвідують ваш сайт, Piwik не використовуватиме повний IP-адрес (наприклад, %1$s), а анонимизирует его (например, в %2$s). Анонимизация IP-адреса является одним из требований, установленных законами о конфиденциальности в некоторых странах, таких как Германия.",
"AnonymizeIpMaskLengtDescription": "Виберіть, як багато байтів IP-адреси відвідувачів повинно бути приховано.",
"AnonymizeIpMaskLength": "%1$s байт(ів), наприклад, %2$s",
- "CannotLockSoDeleteLogActions": "Таблиця log_action не буде видалена: будь ласка, встановіть привілеї LOCK TABLES для ’%s’ користувача MYSQL.",
+ "CannotLockSoDeleteLogActions": "Таблиця log_action не буде очищена: надайте, будь ласка, LOCK TABLES привілей до '%s' користувача MySQL.",
"ClickHereSettings": "Натисніть тут, щоб перейти до налаштувань: %s.",
"CurrentDBSize": "Поточний розмір бази даних",
"DBPurged": "База даних очищена.",
diff --git a/plugins/PrivacyManager/lang/vi.json b/plugins/PrivacyManager/lang/vi.json
index 51f53b67b0..f9f1305b07 100644
--- a/plugins/PrivacyManager/lang/vi.json
+++ b/plugins/PrivacyManager/lang/vi.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "Làm ẩn danh những byte(s) cuối trên địa chỉ IP của khách để tuân thủ quy định\/luật nội bộ về quyền riêng tư.",
"AnonymizeIpMaskLengtDescription": "Chọn bao nhiêu byte IPs của khách truy cập nên giấu.",
"AnonymizeIpMaskLength": "%1$s byte(s) - ví dụ %2$s.",
- "CannotLockSoDeleteLogActions": "Bảng log_action sẽ không được thanh lọc: xin cấp đặc quyền LOCK TABLES cho '%s' người sử dụng MySQL.",
"ClickHereSettings": "Click chuột tại đây để truy cập các cài đặt %s.",
"CurrentDBSize": "Kích thước cơ sở dữ liệu hiện tại",
"DBPurged": "Loại bỏ DB.",
diff --git a/plugins/PrivacyManager/lang/zh-cn.json b/plugins/PrivacyManager/lang/zh-cn.json
index 6b553c7a0c..cd4ffef0d9 100644
--- a/plugins/PrivacyManager/lang/zh-cn.json
+++ b/plugins/PrivacyManager/lang/zh-cn.json
@@ -4,7 +4,6 @@
"AnonymizeIpInlineHelp": "隐藏访客IP位址最后一个字符以符合您当地的隐私条例\/政策。",
"AnonymizeIpMaskLengtDescription": "隐藏的访客IP的字节数",
"AnonymizeIpMaskLength": "%1$s 字节 - 例如 %2$s",
- "CannotLockSoDeleteLogActions": "log_action 表将不会被清空: 请设置 LOCK TABLES 的权限给 '%s' MYSQL 用户。",
"ClickHereSettings": "点这里查看 %s 设置。",
"CurrentDBSize": "当前数据库大小",
"DBPurged": "数据库清理完成。",
diff --git a/plugins/ProfessionalServices/ProfessionalServices.php b/plugins/ProfessionalServices/ProfessionalServices.php
index 203c3bb6f6..442f29edfe 100644
--- a/plugins/ProfessionalServices/ProfessionalServices.php
+++ b/plugins/ProfessionalServices/ProfessionalServices.php
@@ -8,6 +8,8 @@
namespace Piwik\Plugins\ProfessionalServices;
+use Piwik\Common;
+
class ProfessionalServices extends \Piwik\Plugin
{
/**
@@ -18,6 +20,8 @@ class ProfessionalServices extends \Piwik\Plugin
return array(
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'Request.getRenamedModuleAndAction' => 'renameProfessionalServicesModule',
+ 'Template.afterGoalConversionOverviewReport' => 'getGoalOverviewPromo',
+ 'Template.afterEventsReport' => 'getEventsPromo',
);
}
@@ -45,4 +49,40 @@ class ProfessionalServices extends \Piwik\Plugin
}
}
}
+
+ public function isRequestForDashboardWidget()
+ {
+ $isWidget = Common::getRequestVar('widget', 0, 'int');
+ return $isWidget;
+ }
+
+ public function getGoalOverviewPromo(&$out)
+ {
+ if(\Piwik\Plugin\Manager::getInstance()->isPluginActivated('AbTesting')
+ || $this->isRequestForDashboardWidget()) {
+ return;
+ }
+
+ $out .= '
+ <p style="margin-top:3em" class=" alert-info alert">Did you know?
+ With <a target="_blank" rel="noreferrer" href="https://piwik.org/recommends/ab-testing-learn-more/">A/B Testing for Piwik</a> you can immediately increase conversions and sales by creating different versions of a page to see which grows your business.
+ </p>
+ ';
+ }
+
+ public function getEventsPromo(&$out)
+ {
+ if($this->isRequestForDashboardWidget()) {
+ return;
+ }
+ $inlineAd = '';
+ if(!\Piwik\Plugin\Manager::getInstance()->isPluginActivated('MediaAnalytics')) {
+ $inlineAd = '<br/>When you publish videos or audios, <a target="_blank" rel="noreferrer" href="https://piwik.org/recommends/media-analytics-website">Media Analytics gives deep insights into your audience</a> and how they watch your videos or listens to your music.';
+ }
+ $out .= '<p style="margin-top:3em" class=" alert-info alert">Did you know?
+ <br/>Using Events you can measure any user interaction and gain amazing insights into your audience. <a target="_blank" href="?module=Proxy&action=redirect&url=http://piwik.org/docs/event-tracking/">Learn more</a>.
+ <br/> To measure blocks of content such as image galleries, listings or ads: use <a target="_blank" href="?module=Proxy&action=redirect&url=http://developer.piwik.org/guides/content-tracking">Content Tracking</a> and see exactly which content is viewed and clicked.
+ ' . $inlineAd . '
+ </p>';
+ }
}
diff --git a/plugins/ProfessionalServices/Promo.php b/plugins/ProfessionalServices/Promo.php
index 36f8ae155d..afbe6d0bd0 100644
--- a/plugins/ProfessionalServices/Promo.php
+++ b/plugins/ProfessionalServices/Promo.php
@@ -8,44 +8,84 @@
namespace Piwik\Plugins\ProfessionalServices;
+use Piwik\ProfessionalServices\Advertising;
+
class Promo
{
protected $linkTitles = array('Read more', 'Learn more');
- protected $content = array(
- array(
- 'campaignContent' => 'discoverPower',
- 'text' => 'Discover the power of open-source combined with enterprise-grade support and premium functionalities.'
- ),
- array(
- 'campaignContent' => 'bringEnterpriseLevel',
- 'text' => 'Bring your analytics to enterprise level. Upgrade your Piwik platform and receive access to numerous premium features and assistance from experts.'
- ),
- array(
- 'campaignContent' => 'funnelAnalytics',
- 'text' => 'Want Funnel Analytics? Get Premium features and enterprise-grade support.'
- ),
- array(
- 'campaignContent' => 'monitoringAndIncident',
- 'text' => 'Do you need 24/7 Monitoring and Incident Handling for your Piwik? Get Premium features and enterprise-grade support.'
- ),
- array(
- 'campaignContent' => 'slowingDown',
- 'text' => 'Is your Piwik slowing down? Piwik experts can help with your server setup!'
- ),
- array(
- 'campaignContent' => 'excitingFeatures',
- 'text' => 'Want to know how to use all the exciting features in Piwik? Try a User training to be up to speed with working with Piwik.'
- ),
- array(
- 'campaignContent' => 'slowingDown',
- 'text' => 'Did you know you can adjust the look and feel of Piwik to your brand, and even replace "Piwik" with your product name? Try the White Label product!',
- ),
- array(
- 'campaignContent' => 'metaSites',
- 'text' => 'Did you know you can aggregate the tracked data across hundreds of sites and display it in a single dashboard? Get Premium features and enterprise-grade support.',
- ),
- );
+ protected $content = array();
+
+ public function __construct()
+ {
+ $this->content = array(
+ // A/B Testing
+ array(
+ 'campaignContent' => 'abTesting',
+ 'url' => 'https://piwik.org/recommends/ab-testing-learn-more',
+ 'text' => 'Ever wondered what A/B testing is and why it is so important? Check out how you can increase conversions and sales on your website and app.'
+ ),
+ array(
+ 'campaignContent' => 'abTesting',
+ 'url' => ' https://piwik.org/recommends/ab-testing-website',
+ 'text' => 'Increase revenue and conversions by comparing different versions of your websites or apps, ad detect the winning variation that will grow your business!'
+ ),
+
+ // Media Analytics
+ array(
+ 'campaignContent' => 'mediaAnalytics',
+ 'url' => 'https://piwik.org/recommends/media-analytics-website',
+ 'text' => 'Ever wondered how people interact and engage with videos or audios on your website? Well now you can, and it integrates perfectly into your Piwik.',
+ ),
+
+ array(
+ 'campaignContent' => 'mediaAnalytics',
+ 'url' => 'https://piwik.org/recommends/media-analytics',
+ 'text' => 'Get powerful insights into how your audience watches your videos and listens to your audio. Media Analytics is now available on the Marketplace.',
+ ),
+
+ // Piwik training
+ array(
+ 'campaignContent' => 'userTraining',
+ 'url' => 'https://piwik.org/training/?pk_campaign=' . Advertising::CAMPAIGN_NAME_PROFESSIONAL_SERVICES . '&pk_source=Piwik_App',
+ 'text' => 'Want to know how to use all the exciting features in Piwik? Try a User training to be up to speed with working with Piwik.'
+ ),
+
+
+ // Piwik PRO
+ // https://piwik.org/recommends/piwik-pro-from-app
+ array(
+ 'campaignContent' => 'discoverPower',
+ 'url' => 'https://piwik.org/recommends/piwik-pro-from-app',
+ 'text' => 'Discover the power of open-source combined with enterprise-grade support and premium functionalities.'
+ ),
+ array(
+ 'campaignContent' => 'bringEnterpriseLevel',
+ 'url' => 'https://piwik.org/recommends/piwik-pro-from-app',
+ 'text' => 'Bring your analytics to enterprise level. Upgrade your Piwik platform and receive access to numerous premium features and assistance from experts.'
+ ),
+ array(
+ 'campaignContent' => 'monitoringAndIncident',
+ 'url' => 'https://piwik.org/recommends/piwik-pro-from-app',
+ 'text' => 'Do you need 24/7 Monitoring and Incident Handling for your Piwik? Get Premium features and enterprise-grade support.'
+ ),
+ array(
+ 'campaignContent' => 'slowingDown',
+ 'url' => 'https://piwik.org/recommends/piwik-pro-from-app',
+ 'text' => 'Is your Piwik slowing down? Piwik experts can help with your server setup!'
+ ),
+ array(
+ 'campaignContent' => 'whiteLabel',
+ 'url' => 'https://piwik.org/recommends/piwik-pro-from-app',
+ 'text' => 'Did you know you can adjust the look and feel of Piwik to your brand, and even replace "Piwik" with your product name? Try the White Label product!',
+ ),
+ array(
+ 'campaignContent' => 'metaSites',
+ 'url' => 'https://piwik.org/recommends/piwik-pro-from-app',
+ 'text' => 'Did you know you can aggregate the collected data across hundreds of sites and display it in a single dashboard? Get Premium features and enterprise-grade support.',
+ )
+ );
+ }
public function getLinkTitle()
{
diff --git a/plugins/ProfessionalServices/Widgets/PromoServices.php b/plugins/ProfessionalServices/Widgets/PromoServices.php
index 516d5860c6..8a34d5500e 100644
--- a/plugins/ProfessionalServices/Widgets/PromoServices.php
+++ b/plugins/ProfessionalServices/Widgets/PromoServices.php
@@ -47,7 +47,7 @@ class PromoServices extends \Piwik\Widget\Widget
$promo = $this->promo->getContent();
- $view->ctaLinkUrl = $this->advertising->getPromoUrlForPiwikProUpgrade();
+ $view->ctaLinkUrl = $promo['url'];
$view->ctaText = $promo['text'];
$view->ctaLinkTitle = $this->promo->getLinkTitle();
diff --git a/plugins/ProfessionalServices/lang/en.json b/plugins/ProfessionalServices/lang/en.json
index 1f275d103f..86d44f4d0a 100644
--- a/plugins/ProfessionalServices/lang/en.json
+++ b/plugins/ProfessionalServices/lang/en.json
@@ -1,5 +1,5 @@
{
"ProfessionalServices": {
- "WidgetProfessionalServicesForPiwik": "Professional Services for Piwik"
+ "WidgetProfessionalServicesForPiwik": "Premium Products & Services for Piwik"
}
} \ No newline at end of file
diff --git a/plugins/QueuedTracking b/plugins/QueuedTracking
-Subproject d68e14d20335db82a8aa2c3582bdf0dc20a0410
+Subproject b179eb06839c038b549059660fc1b86533c8c97
diff --git a/plugins/Referrers/API.php b/plugins/Referrers/API.php
index 40286cd86b..e1d5b86fbc 100644
--- a/plugins/Referrers/API.php
+++ b/plugins/Referrers/API.php
@@ -42,8 +42,7 @@ class API extends \Piwik\Plugin\API
*/
protected function getDataTable($name, $idSite, $period, $date, $segment, $expanded = false, $idSubtable = null)
{
- $dataTable = Archive::getDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded, $idSubtable);
- $dataTable->queueFilter('ReplaceColumnNames');
+ $dataTable = Archive::createDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded, $flat=false, $idSubtable);
return $dataTable;
}
diff --git a/plugins/Resolution/Resolution.php b/plugins/Resolution/Resolution.php
index 7bd8cc3be0..5ab7692ccf 100644
--- a/plugins/Resolution/Resolution.php
+++ b/plugins/Resolution/Resolution.php
@@ -23,7 +23,6 @@ class Resolution extends \Piwik\Plugin
{
return array(
'Live.getAllVisitorDetails' => 'extendVisitorDetails',
- 'Request.getRenamedModuleAndAction' => 'renameUserSettingsModuleAndAction',
);
}
@@ -33,11 +32,4 @@ class Resolution extends \Piwik\Plugin
$visitor['resolution'] = $instance->getResolution();
}
-
- public function renameUserSettingsModuleAndAction(&$module, &$action)
- {
- if ($module == 'UserSettings' && ($action == 'getResolution' || $action == 'getConfiguration')) {
- $module = 'Resolution';
- }
- }
}
diff --git a/plugins/Resolution/tests/System/UserSettingsBCTest.php b/plugins/Resolution/tests/System/UserSettingsBCTest.php
deleted file mode 100644
index beae888701..0000000000
--- a/plugins/Resolution/tests/System/UserSettingsBCTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-namespace Piwik\Plugins\Resolution\tests\System;
-
-use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
-
-/**
- * @group Resolution
- * @group Resolution_System
- */
-class UserSettingsBCTest extends SystemTestCase
-{
- /**
- * @var OneVisitorTwoVisits
- */
- public static $fixture;
-
- /**
- * @dataProvider getApiForTesting
- */
- public function test_Api($api, $params)
- {
- $this->runApiTests($api, $params);
- }
-
- public function getApiForTesting()
- {
- $idSite = self::$fixture->idSite;
- $dateTime = self::$fixture->dateTime;
-
- $api = array(
- 'UserSettings.getResolution',
- 'UserSettings.getConfiguration',
- );
-
- $result = array();
-
-
- foreach ($api as $method) {
- list($module, $action) = explode('.', $method);
-
- // api test (uses hack to test UserSettings which doesn't exist anymore. we say we're testing
- // against Resolution & overwrite the module & action w/ otherRequestParameters)
- $result[] = array('Resolution.getResolution', array('idSite' => $idSite,
- 'date' => $dateTime,
- 'periods' => array('day'),
- 'testSuffix' => $module . '_' . $method . '_',
- 'otherRequestParameters' => array(
- 'method' => $method,
- ),
- ));
-
- // api metadata tests
- $result[] = array('API.getMetadata', array(
- 'idSite' => $idSite,
- 'date' => $dateTime,
- 'apiModule' => $module,
- 'apiAction' => $action,
- 'testSuffix' => $module . '_' . $method . '_',
- ));
- }
-
- return $result;
- }
-
- public static function getPathToTestDirectory()
- {
- return dirname(__FILE__);
- }
-}
-
-UserSettingsBCTest::$fixture = new OneVisitorTwoVisits(); \ No newline at end of file
diff --git a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___API.getMetadata_day.xml b/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___API.getMetadata_day.xml
deleted file mode 100644
index 991d2dbc51..0000000000
--- a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___API.getMetadata_day.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Software</subcategory>
- <name>Configurations</name>
- <module>Resolution</module>
- <action>getConfiguration</action>
- <dimension>Configuration</dimension>
- <documentation>This report shows the most common overall configurations that your visitors had. A configuration is the combination of an operating system, a browser type and a screen resolution.</documentation>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Screen Resolution</name>
- <module>Resolution</module>
- <action>getResolution</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Resolution&amp;apiAction=getConfiguration&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Resolution&amp;apiAction=getConfiguration&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>Resolution_getConfiguration</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___Resolution.getResolution_day.xml b/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___Resolution.getResolution_day.xml
deleted file mode 100644
index a4804d3e5d..0000000000
--- a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getConfiguration___Resolution.getResolution_day.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>Windows / Firefox / 1024x768</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___API.getMetadata_day.xml b/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___API.getMetadata_day.xml
deleted file mode 100644
index c0f6929125..0000000000
--- a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___API.getMetadata_day.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Devices</subcategory>
- <name>Screen Resolution</name>
- <module>Resolution</module>
- <action>getResolution</action>
- <dimension>Resolution</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Configurations</name>
- <module>Resolution</module>
- <action>getConfiguration</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Resolution&amp;apiAction=getResolution&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Resolution&amp;apiAction=getResolution&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>Resolution_getResolution</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___Resolution.getResolution_day.xml b/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___Resolution.getResolution_day.xml
deleted file mode 100644
index 2d97656958..0000000000
--- a/plugins/Resolution/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getResolution___Resolution.getResolution_day.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>1024x768</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <segment>resolution==1024x768</segment>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/ScheduledReports/API.php b/plugins/ScheduledReports/API.php
index be34d120fc..9e54c6baa6 100644
--- a/plugins/ScheduledReports/API.php
+++ b/plugins/ScheduledReports/API.php
@@ -377,6 +377,7 @@ class API extends \Piwik\Plugin\API
'apiModule' => $apiModule,
'apiAction' => $apiAction,
'apiParameters' => $apiParameters,
+ 'flat' => 1,
'idGoal' => false,
'language' => $language,
'serialize' => 0,
diff --git a/plugins/ScheduledReports/lang/uk.json b/plugins/ScheduledReports/lang/uk.json
index 3ed750852d..52b6471152 100644
--- a/plugins/ScheduledReports/lang/uk.json
+++ b/plugins/ScheduledReports/lang/uk.json
@@ -1,5 +1,6 @@
{
"ScheduledReports": {
+ "AggregateReportsFormat": "Параметри відображення",
"AggregateReportsFormat_GraphsOnly": "Відображати тільки графіки (без звітних таблиць)",
"AggregateReportsFormat_TablesAndGraphs": "Відображати таблиці і графіки для всіх звітів",
"AggregateReportsFormat_TablesOnly": "(за замовчуванням) Відображати таблиці звітів (графіки тільки для ключових показетелей)",
@@ -28,6 +29,7 @@
"PluginDescription": "Створює користувальницькі звіти і планує їх відправку поштою щодня, щотижня або щомісяця для одного або кількох людей. Підтримує деякі формати звітів (html, pdf, csv, зображення).",
"ReportFormat": "Формат звіту",
"ReportHour": "Відправити звіт о %s годині",
+ "ReportHourWithUTC": "%s годин UTC",
"ReportIncludeNWebsites": "Звіт буде містити основні показники для всіх сайтів, у яких було хоча б одне відвідування (всього зараз доступно %s сайтів).",
"ReportSent": "Надіслати звіт",
"ReportsIncluded": "Дані, включені у звіт",
diff --git a/plugins/SecurityInfo b/plugins/SecurityInfo
-Subproject 48a4541999e6fded6820d8363b6671a0d0dbb0e
+Subproject 25f687ceb89664789b419e0bcbf48f8c7ca476a
diff --git a/plugins/SegmentEditor/lang/uk.json b/plugins/SegmentEditor/lang/uk.json
index 4c2c32c1eb..9376db532a 100644
--- a/plugins/SegmentEditor/lang/uk.json
+++ b/plugins/SegmentEditor/lang/uk.json
@@ -6,11 +6,14 @@
"AreYouSureDeleteSegment": "Ви впевнені, що хочете видалити цей сегмент?",
"AutoArchivePreProcessed": "сегментовані звіти проходять попередню обробку (швидше, вимагає cron)",
"AutoArchiveRealTime": "сегментовані звіти обробляються в режимі реального часу",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Ви збираєтеся змінити визначення сегмента. Аналітичні звіти для цього нового сегмента не будуть доступні, поки звіти не будуть повторно оброблені. Це може зайняти кілька годин для звітів даних, щоб показати їх для цього сегменту. Продовжити?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Ви збираєтеся змінити визначення сегмента. Аналітичні звіти для цього, нового сегменту будуть перероблені на першу вимогу в наступний раз, коли ви запитаєте їх. Ваші повідомлення можуть зайняти кілька хвилин, для відобрежаення. Продовжити?",
"ChooseASegment": "Виберіть сегмент",
"CurrentlySelectedSegment": "В даний час обрано сегмент: %s",
"DataAvailableAtLaterDate": "Ваш сегментовані звіти аналітики будуть доступні пізніше. Ми приносимо свої вибачення за доставлені незручності.",
"DefaultAllVisits": "Всі візити",
"DragDropCondition": "Drag & Drop переміщення",
+ "HideMessageInFuture": "Приховати це повідомлення у майбутньому",
"LoadingSegmentedDataMayTakeSomeTime": "Обробка сегментованих даних відвідувач може зайняти кілька хвилин...",
"OperatorAND": "AND",
"OperatorOR": "OR",
diff --git a/plugins/SitesManager/lang/uk.json b/plugins/SitesManager/lang/uk.json
index b0a99b02eb..7d5778f5f9 100644
--- a/plugins/SitesManager/lang/uk.json
+++ b/plugins/SitesManager/lang/uk.json
@@ -33,6 +33,7 @@
"GlobalListExcludedQueryParameters": "Загальний список запитів URL-параметрів для виключення",
"GlobalListExcludedUserAgents": "Загальний список користувацьких агентів для виключення",
"GlobalListExcludedUserAgents_Desc": "Якщо рядок user-agent'а відвідувача містить рядки, які ви вказали – Piwik не враховуватиме відвідування.",
+ "GlobalSettings": "Глобальні налаштування",
"GlobalWebsitesSettings": "Загальні настройки сайтів",
"HelpExcludedIps": "Введіть список IP адрес, по одному на кожен рядок, які ви хочете виключити і не враховувати в веб-аналітиці. Можна вводити групою, напр. %1$s або %2$s",
"JsTrackingTagHelp": "Це код JavaScript, який необхідно вставити в усі ваші сторінки",
@@ -44,6 +45,7 @@
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Запити URL-параметрів нижче будуть виключені і не будуть враховуватися при зборі статистики на всіх сайтах.",
"ListOfQueryParametersToExclude": "Введіть список запитів URL-параметрів по одному на кожен рядок, щоб виключити їх зі сторінки зі звітами по URL.",
"MainDescription": "Для ведення статистики потрібно додати сайти. Додавайте, оновлюйте, видаляйте інформацію про сайти, а також перегляньте JavaScript-код для вставки на ваші сторінки.",
+ "MenuManage": "Управління",
"NotAnEcommerceSite": "Сайт без ел. комерції",
"NotFound": "Не знайдено сайтів для",
"NoWebsites": "Ви не маєте жодного сайту на обліку.",
@@ -75,6 +77,7 @@
"TrackingSiteSearch": "Відстежувати внутрішній пошук по сайту",
"TrackingTags": "Код відстеження для %s",
"Urls": "URL-и",
+ "Type": "Тип",
"UTCTimeIs": "Час UTC: %s.",
"OnlyMatchedUrlsAllowed": "Тільки відстеження відвідування та дії, коли URL-адреса дії починається з однієї з URL-адрес вище.",
"OnlyMatchedUrlsAllowedHelp": "Якщо ця функція включена, Piwik буде відслідковувати тільки внутрішні дії, коли URL сторінки є одна з найбільш відомих URL-адрес на вашому сайті. Це заважає людям спамити аналітику з URL-адрес для інших сайтів.",
diff --git a/plugins/SitesManager/templates/sites-list/site-fields.html b/plugins/SitesManager/templates/sites-list/site-fields.html
index 89f4befd81..f448ddbcfc 100644
--- a/plugins/SitesManager/templates/sites-list/site-fields.html
+++ b/plugins/SitesManager/templates/sites-list/site-fields.html
@@ -71,7 +71,7 @@
<div class="form-group row">
<div class="col s12 m6 input-field">
- <input type="text" ng-model="site.name"/>
+ <input type="text" ng-model="site.name" maxlength="90" />
<label>{{ 'General_Name'|translate }}</label>
</div>
<div class="col s12 m6"></div>
diff --git a/plugins/TasksTimetable b/plugins/TasksTimetable
-Subproject cf1f3e45e4d1065d0a262e3b00fcb17ea59896b
+Subproject 393f5eac779ec981630dcd74316e8c2acd236f1
diff --git a/plugins/Transitions/lang/pt.json b/plugins/Transitions/lang/pt.json
new file mode 100644
index 0000000000..c5647b76bd
--- /dev/null
+++ b/plugins/Transitions/lang/pt.json
@@ -0,0 +1,5 @@
+{
+ "Transitions": {
+ "DirectEntries": "Entradas diretas"
+ }
+} \ No newline at end of file
diff --git a/plugins/Transitions/lang/uk.json b/plugins/Transitions/lang/uk.json
index 039e843094..8eb7f3967b 100644
--- a/plugins/Transitions/lang/uk.json
+++ b/plugins/Transitions/lang/uk.json
@@ -4,6 +4,9 @@
"DirectEntries": "Gрямих входів",
"ErrorBack": "Повернутися до попередньої дії",
"ExitsInline": "%s виходів з сайту",
+ "NumPageviews": "%s переглядів сторінок",
+ "NumDownloads": "%s завантажень",
+ "NumOutlinks": "%s вихідних посилань",
"FromCampaigns": "з кампаній",
"FromPreviousPages": "з внутрішніх сторінок",
"FromPreviousPagesInline": "%s з внутрішніх сторінок",
diff --git a/plugins/TreemapVisualization b/plugins/TreemapVisualization
-Subproject a570cc0efd4068e355674904fcfce2c8b3e42ae
+Subproject d062754c862f69c31787890dd9b718ed48e9452
diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php
index a9dbd0c414..f36e7e70b8 100644
--- a/plugins/UserCountry/API.php
+++ b/plugins/UserCountry/API.php
@@ -198,6 +198,26 @@ class API extends \Piwik\Plugin\API
return $location;
}
+ /**
+ * Set the location provider
+ *
+ * @param string $providerId The ID of the provider to use eg 'default', 'geoip_php', ...
+ * @throws Exception if ID is invalid
+ */
+ public function setLocationProvider($providerId)
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ if (!UserCountry::isGeoLocationAdminEnabled()) {
+ throw new \Exception('Setting geo location has been disabled in config.');
+ }
+
+ $provider = LocationProvider::setCurrentProvider($providerId);
+ if ($provider === false) {
+ throw new Exception("Invalid provider ID: '$providerId'.");
+ }
+ }
+
protected function getDataTable($name, $idSite, $period, $date, $segment)
{
Piwik::checkUserHasViewAccess($idSite);
diff --git a/plugins/UserCountry/Controller.php b/plugins/UserCountry/Controller.php
index a089c60c28..a6a3bd9fbe 100644
--- a/plugins/UserCountry/Controller.php
+++ b/plugins/UserCountry/Controller.php
@@ -284,31 +284,6 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
}
/**
- * Sets the current LocationProvider type.
- *
- * Input:
- * Requires the 'id' query parameter to be set to the desired LocationProvider's ID.
- *
- * Output:
- * Nothing.
- */
- public function setCurrentLocationProvider()
- {
- $this->dieIfGeolocationAdminIsDisabled();
- Piwik::checkUserHasSuperUserAccess();
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- $this->checkTokenInUrl();
-
- $providerId = Common::getRequestVar('id');
- $provider = LocationProvider::setCurrentProvider($providerId);
- if ($provider === false) {
- throw new Exception("Invalid provider ID: '$providerId'.");
- }
- return 1;
- }
- }
-
- /**
* Echo's a pretty formatted location using a specific LocationProvider.
*
* Input:
diff --git a/plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js b/plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js
index 1c431d76e8..5df7ba187c 100644
--- a/plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js
+++ b/plugins/UserCountry/angularjs/location-provider-selection/location-provider-selection.controller.js
@@ -51,9 +51,8 @@
piwikApi.withTokenInUrl();
piwikApi.fetch({
- module: 'UserCountry',
- action: 'setCurrentLocationProvider',
- id: this.selectedProvider
+ method: 'UserCountry.setLocationProvider',
+ providerId: this.selectedProvider
}).then(function () {
self.isLoading = false;
var UI = require('piwik/UI');
diff --git a/plugins/UserCountry/lang/uk.json b/plugins/UserCountry/lang/uk.json
index 0392a92109..87a786de58 100644
--- a/plugins/UserCountry/lang/uk.json
+++ b/plugins/UserCountry/lang/uk.json
@@ -94,5 +94,8 @@
"UpdaterWasLastRun": "Оновлення останнього запуску в %s.",
"UpdaterWillRunNext": "Заплановано наступний запуск на %s.",
"WidgetLocation": "Місцезнаходження відвідувача"
+ },
+ "Intl": {
+ "Country_TI": "Тибет"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/tests/Integration/APITest.php b/plugins/UserCountry/tests/Integration/APITest.php
new file mode 100644
index 0000000000..a424048258
--- /dev/null
+++ b/plugins/UserCountry/tests/Integration/APITest.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\UserCountry\tests;
+
+use Piwik\Access;
+use Piwik\Common;
+use Piwik\Config;
+use Piwik\Plugins\UserCountry\API;
+use Piwik\Plugins\UserCountry\LocationProvider;
+use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group UserCountry
+ * @group APITest
+ * @group Plugins
+ */
+class APITest extends IntegrationTestCase
+{
+ /**
+ * @var API
+ */
+ private $api;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->api = API::getInstance();
+
+ // reset location providers as they might be manipulated by other tests
+ LocationProvider::$providers = null;
+ LocationProvider::getAllProviders();
+ }
+
+ public function test_setLocationProvider()
+ {
+ $locationProvider = LocationProvider\GeoIp\Php::ID;
+ $this->api->setLocationProvider($locationProvider);
+ $this->assertEquals($locationProvider, Common::getCurrentLocationProviderId());
+
+ $locationProvider = DefaultProvider::ID;
+ $this->api->setLocationProvider($locationProvider);
+ $this->assertEquals($locationProvider, Common::getCurrentLocationProviderId());
+ }
+
+ /**
+ * @expectedException \Exception
+ */
+ public function test_setLocationProviderInvalid()
+ {
+ $locationProvider = 'invalidProvider';
+ $this->api->setLocationProvider($locationProvider);
+ }
+
+ /**
+ * @expectedException \Exception
+ */
+ public function test_setLocationProviderNoSuperUser()
+ {
+ Access::getInstance()->setSuperUserAccess(false);
+
+ $locationProvider = LocationProvider\GeoIp\Php::ID;
+ $this->api->setLocationProvider($locationProvider);
+ }
+
+ /**
+ * @expectedException \Exception
+ */
+ public function test_setLocationProviderDisabledInConfig()
+ {
+ Config::getInstance()->General['enable_geolocation_admin'] = 0;
+
+ $locationProvider = LocationProvider\GeoIp\Php::ID;
+ $this->api->setLocationProvider($locationProvider);
+ }
+}
diff --git a/plugins/UserCountryMap/lang/pt.json b/plugins/UserCountryMap/lang/pt.json
index d717014b3a..15348978f2 100644
--- a/plugins/UserCountryMap/lang/pt.json
+++ b/plugins/UserCountryMap/lang/pt.json
@@ -1,5 +1,6 @@
{
"UserCountryMap": {
+ "Cities": "Cidades",
"map": "mapa"
}
} \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/AF.svg b/plugins/UserCountryMap/svg/AF.svg
index 578ccb3fe0..02430b36ef 100644
--- a/plugins/UserCountryMap/svg/AF.svg
+++ b/plugins/UserCountryMap/svg/AF.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 500 558" height="558px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 500 558" width="500px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="558.330197744" padding="0" w="500"><proj id="laea" lat0="1.0" lon0="16.5"/><bbox h="987.37" w="885.8" x="557.1" y="504.56"/><llbbox lat0="-38.0" lat1="40.0" lon0="-20.0" lon1="53.0"/></view></views></metadata><g id="countries"><path d="M225.8,327.2L224.3,327.8L222.5,331.9L224.6,334.4L226.4,340.2L228.5,344.3L227.0,351.3L228.2,355.5L231.7,362.0L230.2,371.4L223.1,379.3L221.4,387.6L218.2,396.9L218.2,403.0L218.0,405.6L223.4,405.3L227.1,403.6L233.3,406.6L237.3,406.5L262.7,406.6L265.6,409.1L276.1,410.0L278.5,410.9L285.0,410.4L294.1,408.8L296.2,408.4L294.9,407.2L289.1,401.8L287.0,396.7L287.4,376.4L300.1,376.4L301.2,372.4L301.4,362.6L301.2,361.7L301.0,361.8L291.1,363.1L289.9,363.9L289.9,358.3L286.6,351.9L287.2,344.1L286.3,336.9L278.1,336.5L278.4,334.3L271.9,335.0L270.9,335.8L269.6,341.5L264.2,341.2L257.5,342.4L254.5,337.9L249.5,327.1L226.2,326.9L225.8,327.2Z M226.2,318.3L226.0,318.2L221.4,318.2L220.9,319.2L218.9,320.9L219.1,321.1L220.0,323.1L220.2,324.1L220.2,326.0L220.3,326.1L222.2,325.9L224.5,319.0L226.1,318.4L226.2,318.3Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M266.4,1.0L266.1,7.9L266.5,10.0L269.8,14.4L269.8,15.0L271.5,13.4L273.5,12.2L274.9,7.9L275.0,7.4L274.9,7.3L271.9,3.1L272.4,0.8L272.5,0.8L272.5,0.5L272.5,0.0L265.8,0.0L265.8,0.0L265.7,0.5L265.7,0.9L266.4,1.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M499.3,97.3L498.7,97.5L498.4,97.2L497.4,94.5L497.3,94.6L497.0,96.5L491.0,105.7L490.1,108.2L487.4,110.0L482.0,109.9L476.7,111.7L473.0,109.3L472.9,109.7L473.3,111.2L480.8,118.8L497.0,119.7L497.2,119.1L497.1,118.0L497.1,110.1L500.0,108.9L498.1,105.9L500.0,103.4L500.0,98.4L499.9,97.9L499.3,97.3Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M408.0,7.3L408.5,7.2L412.1,8.3L413.8,7.8L416.5,11.6L416.9,12.1L417.2,12.1L417.9,11.7L418.8,11.7L418.7,11.1L416.0,7.2L412.3,5.1L409.8,0.0L399.7,0.0L402.9,5.7L404.8,5.4L407.7,7.1L408.0,7.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M408.0,7.3L408.1,7.5L408.4,7.7L408.5,7.8L413.1,11.6L415.7,12.0L416.9,12.1L416.5,11.6L413.8,7.8L412.1,8.3L408.5,7.2L408.0,7.3Z M418.8,11.7L419.2,11.7L425.4,5.6L427.8,7.3L427.1,11.1L432.7,13.4L431.8,10.8L433.2,8.9L432.5,1.9L434.7,0.0L409.8,0.0L412.3,5.1L416.0,7.2L418.7,11.1L418.8,11.7Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M347.3,302.7L344.3,302.8L341.5,305.5L336.9,304.6L336.8,305.0L336.8,305.3L338.2,307.3L338.1,311.8L339.2,316.1L339.4,317.1L341.5,317.1L345.9,312.4L346.5,311.1L347.3,302.9L347.4,302.8L347.3,302.7Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M161.5,203.6L156.8,199.4L154.4,200.2L154.0,202.0L153.8,202.7L153.6,203.1L150.9,206.0L143.6,208.9L143.5,208.9L143.2,209.6L142.4,213.1L146.1,215.9L146.1,218.9L147.7,222.5L147.5,236.9L148.4,241.8L147.3,242.4L148.7,242.1L151.9,241.6L154.8,241.4L155.5,233.6L155.1,232.6L155.7,222.6L158.1,221.7L162.9,213.0L161.6,204.7L161.9,204.2L161.5,203.6Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M138.8,180.9L133.7,180.3L126.0,184.1L124.3,186.2L122.0,185.4L119.1,187.6L118.7,189.5L116.4,189.6L115.9,192.2L110.2,191.9L109.5,195.5L108.1,197.6L102.0,202.1L101.6,206.5L100.3,207.6L100.0,211.6L99.8,212.0L100.2,212.4L107.6,217.6L111.3,215.8L115.2,216.0L118.5,219.2L118.6,219.0L118.6,218.6L118.7,208.4L126.9,208.3L135.4,207.5L136.9,207.9L138.4,208.2L140.6,208.8L141.1,209.1L141.7,208.9L143.5,208.9L143.6,208.9L150.9,206.0L153.6,203.1L153.8,202.7L153.5,202.4L152.8,198.2L148.4,197.5L145.4,194.9L144.8,192.3L142.4,189.9L139.6,184.3L140.1,181.7L140.2,181.4L138.8,180.9Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M285.7,4.0L286.3,4.1L299.4,4.1L303.5,3.2L303.6,0.8L304.3,1.0L304.2,0.8L304.4,0.4L305.2,0.2L305.4,0.0L285.1,0.0L286.0,1.5L285.7,2.3L285.7,3.9L285.7,4.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M308.4,409.5L301.1,411.4L298.2,413.8L295.0,410.8L280.0,412.9L279.4,438.1L272.9,438.1L272.5,456.8L272.5,457.0L272.8,457.2L274.9,458.7L276.4,469.2L277.1,471.0L285.3,469.6L288.3,466.9L292.1,460.8L300.4,463.8L304.7,463.9L308.5,463.0L310.7,457.5L317.1,453.8L318.9,449.3L323.5,446.8L326.6,443.4L332.8,440.3L334.4,440.2L334.1,439.9L332.4,437.5L325.6,435.3L323.9,432.5L322.6,428.2L321.4,428.2L313.8,420.4L311.9,415.5L308.6,409.9L308.7,409.6L308.4,409.5Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M293.3,210.1L291.1,209.6L285.7,212.8L279.4,220.7L276.4,222.6L266.9,224.0L266.6,227.7L264.4,230.1L257.9,230.6L252.7,233.1L250.3,231.6L246.8,233.5L243.7,233.9L243.0,233.8L242.3,235.0L236.6,243.1L237.6,253.7L240.5,258.0L239.8,258.2L247.0,265.9L247.5,269.7L247.8,270.3L248.3,269.4L250.5,262.0L255.5,261.0L264.3,261.7L264.7,261.9L264.6,260.5L265.3,255.6L267.8,252.1L278.8,255.2L287.5,256.5L292.4,255.1L294.1,253.2L297.9,253.6L304.2,251.3L312.5,249.0L320.1,250.5L323.5,249.7L325.5,250.3L325.0,249.8L324.1,246.8L319.8,244.0L317.8,241.0L318.1,239.7L309.9,233.4L310.3,232.7L306.8,229.0L303.7,228.3L303.0,225.8L302.6,225.7L302.0,225.5L299.0,221.0L299.1,217.7L294.1,211.0L293.6,210.1L293.3,210.1Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M114.1,249.5L113.8,249.7L114.7,249.9L114.9,249.6L114.1,249.5Z M83.1,213.4L83.0,213.7L84.2,221.1L82.9,223.2L79.3,231.5L78.9,231.8L79.0,231.9L80.0,235.3L79.2,237.9L79.9,240.7L82.5,241.3L84.4,254.7L85.2,254.6L91.3,251.9L98.0,249.7L109.6,248.9L114.5,248.1L115.3,249.5L115.4,249.6L117.0,248.2L114.1,239.7L117.5,229.9L119.5,228.0L118.2,221.6L118.7,219.4L118.6,219.0L118.5,219.2L115.2,216.0L111.3,215.8L107.6,217.6L100.2,212.4L99.8,212.0L99.6,211.9L96.3,213.5L95.0,213.0L95.0,209.7L92.1,212.0L83.3,213.4L83.1,213.4Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M243.3,233.3L241.4,228.3L238.7,225.0L232.8,219.5L234.5,216.8L244.2,216.6L241.6,214.2L239.9,208.9L240.6,206.0L238.7,199.3L234.6,195.3L233.4,195.3L234.0,198.5L236.5,200.7L236.7,204.6L230.8,210.6L227.5,219.1L226.1,220.1L223.0,226.1L221.8,226.3L218.0,236.6L215.8,239.5L212.5,240.8L210.2,237.4L206.1,237.4L198.1,244.8L195.0,252.9L195.1,252.9L200.1,258.6L204.5,264.6L203.6,268.4L203.5,270.0L204.0,270.7L204.7,271.0L212.5,271.0L214.1,271.0L214.2,270.5L215.7,270.1L226.6,270.4L227.6,270.6L227.7,271.1L229.4,271.1L236.7,270.8L247.5,274.1L247.8,270.4L247.8,270.3L247.5,269.7L247.0,265.9L239.8,258.2L240.5,258.0L237.6,253.7L236.6,243.1L242.3,235.0L243.0,233.8L243.3,233.3Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M323.5,249.7L320.1,250.5L312.5,249.0L304.2,251.3L297.9,253.6L294.1,253.2L292.4,255.1L287.5,256.5L278.8,255.2L267.8,252.1L265.3,255.6L264.6,260.5L264.7,261.9L264.7,263.1L260.9,272.1L259.9,282.4L258.5,288.0L258.7,289.9L248.0,301.3L247.5,310.2L246.5,312.3L239.0,318.8L236.1,319.8L235.1,316.0L230.7,317.1L228.3,319.7L226.3,318.1L226.2,318.3L226.1,318.4L224.5,319.0L222.2,325.9L220.3,326.1L220.5,326.5L221.0,327.1L225.8,326.7L226.2,326.9L249.5,327.1L254.5,337.9L257.5,342.4L264.2,341.2L269.6,341.5L270.9,335.8L271.9,335.0L278.4,334.3L278.1,336.5L286.3,336.9L287.2,344.1L286.6,351.9L289.9,358.3L289.9,363.9L291.1,363.1L301.0,361.8L301.2,361.7L301.5,361.7L303.9,363.5L303.7,365.2L310.4,364.3L314.0,368.3L319.9,369.4L322.9,366.7L326.1,371.5L337.7,378.9L340.5,379.3L340.8,370.9L338.7,372.4L335.8,372.2L331.6,367.6L333.2,360.5L333.3,354.6L331.8,350.7L335.5,346.8L347.0,343.5L348.1,343.3L348.0,342.7L343.9,334.3L339.8,327.7L340.6,326.0L338.9,320.8L339.4,317.4L339.4,317.1L339.2,316.1L338.1,311.8L338.2,307.3L336.8,305.3L336.8,305.0L336.2,304.7L335.7,303.1L337.6,301.3L340.5,295.8L340.7,295.7L340.8,295.5L341.7,285.3L343.1,281.2L350.1,274.1L351.7,270.0L348.6,268.7L349.7,261.7L349.3,261.5L349.1,261.2L342.5,255.7L339.2,254.5L331.0,255.6L325.7,250.8L325.5,250.3L323.5,249.7Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M264.3,261.7L255.5,261.0L250.5,262.0L248.3,269.4L247.8,270.3L247.8,270.4L247.5,274.1L236.7,270.8L229.4,271.1L227.7,271.1L227.7,271.6L231.6,276.2L234.3,276.9L234.2,282.3L231.8,284.8L231.9,287.8L236.0,290.4L234.0,302.5L232.6,303.4L231.1,301.2L224.2,299.5L221.8,302.3L215.8,302.5L216.2,306.0L218.3,309.4L217.6,310.7L213.8,311.4L212.7,313.3L214.4,314.8L217.2,317.9L217.5,319.2L218.8,320.7L218.9,320.9L220.9,319.2L221.4,318.2L226.0,318.2L226.2,318.3L226.3,318.1L228.3,319.7L230.7,317.1L235.1,316.0L236.1,319.8L239.0,318.8L246.5,312.3L247.5,310.2L248.0,301.3L258.7,289.9L258.5,288.0L259.9,282.4L260.9,272.1L264.7,263.1L264.7,261.9L264.3,261.7Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M353.2,42.5L355.5,39.1L350.2,41.4L347.1,41.2L346.3,42.8L346.0,42.7L350.2,42.7L351.8,43.4L353.7,43.0L353.2,42.5Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M345.6,42.6L344.2,43.6L346.4,46.2L353.8,43.1L353.7,43.0L351.8,43.4L350.2,42.7L346.0,42.7L345.6,42.6Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M430.7,203.0L431.2,200.1L432.0,198.5L429.9,195.3L429.8,194.9L427.6,197.0L427.0,197.4L425.2,196.6L425.0,196.8L424.5,197.8L421.7,202.2L428.9,207.1L429.4,207.1L430.1,205.7L430.8,204.5L431.3,203.5L430.7,203.0Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M201.1,32.9L195.9,31.5L196.0,32.3L187.1,33.2L181.5,32.3L175.8,32.1L167.3,33.7L159.2,34.4L154.1,36.7L153.3,37.8L140.4,42.6L139.3,42.4L141.0,47.4L140.6,54.5L141.9,63.0L131.1,64.1L128.4,64.9L126.3,69.8L124.3,70.1L117.9,72.8L115.5,75.4L107.9,76.7L107.6,77.7L96.2,81.7L93.4,83.5L92.4,88.9L92.1,90.6L91.9,91.8L91.7,93.2L92.8,94.0L98.0,98.2L105.4,104.0L112.2,109.3L113.5,110.3L115.3,111.7L126.5,120.9L149.2,138.6L149.2,140.6L152.1,143.2L157.3,146.2L162.0,148.1L162.1,153.4L166.4,153.0L168.5,152.7L170.0,152.4L178.7,150.9L190.6,141.2L217.1,125.5L220.5,123.4L220.0,122.2L212.5,116.3L209.7,116.0L208.2,110.9L204.9,105.9L205.3,104.1L207.8,102.1L207.8,83.5L206.1,78.0L206.7,77.7L206.4,76.1L195.9,53.3L196.3,51.3L200.0,48.5L201.3,45.0L201.3,40.2L203.8,32.8L201.1,32.9Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M358.3,68.3L348.5,70.1L344.7,67.6L339.2,67.1L332.5,69.9L327.5,72.8L319.7,70.6L307.6,68.0L303.5,68.7L303.0,67.9L301.3,70.1L302.3,73.8L301.0,78.2L303.0,84.6L304.3,107.4L305.5,132.0L305.6,133.5L308.0,133.5L363.7,132.0L382.8,131.3L382.8,131.2L378.2,127.1L374.6,125.1L373.5,122.8L372.8,118.4L374.4,118.2L370.2,114.6L367.6,110.2L360.8,100.0L357.2,91.6L351.8,85.8L348.5,80.1L349.0,78.1L354.9,87.1L358.5,90.5L362.6,90.0L364.0,80.8L364.3,80.5L362.2,75.7L361.2,74.0L359.5,70.3L358.8,68.9L358.5,68.4L358.4,68.2L358.3,68.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M385.1,185.4L385.3,185.4L389.5,183.9L392.0,186.0L393.9,180.9L398.2,183.8L401.9,182.3L406.5,183.0L413.4,185.3L424.4,196.1L425.0,196.8L425.2,196.6L427.0,197.4L427.6,197.0L429.8,194.9L429.5,194.1L427.6,193.9L423.5,188.9L419.4,186.2L415.9,181.8L404.3,175.8L402.0,171.2L399.2,162.6L396.8,158.7L391.4,163.0L389.8,165.2L386.8,165.9L386.7,171.0L384.1,179.3L384.8,183.4L385.1,185.4Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M113.4,26.3L119.6,34.4L122.6,33.6L128.7,30.8L137.8,31.4L142.9,30.1L144.0,28.3L147.1,26.3L149.3,26.3L151.6,22.6L156.8,18.4L155.8,17.9L156.7,11.3L162.1,5.4L165.1,3.7L175.2,0.0L122.0,0.0L120.5,1.2L120.1,5.6L115.5,9.7L116.3,13.5L114.3,17.9L114.5,21.0L112.1,23.6L112.0,26.4L113.4,26.3Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M385.1,185.4L384.7,187.3L383.0,196.2L379.7,197.6L377.6,201.7L375.7,208.7L373.3,209.3L371.4,211.8L370.4,219.0L370.4,219.4L370.4,219.6L370.8,225.5L363.5,230.1L364.0,230.9L373.8,237.3L379.3,247.0L379.4,247.1L379.4,247.4L383.0,248.6L382.9,251.9L384.4,254.0L392.5,255.7L399.0,259.9L408.6,261.2L412.0,257.6L417.1,255.3L423.7,257.3L424.7,257.2L424.9,256.9L430.8,254.9L433.0,252.4L439.0,250.1L444.9,250.3L451.5,242.3L462.9,229.4L464.4,227.6L462.1,227.7L437.6,221.2L431.9,215.8L428.4,208.7L429.3,207.4L429.4,207.1L428.9,207.1L421.7,202.2L424.5,197.8L425.0,196.8L424.4,196.1L413.4,185.3L406.5,183.0L401.9,182.3L398.2,183.8L393.9,180.9L392.0,186.0L389.5,183.9L385.3,185.4L385.1,185.4Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M207.2,0.0L207.8,2.7L209.8,3.1L210.8,0.1L207.2,0.0Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M227.6,270.6L226.6,270.4L215.7,270.1L214.2,270.5L214.1,271.0L214.1,272.6L214.1,277.0L212.7,279.1L202.0,278.9L201.9,279.2L200.2,281.8L203.4,285.8L200.0,284.1L199.9,288.5L197.5,290.9L195.8,290.2L200.1,297.4L198.1,295.2L202.6,302.9L207.3,307.1L212.0,312.7L212.7,313.3L213.8,311.4L217.6,310.7L218.3,309.4L216.2,306.0L215.8,302.5L221.8,302.3L224.2,299.5L231.1,301.2L232.6,303.4L234.0,302.5L236.0,290.4L231.9,287.8L231.8,284.8L234.2,282.3L234.3,276.9L231.6,276.2L227.7,271.6L227.7,271.1L227.6,270.6Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M359.3,68.3L359.3,67.8L359.8,66.3L359.4,67.0L358.4,68.2L358.5,68.4L358.8,68.9L359.3,68.3Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M135.4,207.5L126.9,208.3L118.7,208.4L118.6,218.6L118.6,219.0L118.7,219.4L118.2,221.6L119.5,228.0L117.5,229.9L114.1,239.7L117.0,248.2L115.4,249.6L114.9,249.6L114.7,249.9L114.9,249.9L122.3,252.3L128.8,249.4L130.6,249.1L137.9,245.5L141.3,245.5L143.8,243.5L144.3,243.2L141.3,240.6L140.4,238.6L140.6,231.7L140.0,225.7L139.3,224.4L140.5,220.0L139.3,218.5L139.6,214.1L137.3,208.3L136.9,207.9L135.4,207.5Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M61.2,196.7L54.0,196.7L48.5,194.5L46.3,194.3L46.3,194.9L44.6,197.8L45.4,198.7L43.1,201.5L38.7,203.1L36.6,206.4L36.5,207.2L40.3,211.5L45.2,215.1L47.2,220.1L47.3,220.4L50.4,218.6L53.4,214.5L61.1,214.0L64.3,218.4L66.6,224.9L67.1,224.9L67.5,224.9L72.2,226.1L73.0,230.7L74.4,233.9L78.6,231.6L78.9,231.8L79.3,231.5L82.9,223.2L84.2,221.1L83.0,213.7L83.1,213.4L83.3,212.9L81.2,209.2L80.9,205.0L78.4,200.8L72.5,199.7L68.9,198.4L64.5,198.3L62.2,199.7L61.4,197.0L61.6,196.8L61.2,196.7Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M28.6,187.9L29.6,188.8L26.8,190.1L26.7,190.7L32.9,190.3L33.1,189.1L46.0,189.5L44.2,188.0L39.2,186.0L35.3,187.3L28.4,187.0L28.6,187.9Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M46.3,194.3L44.1,194.2L36.7,193.9L32.3,195.4L26.6,195.8L28.3,196.9L30.0,199.1L34.8,199.6L36.8,201.7L34.4,202.3L36.4,205.9L36.6,206.4L38.7,203.1L43.1,201.5L45.4,198.7L44.6,197.8L46.3,194.9L46.3,194.3Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M214.1,271.0L212.5,271.0L204.7,271.0L204.0,270.7L203.5,270.0L203.3,271.7L202.0,275.3L201.3,276.1L202.1,278.7L202.0,278.9L212.7,279.1L214.1,277.0L214.1,272.6L214.1,271.0Z M196.2,259.9L194.3,263.3L195.5,263.6L197.6,260.2L196.2,259.9Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M293.5,42.1L292.8,44.2L298.8,45.0L299.1,45.9L307.5,45.2L304.9,43.3L303.2,43.4L294.9,41.7L293.5,42.1Z M304.3,1.0L303.6,0.8L303.5,3.2L299.4,4.1L286.3,4.1L285.7,4.0L285.3,4.0L279.5,6.7L275.7,7.4L275.0,7.4L274.9,7.9L273.5,12.2L271.5,13.4L269.8,15.0L270.4,15.4L275.8,21.8L278.6,24.0L281.4,23.3L288.5,25.0L287.1,26.2L281.4,23.9L277.2,27.2L280.1,30.1L281.6,34.4L282.6,32.4L285.1,35.5L287.1,34.6L287.9,32.4L286.9,30.6L290.0,28.6L288.7,26.2L291.8,26.6L293.6,27.9L292.2,23.7L284.9,20.1L286.7,19.7L284.4,12.6L284.4,9.6L288.5,12.1L293.9,11.0L290.6,7.8L294.0,6.6L303.2,7.3L303.4,7.5L304.9,5.7L304.6,4.1L304.8,1.1L304.3,1.0Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M463.0,18.4L460.5,20.9L454.6,23.5L452.3,23.8L444.7,21.9L441.7,19.5L436.1,18.8L432.8,13.7L432.7,13.4L427.1,11.1L427.8,7.3L425.4,5.6L419.2,11.7L418.8,11.7L417.9,11.7L417.2,12.1L416.9,12.1L415.7,12.0L413.1,11.6L408.5,7.8L408.4,7.7L408.2,7.7L406.9,7.0L406.2,9.6L404.6,9.8L407.7,16.2L408.7,16.8L412.5,24.4L412.5,24.5L412.5,24.5L418.1,31.8L422.7,32.7L423.7,37.4L420.9,42.6L421.9,45.9L426.9,50.3L427.2,52.2L430.0,52.8L439.0,59.2L439.4,64.8L446.2,71.5L446.5,71.4L448.0,67.5L451.1,69.9L454.8,69.0L465.3,82.8L467.1,84.2L475.1,87.6L482.1,91.3L489.5,91.8L497.0,86.3L500.0,86.9L500.0,16.7L498.4,17.0L491.0,12.3L488.4,11.2L479.2,10.3L478.8,9.6L473.2,9.7L473.3,10.4L462.4,17.3L463.0,18.4Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M412.3,24.4L407.2,24.4L400.8,24.1L399.6,25.8L399.1,26.0L399.1,26.1L396.7,29.7L394.7,30.4L395.6,36.3L395.3,38.8L385.1,51.7L383.6,52.7L384.3,54.2L386.3,58.6L388.0,60.2L387.3,61.0L388.7,61.2L394.8,61.8L407.6,68.0L409.4,69.2L434.5,78.9L435.5,78.5L436.2,77.3L437.8,72.0L439.9,71.1L442.8,71.7L442.8,71.5L445.1,71.6L445.7,71.7L446.2,71.5L439.4,64.8L439.0,59.2L430.0,52.8L427.2,52.2L426.9,50.3L421.9,45.9L420.9,42.6L423.7,37.4L422.7,32.7L418.1,31.8L412.5,24.5L412.5,24.5L412.3,24.4Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M366.6,57.8L366.7,55.7L366.9,55.4L366.3,53.8L366.3,53.4L366.2,53.5L364.4,55.6L364.0,55.9L362.2,56.0L362.1,56.8L361.2,62.1L360.8,64.1L359.9,66.3L359.8,66.3L359.3,67.8L359.3,68.3L358.8,68.9L359.5,70.3L361.2,74.0L362.2,75.7L364.3,80.5L364.7,79.9L365.1,75.5L365.0,73.3L365.8,67.8L365.8,66.7L365.6,66.7L363.1,65.5L362.5,60.2L365.1,60.5L365.5,60.5L365.4,59.0L365.6,58.5L366.3,58.2L366.6,58.1L366.6,57.8Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M244.7,24.9L237.2,26.2L233.7,26.2L230.1,25.3L227.0,28.4L230.7,29.7L234.3,32.0L236.3,32.2L238.3,34.2L241.2,34.9L243.0,32.8L241.9,30.4L244.7,24.9Z M211.6,6.9L209.8,4.8L205.7,7.0L203.9,6.6L204.7,11.7L204.0,17.8L207.3,18.9L207.6,17.6L210.8,17.0L211.4,11.0L212.4,9.5L211.6,6.9Z M225.1,0.0L228.5,3.4L235.3,5.7L240.7,9.0L243.2,12.7L245.4,13.2L248.3,20.1L245.5,26.7L247.4,26.7L250.3,21.6L252.6,20.1L253.5,17.2L251.8,15.9L251.0,12.3L253.0,9.8L257.7,11.3L260.4,14.3L261.2,12.4L258.2,8.9L250.3,5.1L246.8,2.6L248.1,0.8L241.6,0.0L225.1,0.0Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M388.0,60.2L386.3,58.6L384.3,54.2L383.6,52.7L382.2,53.7L373.2,60.6L371.1,60.4L367.2,58.2L366.6,58.1L366.3,58.2L365.6,58.5L365.4,59.0L365.5,60.5L365.8,61.5L365.8,63.3L366.2,64.7L365.8,66.1L365.8,66.7L365.8,67.8L365.0,73.3L365.1,75.5L364.7,79.9L364.8,80.4L364.7,81.3L371.7,82.0L375.0,77.5L379.7,76.0L382.1,72.5L374.9,66.1L386.5,61.9L387.3,61.0L388.0,60.2Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M379.4,247.1L378.2,248.4L373.5,253.3L372.1,254.8L370.8,256.2L371.9,258.5L374.0,260.5L377.2,268.8L377.8,274.3L374.5,278.5L370.8,284.6L370.5,291.7L370.6,292.9L371.1,292.9L396.1,307.3L396.8,311.5L406.6,319.0L406.7,318.8L410.8,312.5L413.5,307.1L418.4,300.8L421.7,298.9L422.7,297.7L418.9,291.8L418.6,265.6L423.9,258.5L424.7,257.2L423.7,257.3L417.1,255.3L412.0,257.6L408.6,261.2L399.0,259.9L392.5,255.7L384.4,254.0L382.9,251.9L383.0,248.6L379.4,247.4L379.4,247.1Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M272.5,0.8L272.5,0.8L273.2,0.9L273.4,0.0L272.5,0.0L272.5,0.5L272.5,0.8Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M442.8,71.7L439.9,71.1L437.8,72.0L436.2,77.3L435.5,78.5L436.7,78.6L441.0,78.8L447.7,81.4L447.3,80.8L443.3,74.2L444.4,74.4L442.8,71.9L442.8,71.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M366.6,53.1L369.7,47.8L367.5,44.8L365.7,45.3L365.8,45.8L364.2,48.0L364.2,49.4L362.4,55.5L362.2,56.0L364.0,55.9L364.4,55.6L366.2,53.5L366.3,53.4L366.6,53.1Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M78.6,231.6L74.4,233.9L73.0,230.7L72.2,226.1L67.5,224.9L67.1,224.9L67.1,225.2L66.8,226.2L58.4,236.0L59.7,237.6L73.8,249.6L79.6,253.0L83.7,254.6L84.4,254.7L82.5,241.3L79.9,240.7L79.2,237.9L80.0,235.3L79.0,231.9L78.9,231.8L78.6,231.6Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M302.8,67.5L302.2,66.4L291.4,64.4L290.1,61.7L284.5,59.8L272.1,64.6L271.0,67.3L269.9,76.3L266.3,77.8L260.4,74.4L255.2,72.4L247.7,71.1L244.4,69.3L243.0,65.1L233.8,60.9L229.6,60.1L227.2,60.7L220.7,58.5L219.8,58.1L219.6,63.2L210.8,69.5L211.2,74.1L207.4,77.4L206.7,77.7L206.1,78.0L207.8,83.5L207.8,102.1L205.3,104.1L204.9,105.9L208.2,110.9L209.7,116.0L212.5,116.3L220.0,122.2L220.5,123.4L223.9,124.3L231.1,126.2L235.2,129.7L240.1,127.1L240.1,127.1L242.5,126.0L246.6,124.1L261.3,131.6L296.4,149.2L299.6,150.8L299.6,149.9L299.5,147.3L306.1,147.2L305.7,136.9L305.6,133.5L305.5,132.0L304.3,107.4L303.0,84.6L301.0,78.2L302.3,73.8L301.3,70.1L303.0,67.9L302.8,67.5Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M326.2,493.8L330.8,488.3L330.3,487.1L325.4,483.7L320.6,485.8L318.0,489.2L316.0,490.3L319.9,497.0L321.5,497.3L324.1,494.0L326.2,493.8Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M33.1,130.8L40.0,130.7L42.9,131.2L48.3,129.9L51.6,125.7L54.5,117.2L55.7,115.7L65.2,109.1L66.8,106.8L69.6,100.5L71.6,100.1L77.6,94.2L84.2,95.7L91.1,94.1L91.3,90.6L92.1,90.6L92.4,88.9L93.4,83.5L96.2,81.7L107.6,77.7L107.9,76.7L115.5,75.4L117.9,72.8L124.3,70.1L126.3,69.8L128.4,64.9L131.1,64.1L141.9,63.0L140.6,54.5L141.0,47.4L139.3,42.4L138.1,42.2L134.6,40.6L125.3,40.8L121.0,36.0L118.6,36.4L114.8,43.0L111.6,47.2L106.2,50.2L101.5,51.7L94.9,56.7L93.6,60.0L91.2,62.4L89.1,68.2L89.1,73.3L81.5,81.0L75.4,84.9L72.5,86.0L66.4,87.0L61.7,94.0L54.8,98.5L49.2,109.5L43.0,114.1L40.3,119.7L34.2,127.4L33.1,130.8Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M472.7,375.2L470.7,372.6L469.5,374.2L468.2,378.7L466.0,382.1L461.7,383.4L461.6,385.8L459.8,388.7L460.3,390.7L457.3,392.6L457.4,391.0L449.9,397.2L449.4,398.7L445.2,398.6L436.4,402.6L436.4,404.0L432.8,409.4L432.5,415.7L434.2,423.8L433.0,428.9L426.4,437.1L424.3,447.8L425.7,452.4L424.7,458.1L426.2,462.7L432.8,467.1L444.9,463.6L450.0,454.3L452.6,448.2L468.0,414.3L469.2,408.2L471.6,404.3L471.8,396.9L475.0,399.9L475.9,393.3L475.7,386.9L474.1,378.4L472.7,375.2Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M272.5,0.8L272.4,0.8L271.9,3.1L274.9,7.3L275.0,7.4L275.7,7.4L279.5,6.7L285.3,4.0L285.7,4.0L285.7,3.9L285.7,2.3L286.0,1.5L285.1,0.0L273.4,0.0L273.2,0.9L272.5,0.8L272.5,0.8Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M166.4,153.0L162.1,153.4L162.0,148.1L157.3,146.2L152.1,143.2L149.2,140.6L149.2,138.6L126.5,120.9L115.3,111.7L113.5,110.3L111.3,110.2L102.4,109.8L101.9,130.4L101.9,153.1L102.3,176.3L80.7,175.5L76.4,174.8L65.9,176.9L61.7,174.6L58.4,180.0L57.3,179.5L57.8,180.6L58.5,184.8L58.0,187.9L61.9,193.0L61.7,196.3L61.6,196.8L61.4,197.0L62.2,199.7L64.5,198.3L68.9,198.4L72.5,199.7L78.4,200.8L80.9,205.0L81.2,209.2L83.3,212.9L83.1,213.4L83.3,213.4L92.1,212.0L95.0,209.7L95.0,213.0L96.3,213.5L99.6,211.9L99.8,212.0L100.0,211.6L100.3,207.6L101.6,206.5L102.0,202.1L108.1,197.6L109.5,195.5L110.2,191.9L115.9,192.2L116.4,189.6L118.7,189.5L119.1,187.6L122.0,185.4L124.3,186.2L126.0,184.1L133.7,180.3L138.8,180.9L140.2,181.4L140.3,181.1L146.3,180.1L147.6,179.1L162.4,178.8L168.5,153.9L168.5,152.7L166.4,153.0Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M265.7,0.9L265.7,0.5L265.8,0.0L265.8,0.0L264.6,0.0L264.8,0.4L265.7,0.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M354.4,472.4L354.5,468.6L353.0,466.7L361.6,460.5L370.4,457.2L373.5,448.0L373.1,437.3L370.7,425.3L383.3,415.9L390.3,409.4L399.7,406.0L406.4,401.9L411.7,395.2L412.9,391.4L412.2,377.7L413.3,370.8L412.8,368.3L413.8,360.6L413.5,359.9L399.8,366.4L398.7,365.7L391.2,368.2L388.2,367.6L385.0,368.2L381.6,366.4L377.5,367.2L376.0,367.2L375.1,367.2L371.7,371.6L372.6,379.6L380.7,388.9L379.8,397.9L375.9,400.8L375.9,403.8L370.5,399.7L369.5,396.8L370.7,386.9L365.1,387.0L363.5,384.3L363.2,384.1L361.8,384.5L342.9,390.6L343.7,394.2L343.8,395.1L343.8,396.2L353.9,400.7L358.4,401.9L360.4,406.5L360.1,413.9L358.1,421.3L359.2,425.5L355.8,429.7L347.8,441.2L346.8,441.8L346.8,442.2L348.2,449.8L349.3,452.1L350.0,457.3L348.9,465.8L349.0,466.3L349.1,466.4L349.5,468.0L349.4,468.5L349.6,470.1L349.4,472.3L350.0,472.3L351.0,472.5L353.6,472.5L354.3,472.5L354.4,472.4Z M374.1,370.9L373.9,370.2L374.2,370.2L374.1,370.9Z M373.7,370.2L373.0,370.3L373.1,370.0L373.7,370.2Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M113.5,110.3L112.2,109.3L105.4,104.0L98.0,98.2L92.8,94.0L91.7,93.2L91.5,94.3L90.3,102.1L69.7,100.8L66.7,118.4L59.2,122.1L58.2,133.0L33.3,131.4L32.1,135.1L32.7,133.5L35.9,136.5L35.0,147.2L35.5,156.3L30.8,167.6L30.4,170.8L32.9,165.9L44.0,165.6L50.8,170.2L52.8,174.4L57.1,179.4L57.3,179.5L58.4,180.0L61.7,174.6L65.9,176.9L76.4,174.8L80.7,175.5L102.3,176.3L101.9,153.1L101.9,130.4L102.4,109.8L111.3,110.2L113.5,110.3Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M374.1,370.9L374.2,370.2L373.9,370.2L374.1,370.9Z M373.7,370.2L373.1,370.0L373.0,370.3L373.7,370.2Z M362.7,351.9L362.7,352.1L365.3,354.7L366.1,361.5L364.9,362.0L364.0,373.9L362.1,376.0L360.4,380.8L362.9,383.6L363.2,384.1L363.5,384.3L365.1,387.0L370.7,386.9L369.5,396.8L370.5,399.7L375.9,403.8L375.9,400.8L379.8,397.9L380.7,388.9L372.6,379.6L371.7,371.6L375.1,367.2L376.0,367.2L375.9,367.0L374.6,365.3L374.1,360.5L372.2,354.4L370.0,352.6L362.8,351.8L362.7,351.9Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M294.1,408.8L285.0,410.4L278.5,410.9L276.1,410.0L265.6,409.1L262.7,406.6L237.3,406.5L233.3,406.6L227.1,403.6L223.4,405.3L218.0,405.6L217.9,407.1L218.3,410.8L223.0,417.1L229.8,430.7L235.7,439.3L237.9,455.4L238.8,457.0L241.0,468.1L242.6,474.5L245.0,478.4L249.0,482.3L249.7,482.8L253.5,478.9L256.0,483.4L266.8,485.0L269.2,482.6L272.0,481.8L272.5,459.8L272.5,457.0L272.5,456.8L272.9,438.1L279.4,438.1L280.0,412.9L295.0,410.8L298.2,413.8L301.1,411.4L308.4,409.5L308.7,409.6L307.6,408.4L305.3,407.6L297.6,408.1L296.2,408.4L294.1,408.8Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M240.1,127.1L235.2,129.7L231.1,126.2L223.9,124.3L220.5,123.4L217.1,125.5L190.6,141.2L178.7,150.9L170.0,152.4L168.5,152.7L168.5,153.9L162.4,178.8L147.6,179.1L146.3,180.1L140.3,181.1L140.2,181.4L140.1,181.7L139.6,184.3L142.4,189.9L144.8,192.3L145.4,194.9L148.4,197.5L152.8,198.2L153.5,202.4L153.8,202.7L154.0,202.0L154.4,200.2L156.8,199.4L161.5,203.6L161.9,204.2L162.3,204.0L165.6,194.8L166.1,192.0L175.3,189.3L182.9,192.9L184.0,194.7L187.8,194.8L190.8,193.2L197.2,196.3L203.1,197.0L209.0,193.4L222.8,194.5L229.1,191.0L230.3,191.0L229.7,188.0L231.8,182.2L238.2,174.1L243.1,168.9L246.2,144.9L242.1,138.0L240.8,131.1L240.1,127.1L240.1,127.1Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M161.9,204.2L161.6,204.7L162.9,213.0L158.1,221.7L155.7,222.6L155.1,232.6L155.5,233.6L154.8,241.4L155.3,241.3L164.6,241.2L169.6,243.9L173.1,248.3L174.4,253.6L179.2,255.5L182.6,253.1L183.7,255.4L193.1,254.3L192.9,251.7L194.9,252.9L195.0,252.9L198.1,244.8L206.1,237.4L210.2,237.4L212.5,240.8L215.8,239.5L218.0,236.6L221.8,226.3L223.0,226.1L226.1,220.1L227.5,219.1L230.8,210.6L236.7,204.6L236.5,200.7L234.0,198.5L233.4,195.3L232.5,194.0L231.4,192.4L230.3,191.0L229.1,191.0L222.8,194.5L209.0,193.4L203.1,197.0L197.2,196.3L190.8,193.2L187.8,194.8L184.0,194.7L182.9,192.9L175.3,189.3L166.1,192.0L165.6,194.8L162.3,204.0L161.9,204.2Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M482.0,147.2L482.4,147.9L488.6,159.1L489.1,159.3L491.6,163.7L492.8,163.0L496.8,161.4L497.4,160.7L500.0,160.3L500.0,135.2L499.6,138.7L482.9,146.8L482.0,147.2Z M497.2,119.1L497.9,119.8L498.4,120.5L500.0,122.6L500.0,108.9L497.1,110.1L497.1,118.0L497.2,119.1Z M497.4,94.5L498.4,97.2L498.7,97.5L499.3,97.3L499.3,96.9L499.3,94.0L497.6,93.5L497.4,94.5Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M112.0,26.4L112.1,23.6L114.5,21.0L114.3,17.9L116.3,13.5L115.5,9.7L120.1,5.6L120.5,1.2L122.0,0.0L111.2,0.0L108.7,6.2L104.8,10.7L102.9,15.0L106.9,17.5L105.7,19.0L104.5,24.1L102.8,26.7L111.5,26.4L112.0,26.4Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M471.3,107.2L471.8,103.6L470.6,99.9L468.3,96.7L466.3,102.2L467.6,106.1L467.5,106.5L468.0,107.3L470.6,107.6L471.3,107.2Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M346.9,293.4L345.9,293.8L341.0,295.7L340.7,295.7L340.5,295.8L337.6,301.3L335.7,303.1L336.2,304.7L336.8,305.0L336.9,304.6L341.5,305.5L344.3,302.8L347.3,302.7L347.4,302.8L347.7,302.7L349.5,301.8L349.3,296.9L346.9,293.5L347.2,293.4L346.9,293.4Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M91.9,91.8L92.1,90.6L91.3,90.6L91.1,94.1L84.2,95.7L77.6,94.2L71.6,100.1L69.6,100.5L66.8,106.8L65.2,109.1L55.7,115.7L54.5,117.2L51.6,125.7L48.3,129.9L42.9,131.2L40.0,130.7L33.1,130.8L33.0,131.1L31.9,134.7L32.1,135.1L33.3,131.4L58.2,133.0L59.2,122.1L66.7,118.4L69.7,100.8L90.3,102.1L91.5,94.3L91.7,93.2L91.9,91.8Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M497.2,119.1L497.0,119.7L480.8,118.8L473.3,111.2L472.9,109.7L472.7,109.7L471.2,109.4L471.4,108.4L471.1,107.8L470.6,107.6L468.0,107.3L467.5,106.5L466.9,106.0L461.7,97.6L460.8,93.7L450.9,85.7L448.2,82.0L447.7,81.4L441.0,78.8L436.7,78.6L435.5,78.5L434.5,78.9L409.4,69.2L407.6,68.0L394.8,61.8L388.7,61.2L387.3,61.0L386.5,61.9L374.9,66.1L382.1,72.5L379.7,76.0L375.0,77.5L371.7,82.0L364.7,81.3L364.3,85.7L364.4,89.7L367.3,90.2L377.3,103.1L382.0,108.5L385.3,115.3L390.3,117.7L391.6,119.0L396.4,126.6L396.8,128.0L403.5,142.4L410.8,147.7L417.4,158.7L419.6,160.1L425.3,168.5L425.4,169.1L427.2,162.0L428.6,160.8L437.3,161.0L447.6,161.9L452.1,163.7L455.3,160.9L458.7,154.7L464.8,151.0L480.6,147.5L482.0,147.2L482.9,146.8L499.6,138.7L500.0,135.2L500.0,122.6L498.4,120.5L497.9,119.8L497.2,119.1Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M305.6,133.5L305.7,136.9L306.1,147.2L299.5,147.3L299.6,149.9L299.6,150.8L299.7,153.8L294.6,177.0L293.5,180.7L289.8,185.0L291.0,187.7L289.0,193.4L286.4,196.7L293.9,207.2L293.8,209.4L293.6,210.1L294.1,211.0L299.1,217.7L299.0,221.0L302.0,225.5L302.6,225.7L302.6,225.7L302.7,225.5L305.3,224.2L307.1,217.5L310.2,214.2L313.7,213.4L319.8,219.9L322.6,218.9L327.6,219.1L329.3,220.9L334.7,219.9L339.8,216.6L339.8,215.6L345.8,216.1L350.9,217.3L353.7,214.3L358.2,207.1L357.9,203.8L356.1,201.8L360.4,201.1L363.3,202.9L363.8,209.9L368.9,214.2L370.4,219.4L370.4,219.4L370.4,219.4L370.4,219.0L371.4,211.8L373.3,209.3L375.7,208.7L377.6,201.7L379.7,197.6L383.0,196.2L384.7,187.3L385.1,185.4L384.8,183.4L384.1,179.3L386.7,171.0L386.8,165.9L389.8,165.2L391.4,163.0L396.8,158.7L396.6,158.2L388.9,153.3L388.0,151.4L385.6,136.9L383.0,132.9L382.8,131.3L363.7,132.0L308.0,133.5L305.6,133.5Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M302.6,225.7L302.6,225.7L303.0,225.8L303.7,228.3L306.8,229.0L310.3,232.7L309.9,233.4L318.1,239.7L317.8,241.0L319.8,244.0L324.1,246.8L325.0,249.8L325.5,250.3L325.7,250.8L331.0,255.6L339.2,254.5L342.5,255.7L349.1,261.2L349.3,261.5L349.5,261.1L355.9,259.2L356.9,260.6L364.1,258.6L366.4,259.5L369.2,257.8L370.8,256.2L372.1,254.8L373.5,253.3L378.2,248.4L379.4,247.1L379.3,247.0L373.8,237.3L364.0,230.9L363.5,230.1L370.8,225.5L370.4,219.6L370.4,219.4L370.4,219.4L370.4,219.4L368.9,214.2L363.8,209.9L363.3,202.9L360.4,201.1L356.1,201.8L357.9,203.8L358.2,207.1L353.7,214.3L350.9,217.3L345.8,216.1L339.8,215.6L339.8,216.6L334.7,219.9L329.3,220.9L327.6,219.1L322.6,218.9L319.8,219.9L313.7,213.4L310.2,214.2L307.1,217.5L305.3,224.2L302.7,225.5L302.6,225.7Z " data-iso="SDS" data-name="S. Sudan" data-pop="8260490.0"/><path d="M57.1,179.4L52.8,174.4L50.8,170.2L44.0,165.6L32.9,165.9L30.4,170.8L30.1,171.5L28.0,174.6L23.8,178.5L25.3,179.2L28.4,186.2L28.4,187.0L35.3,187.3L39.2,186.0L44.2,188.0L46.0,189.5L33.1,189.1L32.9,190.3L26.7,190.7L26.7,191.3L26.5,194.1L26.4,195.5L26.6,195.8L32.3,195.4L36.7,193.9L44.1,194.2L46.3,194.3L48.5,194.5L54.0,196.7L61.2,196.7L61.6,196.8L61.7,196.3L61.9,193.0L58.0,187.9L58.5,184.8L57.8,180.6L57.3,179.5L57.1,179.4Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M47.4,220.8L48.4,224.9L47.2,224.4L49.5,229.0L52.9,232.8L58.1,235.7L58.4,236.0L66.8,226.2L67.1,225.2L67.1,224.9L66.6,224.9L64.3,218.4L61.1,214.0L53.4,214.5L50.4,218.6L47.3,220.4L47.4,220.8Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M468.8,203.9L467.3,203.5L457.9,205.4L456.3,206.8L443.1,210.7L439.4,210.9L432.7,204.5L431.3,203.5L430.8,204.5L430.1,205.7L429.4,207.1L429.3,207.4L428.4,208.7L431.9,215.8L437.6,221.2L462.1,227.7L464.4,227.6L465.3,225.9L470.1,216.9L469.8,213.1L469.1,203.9L468.8,203.9Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M423.3,296.9L425.7,292.5L435.8,281.1L441.6,275.5L445.5,272.5L453.0,267.6L458.5,261.7L465.5,252.8L469.8,245.5L476.3,229.7L481.4,219.0L482.5,210.6L483.8,207.7L483.5,204.6L480.7,198.2L476.6,201.6L469.9,203.8L469.1,203.9L469.8,213.1L470.1,216.9L465.3,225.9L464.4,227.6L462.9,229.4L451.5,242.3L444.9,250.3L439.0,250.1L433.0,252.4L430.8,254.9L424.9,256.9L424.7,257.2L423.9,258.5L418.6,265.6L418.9,291.8L422.7,297.7L423.3,296.9Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M348.8,466.3L344.3,465.4L343.5,466.3L343.9,474.9L348.2,475.4L349.3,472.2L349.4,472.3L349.6,470.1L349.4,468.5L349.5,468.0L349.1,466.4L349.0,466.3L348.8,466.3Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M398.6,25.2L388.5,27.5L382.7,30.2L375.8,29.2L371.8,31.2L367.0,30.7L365.4,37.1L363.8,36.7L363.5,37.2L363.4,39.0L364.4,40.0L365.0,43.8L365.7,45.3L367.5,44.8L369.7,47.8L366.6,53.1L366.3,53.4L366.3,53.8L366.9,55.4L366.7,55.7L366.6,57.8L366.6,58.1L367.2,58.2L371.1,60.4L373.2,60.6L382.2,53.7L383.6,52.7L385.1,51.7L395.3,38.8L395.6,36.3L394.7,30.4L396.7,29.7L399.1,26.1L399.1,26.0L398.6,25.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M296.4,149.2L261.3,131.6L246.6,124.1L242.5,126.0L240.1,127.1L240.8,131.1L242.1,138.0L246.2,144.9L243.1,168.9L238.2,174.1L231.8,182.2L229.7,188.0L230.3,191.0L231.4,192.4L232.5,194.0L233.4,195.3L234.6,195.3L238.7,199.3L240.6,206.0L239.9,208.9L241.6,214.2L244.2,216.6L234.5,216.8L232.8,219.5L238.7,225.0L241.4,228.3L243.3,233.3L243.0,233.8L243.7,233.9L246.8,233.5L250.3,231.6L252.7,233.1L257.9,230.6L264.4,230.1L266.6,227.7L266.9,224.0L276.4,222.6L279.4,220.7L285.7,212.8L291.1,209.6L293.3,210.1L293.6,210.1L293.8,209.4L293.9,207.2L286.4,196.7L289.0,193.4L291.0,187.7L289.8,185.0L293.5,180.7L294.6,177.0L299.7,153.8L299.6,150.8L296.4,149.2Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M141.7,208.9L141.1,209.1L140.6,208.8L138.4,208.2L136.9,207.9L137.3,208.3L139.6,214.1L139.3,218.5L140.5,220.0L139.3,224.4L140.0,225.7L140.6,231.7L140.4,238.6L141.3,240.6L144.3,243.2L145.2,242.8L147.3,242.4L148.4,241.8L147.5,236.9L147.7,222.5L146.1,218.9L146.1,215.9L142.4,213.1L143.2,209.6L143.5,208.9L141.7,208.9Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M462.4,17.3L473.3,10.4L473.2,9.7L478.8,9.6L479.2,10.3L488.4,11.2L491.0,12.3L498.4,17.0L500.0,16.7L500.0,0.0L453.6,0.0L458.7,7.0L462.1,16.8L462.4,17.3Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M203.8,32.8L201.3,40.2L201.3,45.0L200.0,48.5L196.3,51.3L195.9,53.3L206.4,76.1L206.7,77.7L207.4,77.4L211.2,74.1L210.8,69.5L219.6,63.2L219.8,58.1L219.1,57.8L216.6,55.1L213.6,54.8L212.3,50.2L218.0,44.3L217.5,41.7L214.7,39.0L214.9,37.1L218.6,33.5L217.6,32.2L214.0,33.5L207.2,31.1L205.2,32.4L203.8,32.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M363.8,36.7L365.4,37.1L367.0,30.7L371.8,31.2L375.8,29.2L382.7,30.2L388.5,27.5L398.6,25.2L399.1,26.0L399.6,25.8L400.8,24.1L407.2,24.4L412.3,24.4L412.5,24.5L412.5,24.4L408.7,16.8L407.7,16.2L404.6,9.8L406.2,9.6L406.9,7.0L408.2,7.7L408.4,7.7L408.1,7.5L408.0,7.3L407.7,7.1L404.8,5.4L402.9,5.7L399.7,0.0L383.6,0.0L378.9,1.4L376.6,0.8L373.7,1.6L358.5,0.0L336.5,0.0L329.5,4.1L326.9,3.5L321.2,3.5L319.9,4.4L321.8,6.3L324.5,6.6L320.2,9.1L313.0,8.8L311.7,9.9L307.5,9.5L304.6,12.3L304.6,15.8L308.5,15.0L306.6,21.7L307.7,24.3L311.9,25.4L311.7,27.9L314.2,30.7L312.7,32.0L318.3,31.7L314.0,33.7L322.8,33.4L325.4,36.3L332.2,34.3L332.1,32.4L336.6,32.2L345.7,36.9L350.7,35.6L353.8,32.6L358.8,32.1L363.1,33.4L364.0,36.1L363.8,36.7Z M304.3,1.0L304.8,1.1L304.6,4.1L304.9,5.7L303.4,7.5L303.5,7.8L307.6,8.0L311.3,5.6L315.6,4.8L319.4,5.1L313.5,0.0L305.4,0.0L305.2,0.2L304.4,0.4L304.2,0.8L304.3,1.0Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M347.2,293.4L346.9,293.5L349.3,296.9L349.5,301.8L347.7,302.7L347.4,302.8L347.3,302.9L346.5,311.1L345.9,312.4L341.5,317.1L339.4,317.1L339.4,317.4L338.9,320.8L340.6,326.0L339.8,327.7L343.9,334.3L348.0,342.7L348.1,343.3L348.3,343.8L350.3,346.2L352.2,346.2L362.3,351.7L362.7,351.9L362.8,351.8L370.0,352.6L372.2,354.4L374.1,360.5L374.6,365.3L375.9,367.0L376.0,367.2L377.5,367.2L381.6,366.4L385.0,368.2L388.2,367.6L391.2,368.2L398.7,365.7L399.8,366.4L413.5,359.9L413.4,359.7L408.7,356.5L408.4,350.8L406.3,345.5L407.4,342.5L408.4,335.5L404.0,330.6L404.8,324.8L406.5,319.6L406.6,319.0L396.8,311.5L396.1,307.3L371.1,292.9L370.6,292.9L369.8,292.9L356.3,293.0L351.4,293.0L347.2,293.4L347.2,293.4Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M370.5,291.7L370.8,284.6L374.5,278.5L377.8,274.3L377.2,268.8L374.0,260.5L371.9,258.5L370.8,256.2L369.2,257.8L366.4,259.5L364.1,258.6L356.9,260.6L355.9,259.2L349.5,261.1L349.3,261.5L349.7,261.7L348.6,268.7L351.7,270.0L350.1,274.1L343.1,281.2L341.7,285.3L340.8,295.5L340.7,295.7L341.0,295.7L345.9,293.8L346.9,293.4L347.2,293.4L347.2,293.4L351.4,293.0L356.3,293.0L369.8,292.9L370.6,292.9L370.5,291.7Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M365.1,60.5L362.5,60.2L363.1,65.5L365.6,66.7L365.8,66.7L365.8,66.1L366.2,64.7L365.8,63.3L365.8,61.5L365.5,60.5L365.1,60.5Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/><path d="M482.0,147.2L480.6,147.5L464.8,151.0L458.7,154.7L455.3,160.9L452.1,163.7L447.6,161.9L437.3,161.0L428.6,160.8L427.2,162.0L425.4,169.1L425.9,171.5L425.2,177.2L427.3,179.2L428.9,185.7L429.9,186.7L430.2,190.9L433.2,194.6L435.7,195.4L440.6,194.2L447.9,189.4L457.5,187.1L461.0,184.1L465.4,183.9L467.6,180.9L470.6,178.8L479.7,175.3L487.0,171.2L486.6,167.4L488.5,165.1L491.6,163.7L489.1,159.3L488.6,159.1L482.4,147.9L482.0,147.2Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M334.4,440.2L332.8,440.3L326.6,443.4L323.5,446.8L318.9,449.3L317.1,453.8L310.7,457.5L308.5,463.0L304.7,463.9L300.4,463.8L292.1,460.8L288.3,466.9L285.3,469.6L277.1,471.0L276.4,469.2L274.9,458.7L272.8,457.2L272.5,457.0L272.5,459.8L272.0,481.8L269.2,482.6L266.8,485.0L256.0,483.4L253.5,478.9L249.7,482.8L249.9,483.0L257.3,498.9L260.5,503.8L260.7,509.8L258.4,511.9L264.0,521.2L268.8,523.8L271.1,524.1L281.8,521.4L284.7,519.5L296.4,519.6L298.8,520.4L305.2,519.5L307.4,517.5L310.1,517.9L322.9,510.7L333.1,502.2L335.3,499.9L342.8,489.4L345.9,486.5L349.3,484.4L351.2,481.6L353.9,474.1L354.3,472.5L353.6,472.5L351.0,472.5L350.0,472.3L349.4,472.3L349.3,472.2L348.2,475.4L343.9,474.9L343.5,466.3L344.3,465.4L348.8,466.3L349.0,466.3L348.9,465.8L350.0,457.3L349.3,452.1L348.2,449.8L346.8,442.2L346.8,441.8L346.2,441.4L336.3,439.9L334.4,440.1L334.4,440.2Z M325.4,483.7L330.3,487.1L330.8,488.3L326.2,493.8L324.1,494.0L321.5,497.3L319.9,497.0L316.0,490.3L318.0,489.2L320.6,485.8L325.4,483.7Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M362.3,351.7L352.2,346.2L350.3,346.2L348.3,343.8L348.1,343.3L347.0,343.5L335.5,346.8L331.8,350.7L333.3,354.6L333.2,360.5L331.6,367.6L335.8,372.2L338.7,372.4L340.8,370.9L340.5,379.3L337.7,378.9L326.1,371.5L322.9,366.7L319.9,369.4L314.0,368.3L310.4,364.3L303.7,365.2L303.9,363.5L301.5,361.7L301.2,361.7L301.4,362.6L301.2,372.4L300.1,376.4L287.4,376.4L287.0,396.7L289.1,401.8L294.9,407.2L296.2,408.4L297.6,408.1L305.3,407.6L307.6,408.4L308.7,409.6L310.0,409.9L320.5,410.8L324.8,406.1L330.1,402.0L333.0,400.4L334.7,396.8L342.8,395.1L343.8,395.1L343.7,394.2L342.9,390.6L361.8,384.5L363.2,384.1L362.9,383.6L360.4,380.8L362.1,376.0L364.0,373.9L364.9,362.0L366.1,361.5L365.3,354.7L362.7,352.1L362.7,351.9L362.3,351.7Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M347.8,441.2L355.8,429.7L359.2,425.5L358.1,421.3L360.1,413.9L360.4,406.5L358.4,401.9L353.9,400.7L343.8,396.2L343.8,395.1L342.8,395.1L334.7,396.8L333.0,400.4L330.1,402.0L324.8,406.1L320.5,410.8L310.0,409.9L308.7,409.6L308.6,409.9L311.9,415.5L313.8,420.4L321.4,428.2L322.6,428.2L323.9,432.5L325.6,435.3L332.4,437.5L334.1,439.9L334.4,440.2L334.4,440.1L336.3,439.9L346.2,441.4L346.8,441.8L347.8,441.2Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="558.330197744" padding="0" w="500"><proj id="laea" lat0="1.0" lon0="16.5"/><bbox h="987.37" w="885.8" x="557.1" y="504.56"/><llbbox lat0="-38.0" lat1="40.0" lon0="-20.0" lon1="53.0"/></view></views></metadata><g id="countries"><path d="M225.8,327.2L224.3,327.8L222.5,331.9L224.6,334.4L226.4,340.2L228.5,344.3L227.0,351.3L228.2,355.5L231.7,362.0L230.2,371.4L223.1,379.3L221.4,387.6L218.2,396.9L218.2,403.0L218.0,405.6L223.4,405.3L227.1,403.6L233.3,406.6L237.3,406.5L262.7,406.6L265.6,409.1L276.1,410.0L278.5,410.9L285.0,410.4L294.1,408.8L296.2,408.4L294.9,407.2L289.1,401.8L287.0,396.7L287.4,376.4L300.1,376.4L301.2,372.4L301.4,362.6L301.2,361.7L301.0,361.8L291.1,363.1L289.9,363.9L289.9,358.3L286.6,351.9L287.2,344.1L286.3,336.9L278.1,336.5L278.4,334.3L271.9,335.0L270.9,335.8L269.6,341.5L264.2,341.2L257.5,342.4L254.5,337.9L249.5,327.1L226.2,326.9L225.8,327.2Z M226.2,318.3L226.0,318.2L221.4,318.2L220.9,319.2L218.9,320.9L219.1,321.1L220.0,323.1L220.2,324.1L220.2,326.0L220.3,326.1L222.2,325.9L224.5,319.0L226.1,318.4L226.2,318.3Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M266.4,1.0L266.1,7.9L266.5,10.0L269.8,14.4L269.8,15.0L271.5,13.4L273.5,12.2L274.9,7.9L275.0,7.4L274.9,7.3L271.9,3.1L272.4,0.8L272.5,0.8L272.5,0.5L272.5,0.0L265.8,0.0L265.8,0.0L265.7,0.5L265.7,0.9L266.4,1.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M499.3,97.3L498.7,97.5L498.4,97.2L497.4,94.5L497.3,94.6L497.0,96.5L491.0,105.7L490.1,108.2L487.4,110.0L482.0,109.9L476.7,111.7L473.0,109.3L472.9,109.7L473.3,111.2L480.8,118.8L497.0,119.7L497.2,119.1L497.1,118.0L497.1,110.1L500.0,108.9L498.1,105.9L500.0,103.4L500.0,98.4L499.9,97.9L499.3,97.3Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M408.0,7.3L408.5,7.2L412.1,8.3L413.8,7.8L416.5,11.6L416.9,12.1L417.2,12.1L417.9,11.7L418.8,11.7L418.7,11.1L416.0,7.2L412.3,5.1L409.8,0.0L399.7,0.0L402.9,5.7L404.8,5.4L407.7,7.1L408.0,7.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M408.0,7.3L408.1,7.5L408.4,7.7L408.5,7.8L413.1,11.6L415.7,12.0L416.9,12.1L416.5,11.6L413.8,7.8L412.1,8.3L408.5,7.2L408.0,7.3Z M418.8,11.7L419.2,11.7L425.4,5.6L427.8,7.3L427.1,11.1L432.7,13.4L431.8,10.8L433.2,8.9L432.5,1.9L434.7,0.0L409.8,0.0L412.3,5.1L416.0,7.2L418.7,11.1L418.8,11.7Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M347.3,302.7L344.3,302.8L341.5,305.5L336.9,304.6L336.8,305.0L336.8,305.3L338.2,307.3L338.1,311.8L339.2,316.1L339.4,317.1L341.5,317.1L345.9,312.4L346.5,311.1L347.3,302.9L347.4,302.8L347.3,302.7Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M161.5,203.6L156.8,199.4L154.4,200.2L154.0,202.0L153.8,202.7L153.6,203.1L150.9,206.0L143.6,208.9L143.5,208.9L143.2,209.6L142.4,213.1L146.1,215.9L146.1,218.9L147.7,222.5L147.5,236.9L148.4,241.8L147.3,242.4L148.7,242.1L151.9,241.6L154.8,241.4L155.5,233.6L155.1,232.6L155.7,222.6L158.1,221.7L162.9,213.0L161.6,204.7L161.9,204.2L161.5,203.6Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M138.8,180.9L133.7,180.3L126.0,184.1L124.3,186.2L122.0,185.4L119.1,187.6L118.7,189.5L116.4,189.6L115.9,192.2L110.2,191.9L109.5,195.5L108.1,197.6L102.0,202.1L101.6,206.5L100.3,207.6L100.0,211.6L99.8,212.0L100.2,212.4L107.6,217.6L111.3,215.8L115.2,216.0L118.5,219.2L118.6,219.0L118.6,218.6L118.7,208.4L126.9,208.3L135.4,207.5L136.9,207.9L138.4,208.2L140.6,208.8L141.1,209.1L141.7,208.9L143.5,208.9L143.6,208.9L150.9,206.0L153.6,203.1L153.8,202.7L153.5,202.4L152.8,198.2L148.4,197.5L145.4,194.9L144.8,192.3L142.4,189.9L139.6,184.3L140.1,181.7L140.2,181.4L138.8,180.9Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M285.7,4.0L286.3,4.1L299.4,4.1L303.5,3.2L303.6,0.8L304.3,1.0L304.2,0.8L304.4,0.4L305.2,0.2L305.4,0.0L285.1,0.0L286.0,1.5L285.7,2.3L285.7,3.9L285.7,4.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M308.4,409.5L301.1,411.4L298.2,413.8L295.0,410.8L280.0,412.9L279.4,438.1L272.9,438.1L272.5,456.8L272.5,457.0L272.8,457.2L274.9,458.7L276.4,469.2L277.1,471.0L285.3,469.6L288.3,466.9L292.1,460.8L300.4,463.8L304.7,463.9L308.5,463.0L310.7,457.5L317.1,453.8L318.9,449.3L323.5,446.8L326.6,443.4L332.8,440.3L334.4,440.2L334.1,439.9L332.4,437.5L325.6,435.3L323.9,432.5L322.6,428.2L321.4,428.2L313.8,420.4L311.9,415.5L308.6,409.9L308.7,409.6L308.4,409.5Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M293.3,210.1L291.1,209.6L285.7,212.8L279.4,220.7L276.4,222.6L266.9,224.0L266.6,227.7L264.4,230.1L257.9,230.6L252.7,233.1L250.3,231.6L246.8,233.5L243.7,233.9L243.0,233.8L242.3,235.0L236.6,243.1L237.6,253.7L240.5,258.0L239.8,258.2L247.0,265.9L247.5,269.7L247.8,270.3L248.3,269.4L250.5,262.0L255.5,261.0L264.3,261.7L264.7,261.9L264.6,260.5L265.3,255.6L267.8,252.1L278.8,255.2L287.5,256.5L292.4,255.1L294.1,253.2L297.9,253.6L304.2,251.3L312.5,249.0L320.1,250.5L323.5,249.7L325.5,250.3L325.0,249.8L324.1,246.8L319.8,244.0L317.8,241.0L318.1,239.7L309.9,233.4L310.3,232.7L306.8,229.0L303.7,228.3L303.0,225.8L302.6,225.7L302.0,225.5L299.0,221.0L299.1,217.7L294.1,211.0L293.6,210.1L293.3,210.1Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M114.1,249.5L113.8,249.7L114.7,249.9L114.9,249.6L114.1,249.5Z M83.1,213.4L83.0,213.7L84.2,221.1L82.9,223.2L79.3,231.5L78.9,231.8L79.0,231.9L80.0,235.3L79.2,237.9L79.9,240.7L82.5,241.3L84.4,254.7L85.2,254.6L91.3,251.9L98.0,249.7L109.6,248.9L114.5,248.1L115.3,249.5L115.4,249.6L117.0,248.2L114.1,239.7L117.5,229.9L119.5,228.0L118.2,221.6L118.7,219.4L118.6,219.0L118.5,219.2L115.2,216.0L111.3,215.8L107.6,217.6L100.2,212.4L99.8,212.0L99.6,211.9L96.3,213.5L95.0,213.0L95.0,209.7L92.1,212.0L83.3,213.4L83.1,213.4Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M243.3,233.3L241.4,228.3L238.7,225.0L232.8,219.5L234.5,216.8L244.2,216.6L241.6,214.2L239.9,208.9L240.6,206.0L238.7,199.3L234.6,195.3L233.4,195.3L234.0,198.5L236.5,200.7L236.7,204.6L230.8,210.6L227.5,219.1L226.1,220.1L223.0,226.1L221.8,226.3L218.0,236.6L215.8,239.5L212.5,240.8L210.2,237.4L206.1,237.4L198.1,244.8L195.0,252.9L195.1,252.9L200.1,258.6L204.5,264.6L203.6,268.4L203.5,270.0L204.0,270.7L204.7,271.0L212.5,271.0L214.1,271.0L214.2,270.5L215.7,270.1L226.6,270.4L227.6,270.6L227.7,271.1L229.4,271.1L236.7,270.8L247.5,274.1L247.8,270.4L247.8,270.3L247.5,269.7L247.0,265.9L239.8,258.2L240.5,258.0L237.6,253.7L236.6,243.1L242.3,235.0L243.0,233.8L243.3,233.3Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M323.5,249.7L320.1,250.5L312.5,249.0L304.2,251.3L297.9,253.6L294.1,253.2L292.4,255.1L287.5,256.5L278.8,255.2L267.8,252.1L265.3,255.6L264.6,260.5L264.7,261.9L264.7,263.1L260.9,272.1L259.9,282.4L258.5,288.0L258.7,289.9L248.0,301.3L247.5,310.2L246.5,312.3L239.0,318.8L236.1,319.8L235.1,316.0L230.7,317.1L228.3,319.7L226.3,318.1L226.2,318.3L226.1,318.4L224.5,319.0L222.2,325.9L220.3,326.1L220.5,326.5L221.0,327.1L225.8,326.7L226.2,326.9L249.5,327.1L254.5,337.9L257.5,342.4L264.2,341.2L269.6,341.5L270.9,335.8L271.9,335.0L278.4,334.3L278.1,336.5L286.3,336.9L287.2,344.1L286.6,351.9L289.9,358.3L289.9,363.9L291.1,363.1L301.0,361.8L301.2,361.7L301.5,361.7L303.9,363.5L303.7,365.2L310.4,364.3L314.0,368.3L319.9,369.4L322.9,366.7L326.1,371.5L337.7,378.9L340.5,379.3L340.8,370.9L338.7,372.4L335.8,372.2L331.6,367.6L333.2,360.5L333.3,354.6L331.8,350.7L335.5,346.8L347.0,343.5L348.1,343.3L348.0,342.7L343.9,334.3L339.8,327.7L340.6,326.0L338.9,320.8L339.4,317.4L339.4,317.1L339.2,316.1L338.1,311.8L338.2,307.3L336.8,305.3L336.8,305.0L336.2,304.7L335.7,303.1L337.6,301.3L340.5,295.8L340.7,295.7L340.8,295.5L341.7,285.3L343.1,281.2L350.1,274.1L351.7,270.0L348.6,268.7L349.7,261.7L349.3,261.5L349.1,261.2L342.5,255.7L339.2,254.5L331.0,255.6L325.7,250.8L325.5,250.3L323.5,249.7Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M264.3,261.7L255.5,261.0L250.5,262.0L248.3,269.4L247.8,270.3L247.8,270.4L247.5,274.1L236.7,270.8L229.4,271.1L227.7,271.1L227.7,271.6L231.6,276.2L234.3,276.9L234.2,282.3L231.8,284.8L231.9,287.8L236.0,290.4L234.0,302.5L232.6,303.4L231.1,301.2L224.2,299.5L221.8,302.3L215.8,302.5L216.2,306.0L218.3,309.4L217.6,310.7L213.8,311.4L212.7,313.3L214.4,314.8L217.2,317.9L217.5,319.2L218.8,320.7L218.9,320.9L220.9,319.2L221.4,318.2L226.0,318.2L226.2,318.3L226.3,318.1L228.3,319.7L230.7,317.1L235.1,316.0L236.1,319.8L239.0,318.8L246.5,312.3L247.5,310.2L248.0,301.3L258.7,289.9L258.5,288.0L259.9,282.4L260.9,272.1L264.7,263.1L264.7,261.9L264.3,261.7Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M353.2,42.5L355.5,39.1L350.2,41.4L347.1,41.2L346.3,42.8L346.0,42.7L350.2,42.7L351.8,43.4L353.7,43.0L353.2,42.5Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M345.6,42.6L344.2,43.6L346.4,46.2L353.8,43.1L353.7,43.0L351.8,43.4L350.2,42.7L346.0,42.7L345.6,42.6Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M430.7,203.0L431.2,200.1L432.0,198.5L429.9,195.3L429.8,194.9L427.6,197.0L427.0,197.4L425.2,196.6L425.0,196.8L424.5,197.8L421.7,202.2L428.9,207.1L429.4,207.1L430.1,205.7L430.8,204.5L431.3,203.5L430.7,203.0Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M201.1,32.9L195.9,31.5L196.0,32.3L187.1,33.2L181.5,32.3L175.8,32.1L167.3,33.7L159.2,34.4L154.1,36.7L153.3,37.8L140.4,42.6L139.3,42.4L141.0,47.4L140.6,54.5L141.9,63.0L131.1,64.1L128.4,64.9L126.3,69.8L124.3,70.1L117.9,72.8L115.5,75.4L107.9,76.7L107.6,77.7L96.2,81.7L93.4,83.5L92.4,88.9L92.1,90.6L91.9,91.8L91.7,93.2L92.8,94.0L98.0,98.2L105.4,104.0L112.2,109.3L113.5,110.3L115.3,111.7L126.5,120.9L149.2,138.6L149.2,140.6L152.1,143.2L157.3,146.2L162.0,148.1L162.1,153.4L166.4,153.0L168.5,152.7L170.0,152.4L178.7,150.9L190.6,141.2L217.1,125.5L220.5,123.4L220.0,122.2L212.5,116.3L209.7,116.0L208.2,110.9L204.9,105.9L205.3,104.1L207.8,102.1L207.8,83.5L206.1,78.0L206.7,77.7L206.4,76.1L195.9,53.3L196.3,51.3L200.0,48.5L201.3,45.0L201.3,40.2L203.8,32.8L201.1,32.9Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M358.3,68.3L348.5,70.1L344.7,67.6L339.2,67.1L332.5,69.9L327.5,72.8L319.7,70.6L307.6,68.0L303.5,68.7L303.0,67.9L301.3,70.1L302.3,73.8L301.0,78.2L303.0,84.6L304.3,107.4L305.5,132.0L305.6,133.5L308.0,133.5L363.7,132.0L382.8,131.3L382.8,131.2L378.2,127.1L374.6,125.1L373.5,122.8L372.8,118.4L374.4,118.2L370.2,114.6L367.6,110.2L360.8,100.0L357.2,91.6L351.8,85.8L348.5,80.1L349.0,78.1L354.9,87.1L358.5,90.5L362.6,90.0L364.0,80.8L364.3,80.5L362.2,75.7L361.2,74.0L359.5,70.3L358.8,68.9L358.5,68.4L358.4,68.2L358.3,68.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M385.1,185.4L385.3,185.4L389.5,183.9L392.0,186.0L393.9,180.9L398.2,183.8L401.9,182.3L406.5,183.0L413.4,185.3L424.4,196.1L425.0,196.8L425.2,196.6L427.0,197.4L427.6,197.0L429.8,194.9L429.5,194.1L427.6,193.9L423.5,188.9L419.4,186.2L415.9,181.8L404.3,175.8L402.0,171.2L399.2,162.6L396.8,158.7L391.4,163.0L389.8,165.2L386.8,165.9L386.7,171.0L384.1,179.3L384.8,183.4L385.1,185.4Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M113.4,26.3L119.6,34.4L122.6,33.6L128.7,30.8L137.8,31.4L142.9,30.1L144.0,28.3L147.1,26.3L149.3,26.3L151.6,22.6L156.8,18.4L155.8,17.9L156.7,11.3L162.1,5.4L165.1,3.7L175.2,0.0L122.0,0.0L120.5,1.2L120.1,5.6L115.5,9.7L116.3,13.5L114.3,17.9L114.5,21.0L112.1,23.6L112.0,26.4L113.4,26.3Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M385.1,185.4L384.7,187.3L383.0,196.2L379.7,197.6L377.6,201.7L375.7,208.7L373.3,209.3L371.4,211.8L370.4,219.0L370.4,219.4L370.4,219.6L370.8,225.5L363.5,230.1L364.0,230.9L373.8,237.3L379.3,247.0L379.4,247.1L379.4,247.4L383.0,248.6L382.9,251.9L384.4,254.0L392.5,255.7L399.0,259.9L408.6,261.2L412.0,257.6L417.1,255.3L423.7,257.3L424.7,257.2L424.9,256.9L430.8,254.9L433.0,252.4L439.0,250.1L444.9,250.3L451.5,242.3L462.9,229.4L464.4,227.6L462.1,227.7L437.6,221.2L431.9,215.8L428.4,208.7L429.3,207.4L429.4,207.1L428.9,207.1L421.7,202.2L424.5,197.8L425.0,196.8L424.4,196.1L413.4,185.3L406.5,183.0L401.9,182.3L398.2,183.8L393.9,180.9L392.0,186.0L389.5,183.9L385.3,185.4L385.1,185.4Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M207.2,0.0L207.8,2.7L209.8,3.1L210.8,0.1L207.2,0.0Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M227.6,270.6L226.6,270.4L215.7,270.1L214.2,270.5L214.1,271.0L214.1,272.6L214.1,277.0L212.7,279.1L202.0,278.9L201.9,279.2L200.2,281.8L203.4,285.8L200.0,284.1L199.9,288.5L197.5,290.9L195.8,290.2L200.1,297.4L198.1,295.2L202.6,302.9L207.3,307.1L212.0,312.7L212.7,313.3L213.8,311.4L217.6,310.7L218.3,309.4L216.2,306.0L215.8,302.5L221.8,302.3L224.2,299.5L231.1,301.2L232.6,303.4L234.0,302.5L236.0,290.4L231.9,287.8L231.8,284.8L234.2,282.3L234.3,276.9L231.6,276.2L227.7,271.6L227.7,271.1L227.6,270.6Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M359.3,68.3L359.3,67.8L359.8,66.3L359.4,67.0L358.4,68.2L358.5,68.4L358.8,68.9L359.3,68.3Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M135.4,207.5L126.9,208.3L118.7,208.4L118.6,218.6L118.6,219.0L118.7,219.4L118.2,221.6L119.5,228.0L117.5,229.9L114.1,239.7L117.0,248.2L115.4,249.6L114.9,249.6L114.7,249.9L114.9,249.9L122.3,252.3L128.8,249.4L130.6,249.1L137.9,245.5L141.3,245.5L143.8,243.5L144.3,243.2L141.3,240.6L140.4,238.6L140.6,231.7L140.0,225.7L139.3,224.4L140.5,220.0L139.3,218.5L139.6,214.1L137.3,208.3L136.9,207.9L135.4,207.5Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M61.2,196.7L54.0,196.7L48.5,194.5L46.3,194.3L46.3,194.9L44.6,197.8L45.4,198.7L43.1,201.5L38.7,203.1L36.6,206.4L36.5,207.2L40.3,211.5L45.2,215.1L47.2,220.1L47.3,220.4L50.4,218.6L53.4,214.5L61.1,214.0L64.3,218.4L66.6,224.9L67.1,224.9L67.5,224.9L72.2,226.1L73.0,230.7L74.4,233.9L78.6,231.6L78.9,231.8L79.3,231.5L82.9,223.2L84.2,221.1L83.0,213.7L83.1,213.4L83.3,212.9L81.2,209.2L80.9,205.0L78.4,200.8L72.5,199.7L68.9,198.4L64.5,198.3L62.2,199.7L61.4,197.0L61.6,196.8L61.2,196.7Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M28.6,187.9L29.6,188.8L26.8,190.1L26.7,190.7L32.9,190.3L33.1,189.1L46.0,189.5L44.2,188.0L39.2,186.0L35.3,187.3L28.4,187.0L28.6,187.9Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M46.3,194.3L44.1,194.2L36.7,193.9L32.3,195.4L26.6,195.8L28.3,196.9L30.0,199.1L34.8,199.6L36.8,201.7L34.4,202.3L36.4,205.9L36.6,206.4L38.7,203.1L43.1,201.5L45.4,198.7L44.6,197.8L46.3,194.9L46.3,194.3Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M214.1,271.0L212.5,271.0L204.7,271.0L204.0,270.7L203.5,270.0L203.3,271.7L202.0,275.3L201.3,276.1L202.1,278.7L202.0,278.9L212.7,279.1L214.1,277.0L214.1,272.6L214.1,271.0Z M196.2,259.9L194.3,263.3L195.5,263.6L197.6,260.2L196.2,259.9Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M293.5,42.1L292.8,44.2L298.8,45.0L299.1,45.9L307.5,45.2L304.9,43.3L303.2,43.4L294.9,41.7L293.5,42.1Z M304.3,1.0L303.6,0.8L303.5,3.2L299.4,4.1L286.3,4.1L285.7,4.0L285.3,4.0L279.5,6.7L275.7,7.4L275.0,7.4L274.9,7.9L273.5,12.2L271.5,13.4L269.8,15.0L270.4,15.4L275.8,21.8L278.6,24.0L281.4,23.3L288.5,25.0L287.1,26.2L281.4,23.9L277.2,27.2L280.1,30.1L281.6,34.4L282.6,32.4L285.1,35.5L287.1,34.6L287.9,32.4L286.9,30.6L290.0,28.6L288.7,26.2L291.8,26.6L293.6,27.9L292.2,23.7L284.9,20.1L286.7,19.7L284.4,12.6L284.4,9.6L288.5,12.1L293.9,11.0L290.6,7.8L294.0,6.6L303.2,7.3L303.4,7.5L304.9,5.7L304.6,4.1L304.8,1.1L304.3,1.0Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M463.0,18.4L460.5,20.9L454.6,23.5L452.3,23.8L444.7,21.9L441.7,19.5L436.1,18.8L432.8,13.7L432.7,13.4L427.1,11.1L427.8,7.3L425.4,5.6L419.2,11.7L418.8,11.7L417.9,11.7L417.2,12.1L416.9,12.1L415.7,12.0L413.1,11.6L408.5,7.8L408.4,7.7L408.2,7.7L406.9,7.0L406.2,9.6L404.6,9.8L407.7,16.2L408.7,16.8L412.5,24.4L412.5,24.5L412.5,24.5L418.1,31.8L422.7,32.7L423.7,37.4L420.9,42.6L421.9,45.9L426.9,50.3L427.2,52.2L430.0,52.8L439.0,59.2L439.4,64.8L446.2,71.5L446.5,71.4L448.0,67.5L451.1,69.9L454.8,69.0L465.3,82.8L467.1,84.2L475.1,87.6L482.1,91.3L489.5,91.8L497.0,86.3L500.0,86.9L500.0,16.7L498.4,17.0L491.0,12.3L488.4,11.2L479.2,10.3L478.8,9.6L473.2,9.7L473.3,10.4L462.4,17.3L463.0,18.4Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M412.3,24.4L407.2,24.4L400.8,24.1L399.6,25.8L399.1,26.0L399.1,26.1L396.7,29.7L394.7,30.4L395.6,36.3L395.3,38.8L385.1,51.7L383.6,52.7L384.3,54.2L386.3,58.6L388.0,60.2L387.3,61.0L388.7,61.2L394.8,61.8L407.6,68.0L409.4,69.2L434.5,78.9L435.5,78.5L436.2,77.3L437.8,72.0L439.9,71.1L442.8,71.7L442.8,71.5L445.1,71.6L445.7,71.7L446.2,71.5L439.4,64.8L439.0,59.2L430.0,52.8L427.2,52.2L426.9,50.3L421.9,45.9L420.9,42.6L423.7,37.4L422.7,32.7L418.1,31.8L412.5,24.5L412.5,24.5L412.3,24.4Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M366.6,57.8L366.7,55.7L366.9,55.4L366.3,53.8L366.3,53.4L366.2,53.5L364.4,55.6L364.0,55.9L362.2,56.0L362.1,56.8L361.2,62.1L360.8,64.1L359.9,66.3L359.8,66.3L359.3,67.8L359.3,68.3L358.8,68.9L359.5,70.3L361.2,74.0L362.2,75.7L364.3,80.5L364.7,79.9L365.1,75.5L365.0,73.3L365.8,67.8L365.8,66.7L365.6,66.7L363.1,65.5L362.5,60.2L365.1,60.5L365.5,60.5L365.4,59.0L365.6,58.5L366.3,58.2L366.6,58.1L366.6,57.8Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M244.7,24.9L237.2,26.2L233.7,26.2L230.1,25.3L227.0,28.4L230.7,29.7L234.3,32.0L236.3,32.2L238.3,34.2L241.2,34.9L243.0,32.8L241.9,30.4L244.7,24.9Z M211.6,6.9L209.8,4.8L205.7,7.0L203.9,6.6L204.7,11.7L204.0,17.8L207.3,18.9L207.6,17.6L210.8,17.0L211.4,11.0L212.4,9.5L211.6,6.9Z M225.1,0.0L228.5,3.4L235.3,5.7L240.7,9.0L243.2,12.7L245.4,13.2L248.3,20.1L245.5,26.7L247.4,26.7L250.3,21.6L252.6,20.1L253.5,17.2L251.8,15.9L251.0,12.3L253.0,9.8L257.7,11.3L260.4,14.3L261.2,12.4L258.2,8.9L250.3,5.1L246.8,2.6L248.1,0.8L241.6,0.0L225.1,0.0Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M388.0,60.2L386.3,58.6L384.3,54.2L383.6,52.7L382.2,53.7L373.2,60.6L371.1,60.4L367.2,58.2L366.6,58.1L366.3,58.2L365.6,58.5L365.4,59.0L365.5,60.5L365.8,61.5L365.8,63.3L366.2,64.7L365.8,66.1L365.8,66.7L365.8,67.8L365.0,73.3L365.1,75.5L364.7,79.9L364.8,80.4L364.7,81.3L371.7,82.0L375.0,77.5L379.7,76.0L382.1,72.5L374.9,66.1L386.5,61.9L387.3,61.0L388.0,60.2Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M379.4,247.1L378.2,248.4L373.5,253.3L372.1,254.8L370.8,256.2L371.9,258.5L374.0,260.5L377.2,268.8L377.8,274.3L374.5,278.5L370.8,284.6L370.5,291.7L370.6,292.9L371.1,292.9L396.1,307.3L396.8,311.5L406.6,319.0L406.7,318.8L410.8,312.5L413.5,307.1L418.4,300.8L421.7,298.9L422.7,297.7L418.9,291.8L418.6,265.6L423.9,258.5L424.7,257.2L423.7,257.3L417.1,255.3L412.0,257.6L408.6,261.2L399.0,259.9L392.5,255.7L384.4,254.0L382.9,251.9L383.0,248.6L379.4,247.4L379.4,247.1Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M272.5,0.8L272.5,0.8L273.2,0.9L273.4,0.0L272.5,0.0L272.5,0.5L272.5,0.8Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M442.8,71.7L439.9,71.1L437.8,72.0L436.2,77.3L435.5,78.5L436.7,78.6L441.0,78.8L447.7,81.4L447.3,80.8L443.3,74.2L444.4,74.4L442.8,71.9L442.8,71.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M366.6,53.1L369.7,47.8L367.5,44.8L365.7,45.3L365.8,45.8L364.2,48.0L364.2,49.4L362.4,55.5L362.2,56.0L364.0,55.9L364.4,55.6L366.2,53.5L366.3,53.4L366.6,53.1Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M78.6,231.6L74.4,233.9L73.0,230.7L72.2,226.1L67.5,224.9L67.1,224.9L67.1,225.2L66.8,226.2L58.4,236.0L59.7,237.6L73.8,249.6L79.6,253.0L83.7,254.6L84.4,254.7L82.5,241.3L79.9,240.7L79.2,237.9L80.0,235.3L79.0,231.9L78.9,231.8L78.6,231.6Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M302.8,67.5L302.2,66.4L291.4,64.4L290.1,61.7L284.5,59.8L272.1,64.6L271.0,67.3L269.9,76.3L266.3,77.8L260.4,74.4L255.2,72.4L247.7,71.1L244.4,69.3L243.0,65.1L233.8,60.9L229.6,60.1L227.2,60.7L220.7,58.5L219.8,58.1L219.6,63.2L210.8,69.5L211.2,74.1L207.4,77.4L206.7,77.7L206.1,78.0L207.8,83.5L207.8,102.1L205.3,104.1L204.9,105.9L208.2,110.9L209.7,116.0L212.5,116.3L220.0,122.2L220.5,123.4L223.9,124.3L231.1,126.2L235.2,129.7L240.1,127.1L240.1,127.1L242.5,126.0L246.6,124.1L261.3,131.6L296.4,149.2L299.6,150.8L299.6,149.9L299.5,147.3L306.1,147.2L305.7,136.9L305.6,133.5L305.5,132.0L304.3,107.4L303.0,84.6L301.0,78.2L302.3,73.8L301.3,70.1L303.0,67.9L302.8,67.5Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M33.1,130.8L40.0,130.7L42.9,131.2L48.3,129.9L51.6,125.7L54.5,117.2L55.7,115.7L65.2,109.1L66.8,106.8L69.6,100.5L71.6,100.1L77.6,94.2L84.2,95.7L91.1,94.1L91.3,90.6L92.1,90.6L92.4,88.9L93.4,83.5L96.2,81.7L107.6,77.7L107.9,76.7L115.5,75.4L117.9,72.8L124.3,70.1L126.3,69.8L128.4,64.9L131.1,64.1L141.9,63.0L140.6,54.5L141.0,47.4L139.3,42.4L138.1,42.2L134.6,40.6L125.3,40.8L121.0,36.0L118.6,36.4L114.8,43.0L111.6,47.2L106.2,50.2L101.5,51.7L94.9,56.7L93.6,60.0L91.2,62.4L89.1,68.2L89.1,73.3L81.5,81.0L75.4,84.9L72.5,86.0L66.4,87.0L61.7,94.0L54.8,98.5L49.2,109.5L43.0,114.1L40.3,119.7L34.2,127.4L33.1,130.8Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M472.7,375.2L470.7,372.6L469.5,374.2L468.2,378.7L466.0,382.1L461.7,383.4L461.6,385.8L459.8,388.7L460.3,390.7L457.3,392.6L457.4,391.0L449.9,397.2L449.4,398.7L445.2,398.6L436.4,402.6L436.4,404.0L432.8,409.4L432.5,415.7L434.2,423.8L433.0,428.9L426.4,437.1L424.3,447.8L425.7,452.4L424.7,458.1L426.2,462.7L432.8,467.1L444.9,463.6L450.0,454.3L452.6,448.2L468.0,414.3L469.2,408.2L471.6,404.3L471.8,396.9L475.0,399.9L475.9,393.3L475.7,386.9L474.1,378.4L472.7,375.2Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M272.5,0.8L272.4,0.8L271.9,3.1L274.9,7.3L275.0,7.4L275.7,7.4L279.5,6.7L285.3,4.0L285.7,4.0L285.7,3.9L285.7,2.3L286.0,1.5L285.1,0.0L273.4,0.0L273.2,0.9L272.5,0.8L272.5,0.8Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M166.4,153.0L162.1,153.4L162.0,148.1L157.3,146.2L152.1,143.2L149.2,140.6L149.2,138.6L126.5,120.9L115.3,111.7L113.5,110.3L111.3,110.2L102.4,109.8L101.9,130.4L101.9,153.1L102.3,176.3L80.7,175.5L76.4,174.8L65.9,176.9L61.7,174.6L58.4,180.0L57.3,179.5L57.8,180.6L58.5,184.8L58.0,187.9L61.9,193.0L61.7,196.3L61.6,196.8L61.4,197.0L62.2,199.7L64.5,198.3L68.9,198.4L72.5,199.7L78.4,200.8L80.9,205.0L81.2,209.2L83.3,212.9L83.1,213.4L83.3,213.4L92.1,212.0L95.0,209.7L95.0,213.0L96.3,213.5L99.6,211.9L99.8,212.0L100.0,211.6L100.3,207.6L101.6,206.5L102.0,202.1L108.1,197.6L109.5,195.5L110.2,191.9L115.9,192.2L116.4,189.6L118.7,189.5L119.1,187.6L122.0,185.4L124.3,186.2L126.0,184.1L133.7,180.3L138.8,180.9L140.2,181.4L140.3,181.1L146.3,180.1L147.6,179.1L162.4,178.8L168.5,153.9L168.5,152.7L166.4,153.0Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M265.7,0.9L265.7,0.5L265.8,0.0L265.8,0.0L264.6,0.0L264.8,0.4L265.7,0.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M354.4,472.4L354.5,468.6L353.0,466.7L361.6,460.5L370.4,457.2L373.5,448.0L373.1,437.3L370.7,425.3L383.3,415.9L390.3,409.4L399.7,406.0L406.4,401.9L411.7,395.2L412.9,391.4L412.2,377.7L413.3,370.8L412.8,368.3L413.8,360.6L413.5,359.9L399.8,366.4L398.7,365.7L391.2,368.2L388.2,367.6L385.0,368.2L381.6,366.4L377.5,367.2L376.0,367.2L375.1,367.2L371.7,371.6L372.6,379.6L380.7,388.9L379.8,397.9L375.9,400.8L375.9,403.8L370.5,399.7L369.5,396.8L370.7,386.9L365.1,387.0L363.5,384.3L363.2,384.1L361.8,384.5L342.9,390.6L343.7,394.2L343.8,395.1L343.8,396.2L353.9,400.7L358.4,401.9L360.4,406.5L360.1,413.9L358.1,421.3L359.2,425.5L355.8,429.7L347.8,441.2L346.8,441.8L346.8,442.2L348.2,449.8L349.3,452.1L350.0,457.3L348.9,465.8L349.0,466.3L349.1,466.4L349.5,468.0L349.4,468.5L349.6,470.1L349.4,472.3L350.0,472.3L351.0,472.5L353.6,472.5L354.3,472.5L354.4,472.4Z M374.1,370.9L373.9,370.2L374.2,370.2L374.1,370.9Z M373.7,370.2L373.0,370.3L373.1,370.0L373.7,370.2Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M113.5,110.3L112.2,109.3L105.4,104.0L98.0,98.2L92.8,94.0L91.7,93.2L91.5,94.3L90.3,102.1L69.7,100.8L66.7,118.4L59.2,122.1L58.2,133.0L33.3,131.4L32.1,135.1L32.7,133.5L35.9,136.5L35.0,147.2L35.5,156.3L30.8,167.6L30.4,170.8L32.9,165.9L44.0,165.6L50.8,170.2L52.8,174.4L57.1,179.4L57.3,179.5L58.4,180.0L61.7,174.6L65.9,176.9L76.4,174.8L80.7,175.5L102.3,176.3L101.9,153.1L101.9,130.4L102.4,109.8L111.3,110.2L113.5,110.3Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M374.1,370.9L374.2,370.2L373.9,370.2L374.1,370.9Z M373.7,370.2L373.1,370.0L373.0,370.3L373.7,370.2Z M362.7,351.9L362.7,352.1L365.3,354.7L366.1,361.5L364.9,362.0L364.0,373.9L362.1,376.0L360.4,380.8L362.9,383.6L363.2,384.1L363.5,384.3L365.1,387.0L370.7,386.9L369.5,396.8L370.5,399.7L375.9,403.8L375.9,400.8L379.8,397.9L380.7,388.9L372.6,379.6L371.7,371.6L375.1,367.2L376.0,367.2L375.9,367.0L374.6,365.3L374.1,360.5L372.2,354.4L370.0,352.6L362.8,351.8L362.7,351.9Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M294.1,408.8L285.0,410.4L278.5,410.9L276.1,410.0L265.6,409.1L262.7,406.6L237.3,406.5L233.3,406.6L227.1,403.6L223.4,405.3L218.0,405.6L217.9,407.1L218.3,410.8L223.0,417.1L229.8,430.7L235.7,439.3L237.9,455.4L238.8,457.0L241.0,468.1L242.6,474.5L245.0,478.4L249.0,482.3L249.7,482.8L253.5,478.9L256.0,483.4L266.8,485.0L269.2,482.6L272.0,481.8L272.5,459.8L272.5,457.0L272.5,456.8L272.9,438.1L279.4,438.1L280.0,412.9L295.0,410.8L298.2,413.8L301.1,411.4L308.4,409.5L308.7,409.6L307.6,408.4L305.3,407.6L297.6,408.1L296.2,408.4L294.1,408.8Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M240.1,127.1L235.2,129.7L231.1,126.2L223.9,124.3L220.5,123.4L217.1,125.5L190.6,141.2L178.7,150.9L170.0,152.4L168.5,152.7L168.5,153.9L162.4,178.8L147.6,179.1L146.3,180.1L140.3,181.1L140.2,181.4L140.1,181.7L139.6,184.3L142.4,189.9L144.8,192.3L145.4,194.9L148.4,197.5L152.8,198.2L153.5,202.4L153.8,202.7L154.0,202.0L154.4,200.2L156.8,199.4L161.5,203.6L161.9,204.2L162.3,204.0L165.6,194.8L166.1,192.0L175.3,189.3L182.9,192.9L184.0,194.7L187.8,194.8L190.8,193.2L197.2,196.3L203.1,197.0L209.0,193.4L222.8,194.5L229.1,191.0L230.3,191.0L229.7,188.0L231.8,182.2L238.2,174.1L243.1,168.9L246.2,144.9L242.1,138.0L240.8,131.1L240.1,127.1L240.1,127.1Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M161.9,204.2L161.6,204.7L162.9,213.0L158.1,221.7L155.7,222.6L155.1,232.6L155.5,233.6L154.8,241.4L155.3,241.3L164.6,241.2L169.6,243.9L173.1,248.3L174.4,253.6L179.2,255.5L182.6,253.1L183.7,255.4L193.1,254.3L192.9,251.7L194.9,252.9L195.0,252.9L198.1,244.8L206.1,237.4L210.2,237.4L212.5,240.8L215.8,239.5L218.0,236.6L221.8,226.3L223.0,226.1L226.1,220.1L227.5,219.1L230.8,210.6L236.7,204.6L236.5,200.7L234.0,198.5L233.4,195.3L232.5,194.0L231.4,192.4L230.3,191.0L229.1,191.0L222.8,194.5L209.0,193.4L203.1,197.0L197.2,196.3L190.8,193.2L187.8,194.8L184.0,194.7L182.9,192.9L175.3,189.3L166.1,192.0L165.6,194.8L162.3,204.0L161.9,204.2Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M482.0,147.2L482.4,147.9L488.6,159.1L489.1,159.3L491.6,163.7L492.8,163.0L496.8,161.4L497.4,160.7L500.0,160.3L500.0,135.2L499.6,138.7L482.9,146.8L482.0,147.2Z M497.2,119.1L497.9,119.8L498.4,120.5L500.0,122.6L500.0,108.9L497.1,110.1L497.1,118.0L497.2,119.1Z M497.4,94.5L498.4,97.2L498.7,97.5L499.3,97.3L499.3,96.9L499.3,94.0L497.6,93.5L497.4,94.5Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M112.0,26.4L112.1,23.6L114.5,21.0L114.3,17.9L116.3,13.5L115.5,9.7L120.1,5.6L120.5,1.2L122.0,0.0L111.2,0.0L108.7,6.2L104.8,10.7L102.9,15.0L106.9,17.5L105.7,19.0L104.5,24.1L102.8,26.7L111.5,26.4L112.0,26.4Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M471.3,107.2L471.8,103.6L470.6,99.9L468.3,96.7L466.3,102.2L467.6,106.1L467.5,106.5L468.0,107.3L470.6,107.6L471.3,107.2Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M346.9,293.4L345.9,293.8L341.0,295.7L340.7,295.7L340.5,295.8L337.6,301.3L335.7,303.1L336.2,304.7L336.8,305.0L336.9,304.6L341.5,305.5L344.3,302.8L347.3,302.7L347.4,302.8L347.7,302.7L349.5,301.8L349.3,296.9L346.9,293.5L347.2,293.4L346.9,293.4Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M91.9,91.8L92.1,90.6L91.3,90.6L91.1,94.1L84.2,95.7L77.6,94.2L71.6,100.1L69.6,100.5L66.8,106.8L65.2,109.1L55.7,115.7L54.5,117.2L51.6,125.7L48.3,129.9L42.9,131.2L40.0,130.7L33.1,130.8L33.0,131.1L31.9,134.7L32.1,135.1L33.3,131.4L58.2,133.0L59.2,122.1L66.7,118.4L69.7,100.8L90.3,102.1L91.5,94.3L91.7,93.2L91.9,91.8Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M497.2,119.1L497.0,119.7L480.8,118.8L473.3,111.2L472.9,109.7L472.7,109.7L471.2,109.4L471.4,108.4L471.1,107.8L470.6,107.6L468.0,107.3L467.5,106.5L466.9,106.0L461.7,97.6L460.8,93.7L450.9,85.7L448.2,82.0L447.7,81.4L441.0,78.8L436.7,78.6L435.5,78.5L434.5,78.9L409.4,69.2L407.6,68.0L394.8,61.8L388.7,61.2L387.3,61.0L386.5,61.9L374.9,66.1L382.1,72.5L379.7,76.0L375.0,77.5L371.7,82.0L364.7,81.3L364.3,85.7L364.4,89.7L367.3,90.2L377.3,103.1L382.0,108.5L385.3,115.3L390.3,117.7L391.6,119.0L396.4,126.6L396.8,128.0L403.5,142.4L410.8,147.7L417.4,158.7L419.6,160.1L425.3,168.5L425.4,169.1L427.2,162.0L428.6,160.8L437.3,161.0L447.6,161.9L452.1,163.7L455.3,160.9L458.7,154.7L464.8,151.0L480.6,147.5L482.0,147.2L482.9,146.8L499.6,138.7L500.0,135.2L500.0,122.6L498.4,120.5L497.9,119.8L497.2,119.1Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M305.6,133.5L305.7,136.9L306.1,147.2L299.5,147.3L299.6,149.9L299.6,150.8L299.7,153.8L294.6,177.0L293.5,180.7L289.8,185.0L291.0,187.7L289.0,193.4L286.4,196.7L293.9,207.2L293.8,209.4L293.6,210.1L294.1,211.0L299.1,217.7L299.0,221.0L302.0,225.5L302.6,225.7L302.6,225.7L302.7,225.5L305.3,224.2L307.1,217.5L310.2,214.2L313.7,213.4L319.8,219.9L322.6,218.9L327.6,219.1L329.3,220.9L334.7,219.9L339.8,216.6L339.8,215.6L345.8,216.1L350.9,217.3L353.7,214.3L358.2,207.1L357.9,203.8L356.1,201.8L360.4,201.1L363.3,202.9L363.8,209.9L368.9,214.2L370.4,219.4L370.4,219.4L370.4,219.4L370.4,219.0L371.4,211.8L373.3,209.3L375.7,208.7L377.6,201.7L379.7,197.6L383.0,196.2L384.7,187.3L385.1,185.4L384.8,183.4L384.1,179.3L386.7,171.0L386.8,165.9L389.8,165.2L391.4,163.0L396.8,158.7L396.6,158.2L388.9,153.3L388.0,151.4L385.6,136.9L383.0,132.9L382.8,131.3L363.7,132.0L308.0,133.5L305.6,133.5Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M302.6,225.7L302.6,225.7L303.0,225.8L303.7,228.3L306.8,229.0L310.3,232.7L309.9,233.4L318.1,239.7L317.8,241.0L319.8,244.0L324.1,246.8L325.0,249.8L325.5,250.3L325.7,250.8L331.0,255.6L339.2,254.5L342.5,255.7L349.1,261.2L349.3,261.5L349.5,261.1L355.9,259.2L356.9,260.6L364.1,258.6L366.4,259.5L369.2,257.8L370.8,256.2L372.1,254.8L373.5,253.3L378.2,248.4L379.4,247.1L379.3,247.0L373.8,237.3L364.0,230.9L363.5,230.1L370.8,225.5L370.4,219.6L370.4,219.4L370.4,219.4L370.4,219.4L368.9,214.2L363.8,209.9L363.3,202.9L360.4,201.1L356.1,201.8L357.9,203.8L358.2,207.1L353.7,214.3L350.9,217.3L345.8,216.1L339.8,215.6L339.8,216.6L334.7,219.9L329.3,220.9L327.6,219.1L322.6,218.9L319.8,219.9L313.7,213.4L310.2,214.2L307.1,217.5L305.3,224.2L302.7,225.5L302.6,225.7Z " data-iso="SSD" data-name="S. Sudan" data-pop="8260490.0"/><path d="M57.1,179.4L52.8,174.4L50.8,170.2L44.0,165.6L32.9,165.9L30.4,170.8L30.1,171.5L28.0,174.6L23.8,178.5L25.3,179.2L28.4,186.2L28.4,187.0L35.3,187.3L39.2,186.0L44.2,188.0L46.0,189.5L33.1,189.1L32.9,190.3L26.7,190.7L26.7,191.3L26.5,194.1L26.4,195.5L26.6,195.8L32.3,195.4L36.7,193.9L44.1,194.2L46.3,194.3L48.5,194.5L54.0,196.7L61.2,196.7L61.6,196.8L61.7,196.3L61.9,193.0L58.0,187.9L58.5,184.8L57.8,180.6L57.3,179.5L57.1,179.4Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M47.4,220.8L48.4,224.9L47.2,224.4L49.5,229.0L52.9,232.8L58.1,235.7L58.4,236.0L66.8,226.2L67.1,225.2L67.1,224.9L66.6,224.9L64.3,218.4L61.1,214.0L53.4,214.5L50.4,218.6L47.3,220.4L47.4,220.8Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M468.8,203.9L467.3,203.5L457.9,205.4L456.3,206.8L443.1,210.7L439.4,210.9L432.7,204.5L431.3,203.5L430.8,204.5L430.1,205.7L429.4,207.1L429.3,207.4L428.4,208.7L431.9,215.8L437.6,221.2L462.1,227.7L464.4,227.6L465.3,225.9L470.1,216.9L469.8,213.1L469.1,203.9L468.8,203.9Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M423.3,296.9L425.7,292.5L435.8,281.1L441.6,275.5L445.5,272.5L453.0,267.6L458.5,261.7L465.5,252.8L469.8,245.5L476.3,229.7L481.4,219.0L482.5,210.6L483.8,207.7L483.5,204.6L480.7,198.2L476.6,201.6L469.9,203.8L469.1,203.9L469.8,213.1L470.1,216.9L465.3,225.9L464.4,227.6L462.9,229.4L451.5,242.3L444.9,250.3L439.0,250.1L433.0,252.4L430.8,254.9L424.9,256.9L424.7,257.2L423.9,258.5L418.6,265.6L418.9,291.8L422.7,297.7L423.3,296.9Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M348.8,466.3L344.3,465.4L343.5,466.3L343.9,474.9L348.2,475.4L349.3,472.2L349.4,472.3L349.6,470.1L349.4,468.5L349.5,468.0L349.1,466.4L349.0,466.3L348.8,466.3Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M398.6,25.2L388.5,27.5L382.7,30.2L375.8,29.2L371.8,31.2L367.0,30.7L365.4,37.1L363.8,36.7L363.5,37.2L363.4,39.0L364.4,40.0L365.0,43.8L365.7,45.3L367.5,44.8L369.7,47.8L366.6,53.1L366.3,53.4L366.3,53.8L366.9,55.4L366.7,55.7L366.6,57.8L366.6,58.1L367.2,58.2L371.1,60.4L373.2,60.6L382.2,53.7L383.6,52.7L385.1,51.7L395.3,38.8L395.6,36.3L394.7,30.4L396.7,29.7L399.1,26.1L399.1,26.0L398.6,25.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M296.4,149.2L261.3,131.6L246.6,124.1L242.5,126.0L240.1,127.1L240.8,131.1L242.1,138.0L246.2,144.9L243.1,168.9L238.2,174.1L231.8,182.2L229.7,188.0L230.3,191.0L231.4,192.4L232.5,194.0L233.4,195.3L234.6,195.3L238.7,199.3L240.6,206.0L239.9,208.9L241.6,214.2L244.2,216.6L234.5,216.8L232.8,219.5L238.7,225.0L241.4,228.3L243.3,233.3L243.0,233.8L243.7,233.9L246.8,233.5L250.3,231.6L252.7,233.1L257.9,230.6L264.4,230.1L266.6,227.7L266.9,224.0L276.4,222.6L279.4,220.7L285.7,212.8L291.1,209.6L293.3,210.1L293.6,210.1L293.8,209.4L293.9,207.2L286.4,196.7L289.0,193.4L291.0,187.7L289.8,185.0L293.5,180.7L294.6,177.0L299.7,153.8L299.6,150.8L296.4,149.2Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M141.7,208.9L141.1,209.1L140.6,208.8L138.4,208.2L136.9,207.9L137.3,208.3L139.6,214.1L139.3,218.5L140.5,220.0L139.3,224.4L140.0,225.7L140.6,231.7L140.4,238.6L141.3,240.6L144.3,243.2L145.2,242.8L147.3,242.4L148.4,241.8L147.5,236.9L147.7,222.5L146.1,218.9L146.1,215.9L142.4,213.1L143.2,209.6L143.5,208.9L141.7,208.9Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M462.4,17.3L473.3,10.4L473.2,9.7L478.8,9.6L479.2,10.3L488.4,11.2L491.0,12.3L498.4,17.0L500.0,16.7L500.0,0.0L453.6,0.0L458.7,7.0L462.1,16.8L462.4,17.3Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M203.8,32.8L201.3,40.2L201.3,45.0L200.0,48.5L196.3,51.3L195.9,53.3L206.4,76.1L206.7,77.7L207.4,77.4L211.2,74.1L210.8,69.5L219.6,63.2L219.8,58.1L219.1,57.8L216.6,55.1L213.6,54.8L212.3,50.2L218.0,44.3L217.5,41.7L214.7,39.0L214.9,37.1L218.6,33.5L217.6,32.2L214.0,33.5L207.2,31.1L205.2,32.4L203.8,32.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M363.8,36.7L365.4,37.1L367.0,30.7L371.8,31.2L375.8,29.2L382.7,30.2L388.5,27.5L398.6,25.2L399.1,26.0L399.6,25.8L400.8,24.1L407.2,24.4L412.3,24.4L412.5,24.5L412.5,24.4L408.7,16.8L407.7,16.2L404.6,9.8L406.2,9.6L406.9,7.0L408.2,7.7L408.4,7.7L408.1,7.5L408.0,7.3L407.7,7.1L404.8,5.4L402.9,5.7L399.7,0.0L383.6,0.0L378.9,1.4L376.6,0.8L373.7,1.6L358.5,0.0L336.5,0.0L329.5,4.1L326.9,3.5L321.2,3.5L319.9,4.4L321.8,6.3L324.5,6.6L320.2,9.1L313.0,8.8L311.7,9.9L307.5,9.5L304.6,12.3L304.6,15.8L308.5,15.0L306.6,21.7L307.7,24.3L311.9,25.4L311.7,27.9L314.2,30.7L312.7,32.0L318.3,31.7L314.0,33.7L322.8,33.4L325.4,36.3L332.2,34.3L332.1,32.4L336.6,32.2L345.7,36.9L350.7,35.6L353.8,32.6L358.8,32.1L363.1,33.4L364.0,36.1L363.8,36.7Z M304.3,1.0L304.8,1.1L304.6,4.1L304.9,5.7L303.4,7.5L303.5,7.8L307.6,8.0L311.3,5.6L315.6,4.8L319.4,5.1L313.5,0.0L305.4,0.0L305.2,0.2L304.4,0.4L304.2,0.8L304.3,1.0Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M347.2,293.4L346.9,293.5L349.3,296.9L349.5,301.8L347.7,302.7L347.4,302.8L347.3,302.9L346.5,311.1L345.9,312.4L341.5,317.1L339.4,317.1L339.4,317.4L338.9,320.8L340.6,326.0L339.8,327.7L343.9,334.3L348.0,342.7L348.1,343.3L348.3,343.8L350.3,346.2L352.2,346.2L362.3,351.7L362.7,351.9L362.8,351.8L370.0,352.6L372.2,354.4L374.1,360.5L374.6,365.3L375.9,367.0L376.0,367.2L377.5,367.2L381.6,366.4L385.0,368.2L388.2,367.6L391.2,368.2L398.7,365.7L399.8,366.4L413.5,359.9L413.4,359.7L408.7,356.5L408.4,350.8L406.3,345.5L407.4,342.5L408.4,335.5L404.0,330.6L404.8,324.8L406.5,319.6L406.6,319.0L396.8,311.5L396.1,307.3L371.1,292.9L370.6,292.9L369.8,292.9L356.3,293.0L351.4,293.0L347.2,293.4L347.2,293.4Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M370.5,291.7L370.8,284.6L374.5,278.5L377.8,274.3L377.2,268.8L374.0,260.5L371.9,258.5L370.8,256.2L369.2,257.8L366.4,259.5L364.1,258.6L356.9,260.6L355.9,259.2L349.5,261.1L349.3,261.5L349.7,261.7L348.6,268.7L351.7,270.0L350.1,274.1L343.1,281.2L341.7,285.3L340.8,295.5L340.7,295.7L341.0,295.7L345.9,293.8L346.9,293.4L347.2,293.4L347.2,293.4L351.4,293.0L356.3,293.0L369.8,292.9L370.6,292.9L370.5,291.7Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M365.1,60.5L362.5,60.2L363.1,65.5L365.6,66.7L365.8,66.7L365.8,66.1L366.2,64.7L365.8,63.3L365.8,61.5L365.5,60.5L365.1,60.5Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/><path d="M482.0,147.2L480.6,147.5L464.8,151.0L458.7,154.7L455.3,160.9L452.1,163.7L447.6,161.9L437.3,161.0L428.6,160.8L427.2,162.0L425.4,169.1L425.9,171.5L425.2,177.2L427.3,179.2L428.9,185.7L429.9,186.7L430.2,190.9L433.2,194.6L435.7,195.4L440.6,194.2L447.9,189.4L457.5,187.1L461.0,184.1L465.4,183.9L467.6,180.9L470.6,178.8L479.7,175.3L487.0,171.2L486.6,167.4L488.5,165.1L491.6,163.7L489.1,159.3L488.6,159.1L482.4,147.9L482.0,147.2Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M334.4,440.2L332.8,440.3L326.6,443.4L323.5,446.8L318.9,449.3L317.1,453.8L310.7,457.5L308.5,463.0L304.7,463.9L300.4,463.8L292.1,460.8L288.3,466.9L285.3,469.6L277.1,471.0L276.4,469.2L274.9,458.7L272.8,457.2L272.5,457.0L272.5,459.8L272.0,481.8L269.2,482.6L266.8,485.0L256.0,483.4L253.5,478.9L249.7,482.8L249.9,483.0L257.3,498.9L260.5,503.8L260.7,509.8L258.4,511.9L264.0,521.2L268.8,523.8L271.1,524.1L281.8,521.4L284.7,519.5L296.4,519.6L298.8,520.4L305.2,519.5L307.4,517.5L310.1,517.9L322.9,510.7L333.1,502.2L335.3,499.9L342.8,489.4L345.9,486.5L349.3,484.4L351.2,481.6L353.9,474.1L354.3,472.5L353.6,472.5L351.0,472.5L350.0,472.3L349.4,472.3L349.3,472.2L348.2,475.4L343.9,474.9L343.5,466.3L344.3,465.4L348.8,466.3L349.0,466.3L348.9,465.8L350.0,457.3L349.3,452.1L348.2,449.8L346.8,442.2L346.8,441.8L346.2,441.4L336.3,439.9L334.4,440.1L334.4,440.2Z M325.4,483.7L330.3,487.1L330.8,488.3L326.2,493.8L324.1,494.0L321.5,497.3L319.9,497.0L316.0,490.3L318.0,489.2L320.6,485.8L325.4,483.7Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M326.2,493.8L330.8,488.3L330.3,487.1L325.4,483.7L320.6,485.8L318.0,489.2L316.0,490.3L319.9,497.0L321.5,497.3L324.1,494.0L326.2,493.8Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M362.3,351.7L352.2,346.2L350.3,346.2L348.3,343.8L348.1,343.3L347.0,343.5L335.5,346.8L331.8,350.7L333.3,354.6L333.2,360.5L331.6,367.6L335.8,372.2L338.7,372.4L340.8,370.9L340.5,379.3L337.7,378.9L326.1,371.5L322.9,366.7L319.9,369.4L314.0,368.3L310.4,364.3L303.7,365.2L303.9,363.5L301.5,361.7L301.2,361.7L301.4,362.6L301.2,372.4L300.1,376.4L287.4,376.4L287.0,396.7L289.1,401.8L294.9,407.2L296.2,408.4L297.6,408.1L305.3,407.6L307.6,408.4L308.7,409.6L310.0,409.9L320.5,410.8L324.8,406.1L330.1,402.0L333.0,400.4L334.7,396.8L342.8,395.1L343.8,395.1L343.7,394.2L342.9,390.6L361.8,384.5L363.2,384.1L362.9,383.6L360.4,380.8L362.1,376.0L364.0,373.9L364.9,362.0L366.1,361.5L365.3,354.7L362.7,352.1L362.7,351.9L362.3,351.7Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M347.8,441.2L355.8,429.7L359.2,425.5L358.1,421.3L360.1,413.9L360.4,406.5L358.4,401.9L353.9,400.7L343.8,396.2L343.8,395.1L342.8,395.1L334.7,396.8L333.0,400.4L330.1,402.0L324.8,406.1L320.5,410.8L310.0,409.9L308.7,409.6L308.6,409.9L311.9,415.5L313.8,420.4L321.4,428.2L322.6,428.2L323.9,432.5L325.6,435.3L332.4,437.5L334.1,439.9L334.4,440.2L334.4,440.1L336.3,439.9L346.2,441.4L346.8,441.8L347.8,441.2Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/AS.svg b/plugins/UserCountryMap/svg/AS.svg
index 883ef13149..0ae36a2fc8 100644
--- a/plugins/UserCountryMap/svg/AS.svg
+++ b/plugins/UserCountryMap/svg/AS.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 276" height="276px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 450 276" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="276.168144542" padding="0" w="450"><proj id="laea" lat0="39.5" lon0="104.5"/><bbox h="858.81" w="1404.46" x="297.77" y="525.07"/></view></views></metadata><g class="" id="countries"><path d="M202.3,195.2L196.6,193.8L197.4,192.3L195.2,190.1L191.3,190.1L187.3,192.1L186.2,192.0L180.1,194.8L180.2,194.1L175.5,192.0L173.1,192.3L170.4,195.1L170.0,194.5L162.8,190.6L161.0,191.1L160.2,189.7L155.4,185.2L155.5,184.6L149.6,179.4L149.5,178.7L146.0,179.1L140.7,171.8L139.7,171.6L139.7,167.2L141.2,168.2L142.5,164.7L141.9,163.4L142.6,161.2L142.9,161.1L145.9,160.9L148.4,157.4L152.1,159.2L155.4,158.2L158.6,160.3L166.5,160.2L167.3,159.1L174.6,159.3L177.8,161.3L177.0,164.0L177.8,166.2L177.0,169.8L178.2,171.6L182.0,172.9L184.4,175.5L188.1,176.7L192.1,176.8L194.6,180.5L198.1,181.0L201.3,178.3L202.5,178.2L204.8,180.6L206.2,185.6L206.3,188.2L205.6,193.1L204.5,194.8L202.5,195.3L202.3,195.2Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M134.2,145.5L133.4,145.1L132.7,145.2L133.0,145.9L133.1,145.9L132.7,146.0L125.7,144.6L122.3,146.6L122.4,148.7L121.4,150.4L119.3,151.5L119.2,153.2L116.9,153.0L115.7,155.1L113.6,155.4L110.8,159.3L108.9,159.7L104.3,159.6L103.1,158.8L100.4,159.7L98.5,163.1L91.5,161.9L83.5,156.2L82.6,155.2L83.8,154.6L87.5,151.3L85.4,148.4L88.7,138.9L91.7,137.0L93.4,134.7L93.5,134.4L93.7,134.5L95.5,137.5L98.1,137.7L99.0,136.3L103.6,136.4L105.5,134.1L108.0,134.5L109.1,133.6L110.6,135.3L110.8,135.4L111.7,135.7L112.3,136.1L113.2,136.9L114.0,137.5L113.9,137.6L113.9,137.8L115.6,138.5L121.1,139.1L124.1,136.5L125.5,139.8L124.2,143.9L130.6,143.1L134.3,145.4L134.3,145.5L134.2,145.5Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M32.9,27.0L32.4,28.2L32.0,29.0L31.2,29.7L31.0,29.8L31.0,29.8L29.7,30.4L27.9,33.4L27.9,33.5L27.6,33.6L25.0,34.6L24.1,34.1L22.9,33.9L23.2,33.6L25.0,30.4L26.1,29.5L29.9,27.0L29.8,26.7L32.8,25.6L32.8,25.9L32.9,26.8L32.9,26.8L32.9,27.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M62.4,163.7L61.5,165.8L61.5,165.9L59.5,165.3L57.0,168.2L54.5,171.8L54.2,172.3L53.9,172.5L47.2,166.9L46.2,159.5L46.4,159.4L47.2,161.8L54.4,164.9L55.6,164.1L62.3,161.4L62.3,161.4L61.9,162.9L62.0,163.1L62.3,163.3L62.4,163.7Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M64.2,97.4L63.9,97.1L63.4,97.0L63.3,96.8L63.5,96.5L64.3,93.9L63.5,93.5L62.8,91.6L62.6,91.4L62.6,91.2L62.4,89.4L61.7,88.7L63.4,84.3L63.5,84.2L63.7,84.3L65.4,85.4L67.0,86.6L67.1,86.6L67.1,86.8L65.1,92.3L65.3,94.6L64.4,97.1L64.2,97.4Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M52.7,5.4L52.1,5.5L51.9,5.6L50.7,6.9L50.6,7.1L50.4,7.0L48.5,7.0L47.7,6.7L46.1,7.1L45.6,7.0L45.5,6.9L44.8,6.5L44.2,5.3L42.9,1.9L42.9,1.8L42.9,1.2L43.7,-2.9L44.3,-3.2L42.7,-7.1L42.9,-7.1L43.2,-9.5L46.7,-4.3L46.2,-1.8L50.7,-2.8L51.5,-2.4L51.6,-2.4L51.7,-0.1L53.0,-0.0L52.8,5.3L52.7,5.4L52.7,5.4Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M63.3,96.8L63.0,96.3L62.3,95.1L62.5,91.8L62.5,91.7L62.6,91.5L62.6,91.4L62.8,91.6L63.5,93.5L64.3,93.9L63.5,96.5L63.3,96.8Z M76.0,91.8L76.1,99.9L74.1,98.8L70.6,102.0L69.2,102.2L68.4,103.6L67.4,100.5L69.4,99.2L69.4,97.7L64.4,97.6L64.2,97.4L64.4,97.1L65.3,94.6L65.1,92.3L67.1,86.8L67.1,86.6L67.9,86.6L69.8,90.2L70.6,89.8L71.4,87.4L71.6,87.3L71.8,87.6L71.9,90.8L72.9,92.2L75.9,91.4L76.0,91.8Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M181.1,217.7L181.1,217.9L180.9,220.5L179.7,222.2L179.6,222.2L178.9,220.6L178.4,216.4L177.1,214.0L174.5,212.5L173.9,215.7L168.3,215.8L168.3,215.5L167.3,209.1L167.9,207.9L166.0,204.7L167.7,203.1L166.8,200.2L170.1,199.1L171.7,200.6L174.0,204.1L179.4,205.0L180.9,206.3L179.4,208.8L177.6,208.9L176.9,212.8L180.5,211.0L181.0,217.5L181.1,217.7Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M45.9,45.0L42.3,45.3L41.1,45.3L40.4,47.7L40.2,48.0L39.4,46.7L37.2,44.5L37.1,44.6L37.1,44.2L35.8,45.0L34.4,43.5L31.8,37.5L31.7,37.2L31.8,37.2L32.7,36.6L33.1,36.4L34.1,34.0L34.4,33.2L34.6,33.3L36.4,32.1L36.8,32.6L41.4,29.1L41.5,29.2L41.5,29.5L45.3,38.6L45.9,39.3L46.8,44.4L45.9,45.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M40.3,18.6L40.4,18.7L39.0,19.8L37.8,22.0L35.9,22.3L35.6,22.2L35.6,22.1L33.3,22.0L32.9,21.7L31.5,22.7L31.5,22.6L31.5,22.3L32.0,20.4L37.4,10.6L38.9,11.0L40.3,18.4L40.3,18.6Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M89.4,12.7L89.2,15.8L90.2,16.4L90.1,18.6L86.0,22.4L84.8,24.6L82.6,26.9L82.3,25.4L79.0,28.8L78.9,28.8L78.7,28.5L74.9,27.3L72.7,20.6L68.7,13.9L68.6,13.9L69.0,13.5L71.1,11.4L73.1,11.8L76.4,9.2L77.6,8.3L77.6,8.5L80.6,11.5L82.8,10.8L84.9,11.6L86.4,10.6L86.5,10.5L86.6,10.5L87.5,11.0L87.6,11.5L89.6,12.2L89.6,12.3L89.4,12.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M170.7,194.5L175.1,191.9L178.8,193.4L180.1,194.6L180.1,194.8L181.4,196.8L179.8,198.5L175.2,197.5L172.6,197.8L170.4,195.1L170.7,194.5Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M26.8,79.8L27.8,79.5L28.6,80.9L28.9,82.7L28.8,83.1L28.1,82.5L28.0,81.5L26.8,79.6L26.8,79.8Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M28.8,83.2L25.2,81.2L25.1,80.6L26.7,79.4L26.8,79.6L28.0,81.5L28.1,82.5L28.8,83.1L28.8,83.2Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M57.4,7.8L57.4,7.8L55.2,7.1L54.5,6.7L53.0,5.3L52.7,5.4L52.8,5.3L53.0,-0.0L51.7,-0.1L51.6,-2.4L51.8,-2.6L53.3,-5.8L56.5,-8.6L57.4,-8.4L60.0,-5.4L60.2,-4.0L60.2,-4.0L60.6,-3.0L58.4,1.8L59.7,1.8L58.7,6.3L57.5,7.7L57.4,7.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M-1.4,190.9L-1.6,190.8L-4.8,188.3L-3.6,185.5L-1.3,184.3L-0.8,184.0L-0.6,184.0L-0.0,185.1L0.3,185.1L1.8,184.8L1.8,185.0L1.9,187.5L1.1,188.0L0.2,189.3L0.3,189.8L-0.1,190.1L-0.7,190.5L-1.4,190.9Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M-19.6,27.7L-19.8,27.5L-22.4,30.7L-31.5,38.9L-33.8,39.0L-37.6,47.7L-39.5,55.3L-41.0,54.4L-52.5,47.6L-58.4,45.9L-61.8,38.2L-60.6,36.3L-58.5,28.6L-56.8,23.8L-56.1,23.1L-53.4,14.8L-50.7,7.4L-46.2,-3.6L-38.1,-20.8L-33.0,-30.4L-27.6,-33.2L-26.7,-32.2L-24.3,-27.3L-23.7,-23.4L-22.3,-23.0L-20.7,-19.4L-17.9,-20.1L-16.6,-13.3L-11.9,-17.2L-7.8,-19.7L-4.6,-20.8L-2.8,-19.2L0.1,-14.6L0.8,-10.6L2.2,-6.6L3.7,6.8L4.0,8.1L-0.4,9.7L-3.0,11.6L-5.0,12.2L-8.0,12.0L-18.8,26.8L-19.6,27.7Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M18.7,96.3L18.4,97.2L17.3,99.5L16.9,100.7L15.6,103.7L15.4,103.7L11.1,107.2L9.5,105.7L9.8,102.6L11.8,96.1L9.4,100.7L8.7,105.6L6.4,111.0L3.9,121.7L4.0,125.1L3.4,124.6L1.6,128.4L2.3,134.8L2.3,134.9L-1.7,130.6L-8.5,122.8L-15.3,114.2L-23.1,103.2L-23.8,102.0L-23.2,101.3L-11.0,86.2L-4.0,78.2L-1.6,74.5L2.2,71.1L3.6,70.9L3.4,71.5L6.2,77.5L7.8,84.2L13.7,87.0L15.1,92.3L18.9,95.8L19.0,95.8L18.9,95.9L18.7,96.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M-1.9,156.8L-3.8,165.4L-1.8,170.6L-0.4,176.5L0.7,179.4L1.1,183.5L1.9,184.3L1.8,184.8L0.3,185.1L-0.0,185.1L-0.6,184.0L-0.8,184.0L-0.9,183.4L-2.7,173.7L-6.6,167.7L-8.6,167.0L-9.5,163.8L-11.7,165.7L-14.2,162.6L-14.3,162.6L-13.8,161.4L-12.9,159.0L-10.8,157.3L-7.7,153.4L-6.4,154.3L-1.5,153.9L-1.9,156.8Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M101.9,4.7L98.6,5.3L95.2,7.5L94.2,7.7L94.1,7.8L94.0,7.7L94.1,4.3L94.4,2.7L93.1,1.7L93.3,1.6L97.7,-2.4L100.7,0.2L101.8,4.7L101.9,4.7Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M-0.8,184.0L-1.3,184.3L-3.6,185.5L-4.8,188.3L-1.6,190.8L-1.4,190.9L-1.5,191.1L-2.2,191.4L-0.9,201.3L7.0,211.6L9.3,213.3L10.4,214.0L9.3,214.4L1.3,217.3L-3.3,219.3L-9.4,216.3L-10.9,216.9L-14.2,216.0L-14.6,215.6L-17.3,212.1L-20.1,211.6L-22.3,212.2L-26.4,207.9L-31.6,199.1L-32.5,185.6L-34.9,177.4L-29.5,174.6L-29.5,174.5L-27.1,170.9L-24.7,171.3L-21.9,168.0L-19.9,166.7L-18.2,167.3L-15.0,163.4L-14.3,162.6L-14.2,162.6L-11.7,165.7L-9.5,163.8L-8.6,167.0L-6.6,167.7L-2.7,173.7L-0.9,183.4L-0.8,184.0Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M139.2,-12.7L136.3,-11.9L130.8,-8.5L128.1,-5.8L124.1,-4.3L121.9,-2.3L119.3,-0.9L118.3,1.7L114.8,3.2L105.7,2.1L105.7,2.1L100.7,-4.0L99.8,-4.4L103.8,-9.4L108.9,-11.7L112.4,-12.8L113.2,-11.8L122.0,-10.6L123.6,-11.3L126.2,-14.9L128.0,-15.2L133.1,-18.3L135.9,-22.8L137.1,-21.9L135.2,-19.3L135.6,-16.8L142.8,-15.7L141.8,-13.6L139.3,-12.8L139.2,-12.7Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M26.6,-1.8L24.1,-0.3L21.3,0.3L24.0,-3.2L25.3,-3.4L26.6,-1.8Z M38.1,-14.3L37.6,-14.6L34.0,-13.3L31.5,-11.5L29.6,-9.1L29.6,-9.2L27.2,-10.6L26.9,-13.1L28.0,-17.9L26.7,-19.9L24.3,-19.3L23.3,-20.4L25.5,-29.5L25.5,-30.3L28.3,-34.2L33.2,-34.8L40.1,-37.3L44.3,-40.0L44.5,-41.4L47.3,-46.1L50.5,-48.5L49.6,-43.2L49.6,-40.1L54.1,-42.3L52.0,-37.6L53.6,-37.2L55.7,-34.5L58.6,-34.5L58.9,-33.1L55.3,-28.1L54.8,-26.3L53.4,-25.6L50.1,-16.4L44.8,-15.5L41.6,-17.3L38.8,-17.1L40.0,-16.3L38.2,-14.4L38.1,-14.3Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M18.9,95.9L19.0,95.8L19.8,95.7L20.2,95.6L19.4,96.0L19.2,96.2L18.7,96.3L18.9,95.9Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M71.4,87.4L70.6,89.8L69.8,90.2L67.9,86.6L67.1,86.6L67.0,86.6L65.4,85.4L63.7,84.3L63.5,84.2L63.6,84.1L61.3,79.9L60.9,79.0L61.8,78.8L64.1,74.9L63.8,74.1L63.5,70.7L63.4,69.9L64.9,70.9L65.7,73.7L71.7,84.1L70.9,85.1L71.6,87.2L71.6,87.3L71.4,87.4Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M33.6,46.4L32.0,42.0L30.7,40.9L29.7,43.6L28.0,41.6L28.5,38.7L26.9,39.8L23.7,43.7L23.1,42.9L21.1,48.7L20.7,47.1L18.1,48.0L17.3,49.2L15.2,49.1L16.2,46.7L15.0,47.0L16.9,44.6L17.8,42.1L20.4,42.8L20.3,46.4L21.3,46.6L20.7,42.6L19.8,41.5L20.4,39.3L22.8,34.3L22.9,33.9L24.1,34.1L25.0,34.6L27.6,33.6L27.9,33.5L28.0,33.8L29.1,35.3L31.6,37.0L31.7,37.2L31.8,37.5L34.4,43.5L35.8,45.0L37.1,44.2L37.1,44.6L37.2,44.9L35.6,45.9L34.8,46.7L33.5,46.6L33.6,46.4Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M259.9,216.6L260.2,216.4L260.3,216.4L260.9,216.4L260.9,216.4L259.5,217.0L259.9,216.7L259.9,216.6Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M32.0,20.4L31.5,22.3L31.5,22.6L31.3,22.7L31.2,22.9L31.1,23.2L31.3,22.4L32.1,18.4L31.9,20.1L32.0,20.4Z M44.1,15.9L44.0,15.9L42.3,17.3L42.0,18.3L40.4,18.5L40.3,18.6L40.3,18.4L38.9,11.0L37.4,10.6L32.1,19.3L33.4,15.0L38.7,6.4L38.8,3.4L38.9,3.5L39.7,7.9L42.8,7.3L44.5,8.5L44.5,8.8L44.5,9.0L42.8,13.5L42.8,13.9L44.1,15.9L44.1,15.9Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M56.1,18.0L55.6,18.6L55.6,19.1L55.0,20.4L54.9,20.5L54.8,20.5L52.5,19.6L47.1,20.3L46.0,18.7L45.9,18.7L45.9,18.6L45.2,16.9L44.5,16.3L44.2,15.9L44.1,15.9L44.1,15.9L42.8,13.9L42.8,13.5L44.5,9.0L44.5,8.8L44.6,8.7L45.2,7.9L45.7,7.5L45.6,7.0L46.1,7.1L47.7,6.7L48.5,7.0L50.4,7.0L50.6,7.1L50.6,7.1L50.9,11.3L52.0,11.2L55.2,14.0L55.9,17.7L55.9,17.8L56.1,18.0Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M145.8,178.4L141.5,182.6L142.5,183.9L151.2,191.1L155.6,192.4L162.5,197.2L163.6,197.4L167.5,196.1L168.0,192.5L168.0,192.3L169.7,191.9L170.5,192.3L170.2,194.9L170.4,195.1L172.6,197.8L175.2,197.5L179.8,198.5L181.4,196.8L180.1,194.8L180.4,194.8L183.8,193.9L186.0,192.1L191.5,190.5L195.9,189.9L196.9,190.9L196.9,194.1L199.9,195.0L200.0,195.1L198.4,197.2L191.8,200.7L189.4,205.9L189.8,206.6L187.0,210.8L185.0,210.3L183.1,217.1L181.3,217.6L181.1,217.7L181.0,217.5L180.5,211.0L176.9,212.8L177.6,208.9L179.4,208.8L180.9,206.3L179.4,205.0L174.0,204.1L171.7,200.6L170.1,199.1L166.8,200.2L167.7,203.1L166.0,204.7L167.9,207.9L167.3,209.1L168.3,215.5L168.1,216.1L164.7,216.7L164.1,215.9L159.9,217.5L157.0,221.6L154.3,222.6L154.0,221.7L148.1,226.9L146.3,227.4L140.9,230.1L139.7,232.3L136.9,232.1L134.3,233.5L132.7,233.4L131.1,242.7L130.3,245.2L127.8,249.1L127.4,253.9L125.7,253.6L123.5,256.0L123.7,256.9L120.3,257.8L118.3,260.1L115.3,258.4L113.4,253.8L111.8,244.3L110.2,240.3L109.6,232.6L108.5,227.2L107.5,225.3L107.8,214.1L108.4,213.3L108.0,209.8L109.7,206.2L110.2,203.1L109.9,200.7L108.9,200.0L108.2,202.7L102.1,203.9L98.3,197.1L98.5,195.4L102.2,196.2L103.8,194.6L101.0,194.8L98.2,192.5L96.9,189.1L97.0,188.6L99.6,187.7L102.8,189.6L107.5,189.1L107.2,186.9L104.8,179.1L109.9,176.2L112.7,177.6L114.4,176.9L123.1,171.3L126.0,168.5L128.9,163.8L126.8,159.8L129.6,154.3L133.5,156.8L138.1,155.9L138.2,155.7L138.7,155.6L140.1,155.2L140.6,155.1L140.9,155.0L141.0,155.0L141.3,156.1L141.6,158.9L143.0,161.0L142.4,161.3L142.3,167.6L139.7,166.9L139.7,171.5L143.7,176.2L145.8,178.1L145.8,178.4Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M63.3,96.8L63.4,97.0L63.9,97.1L64.2,97.4L64.4,97.6L69.4,97.7L69.4,99.2L67.4,100.5L68.4,103.6L68.3,103.7L68.8,110.7L71.0,115.2L75.5,117.2L77.6,117.0L77.8,116.4L85.3,117.7L87.9,119.4L89.4,122.4L91.7,124.9L92.9,129.3L94.9,130.5L93.5,134.3L93.5,134.4L93.4,134.7L91.7,137.0L88.7,138.9L85.4,148.4L87.5,151.3L83.8,154.6L82.7,155.1L82.6,155.2L82.8,156.2L83.6,161.7L85.3,165.1L85.5,168.5L84.4,170.8L83.5,170.3L79.8,170.6L77.7,173.8L77.5,173.8L65.8,163.0L65.9,162.0L62.6,157.2L59.7,157.4L56.6,154.6L52.4,144.8L53.3,134.9L51.5,133.9L51.1,131.7L49.0,132.8L48.8,132.8L48.8,127.3L50.9,124.8L50.0,112.5L51.0,111.4L54.3,109.7L56.1,107.4L54.8,105.2L56.1,100.0L56.1,100.0L56.2,100.0L60.3,91.0L62.5,91.6L62.5,91.7L62.5,91.8L62.3,95.1L63.0,96.3L63.3,96.8Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M56.1,100.0L54.8,105.2L56.1,107.4L54.3,109.7L51.0,111.4L50.0,112.5L50.9,124.8L48.8,127.3L48.8,132.8L48.5,132.7L48.3,132.4L47.5,131.4L47.4,131.5L46.5,130.2L45.3,129.8L42.6,131.5L41.8,131.7L41.3,131.5L35.7,117.5L33.6,108.3L31.8,105.5L31.4,104.9L32.0,104.8L32.1,103.5L33.3,100.8L33.7,99.8L34.7,100.0L43.8,98.9L47.4,95.2L50.9,95.2L50.9,95.2L51.1,95.3L52.3,95.1L54.3,97.9L56.1,99.9L56.1,100.0L56.1,100.0Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M25.8,94.9L25.4,94.7L25.2,94.8L24.5,95.5L24.4,95.3L21.6,96.7L21.8,98.2L21.9,98.3L21.5,98.8L18.9,100.9L17.9,101.9L15.9,103.6L15.6,103.7L16.9,100.7L17.3,99.5L18.4,97.2L18.7,96.3L19.2,96.2L19.4,96.0L20.2,95.6L20.2,95.6L21.4,95.1L22.5,94.4L25.1,92.5L25.5,92.2L26.1,92.9L26.3,93.0L27.8,92.9L27.9,92.9L27.7,93.0L27.2,93.9L27.0,94.0L26.1,94.8L25.9,95.0L25.8,94.9Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M13.4,25.6L10.0,26.3L8.9,27.8L7.5,27.8L7.5,26.1L9.1,18.2L11.1,18.6L11.1,20.7L13.4,25.6Z M19.3,2.6L13.5,5.8L11.5,4.6L12.7,2.4L15.9,0.8L18.8,-1.4L20.4,0.9L19.3,2.6Z M42.9,1.8L42.6,1.8L41.9,1.4L40.7,2.6L39.3,3.7L39.5,3.8L38.0,0.3L34.1,2.5L31.0,8.3L28.0,11.6L27.2,13.1L24.4,24.3L22.8,28.8L21.6,29.2L22.9,23.9L21.2,23.8L18.9,26.9L17.2,27.6L12.9,27.6L12.6,26.7L16.6,25.5L19.9,21.5L21.5,17.7L22.6,11.4L27.6,0.7L30.9,-1.8L32.6,-6.9L29.9,-8.5L29.6,-9.1L31.5,-11.5L34.0,-13.3L37.6,-14.6L38.1,-14.3L38.0,-14.1L40.3,-11.4L39.1,-9.8L40.6,-7.6L42.2,-6.9L42.7,-7.1L44.3,-3.2L43.7,-2.9L42.9,1.2L42.9,1.8Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M30.8,105.0L25.1,101.9L24.8,107.7L22.4,108.2L20.5,106.9L17.4,107.5L15.4,104.3L15.8,103.9L15.9,103.6L17.9,101.9L18.9,100.9L21.5,98.8L21.9,98.3L22.2,98.1L22.9,97.6L23.4,96.8L24.2,96.1L24.5,95.5L25.2,94.8L25.4,94.7L25.8,94.9L25.9,95.0L26.1,95.3L26.3,97.9L26.9,98.8L32.9,99.7L33.7,99.8L33.3,100.8L32.1,103.5L32.0,104.8L31.4,104.9L30.8,105.0Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M311.0,162.3L312.8,161.9L312.5,163.2L313.9,169.5L312.2,172.1L310.0,171.7L310.4,166.6L308.5,165.5L307.9,167.3L307.1,164.6L308.6,162.0L311.0,162.3Z M320.0,156.6L320.9,156.4L320.6,160.2L317.8,161.1L316.5,164.1L315.0,161.8L318.7,156.7L320.0,156.6Z M329.4,122.0L334.0,127.1L334.2,133.1L333.8,134.3L336.0,142.6L336.7,143.2L335.7,147.8L335.2,145.0L334.6,147.2L331.5,148.7L331.0,151.0L326.5,150.8L325.0,158.1L324.2,158.1L322.8,154.1L321.6,154.5L313.6,158.9L313.8,160.4L309.8,161.1L310.4,159.2L314.9,152.9L318.0,151.9L320.6,150.1L323.2,149.4L322.8,148.2L324.3,143.2L325.6,143.8L326.8,142.0L329.2,136.9L329.4,135.7L328.5,129.1L328.0,129.2L327.4,123.5L329.4,122.0Z M331.2,108.7L333.9,108.1L334.4,106.0L334.9,108.4L337.1,109.9L333.5,113.8L333.5,117.0L329.0,116.8L325.4,118.8L328.3,120.7L327.2,121.0L326.5,123.1L323.9,119.1L324.7,116.6L324.0,115.8L326.5,114.3L323.6,106.6L331.2,108.7Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M140.6,155.1L140.1,155.2L138.7,155.6L138.2,155.7L138.2,155.4L138.1,154.3L138.1,153.8L138.0,153.4L138.3,153.7L139.4,154.5L139.9,154.7L140.7,155.0L140.9,155.0L140.6,155.1Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M180.9,109.4L180.7,109.3L178.3,111.2L175.8,111.9L175.0,115.6L172.4,116.7L167.8,115.0L164.8,119.6L164.6,121.8L162.8,120.3L158.1,120.4L157.9,127.6L155.4,131.3L155.3,131.3L155.0,130.8L152.8,128.2L147.6,125.7L142.1,124.1L138.3,122.3L135.8,123.2L134.3,121.8L131.9,120.9L130.3,122.1L130.3,122.4L130.0,122.4L124.0,123.5L121.8,124.9L117.8,121.7L118.0,117.9L117.2,117.5L119.1,114.0L117.2,109.8L116.0,109.8L113.1,108.0L110.1,106.9L109.3,102.9L106.0,94.6L99.3,92.9L91.7,104.9L91.3,105.7L91.2,105.6L90.0,105.1L89.4,99.5L84.3,98.4L84.5,98.0L86.8,95.0L85.0,91.6L85.7,85.9L87.6,86.0L88.8,87.5L88.8,85.1L90.5,84.5L94.1,87.4L93.8,85.9L96.1,84.4L97.5,81.5L94.6,78.4L88.7,77.4L88.6,77.6L90.2,71.3L88.6,69.4L89.7,65.9L96.3,61.6L96.8,65.1L98.7,63.0L105.6,62.5L108.1,64.7L108.1,65.7L111.7,73.4L115.5,73.6L115.9,74.7L118.1,75.4L118.8,77.8L123.7,79.9L124.3,77.3L127.7,72.2L129.8,72.9L128.7,71.1L130.4,68.8L135.8,71.0L144.6,72.8L146.2,72.3L149.5,73.2L151.4,75.7L150.3,78.4L154.6,81.4L154.0,83.2L155.9,83.9L161.4,84.0L163.2,87.3L166.1,98.1L167.0,97.0L168.3,99.3L170.7,100.3L172.2,100.0L176.2,106.1L178.4,107.2L179.9,106.4L180.9,109.2L180.9,109.4Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M155.3,131.6L145.8,133.4L144.5,133.1L142.3,135.0L138.4,133.1L133.9,135.8L133.6,135.8L133.5,135.7L129.4,135.2L127.9,133.0L121.8,130.7L122.5,129.0L127.3,130.0L127.4,129.9L127.5,129.9L129.5,131.0L134.1,130.0L129.6,126.9L129.5,123.4L130.4,122.3L130.3,122.4L130.3,122.1L131.9,120.9L134.3,121.8L135.8,123.2L138.3,122.3L142.1,124.1L147.6,125.7L152.8,128.2L155.0,130.8L155.3,131.3L155.3,131.6Z M127.5,131.5L127.1,130.5L127.2,131.0L127.5,131.5Z M126.1,131.2L125.5,130.8L125.6,131.0L126.1,131.2Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M224.0,264.5L221.6,264.6L221.6,262.5L219.6,263.0L218.8,259.9L218.8,260.0L216.4,252.9L218.8,250.7L221.3,249.6L227.6,250.0L227.7,249.9L227.7,250.0L231.1,251.5L233.9,249.9L236.6,248.5L236.8,248.4L236.8,248.6L237.2,252.9L236.5,257.8L232.3,260.1L230.8,260.1L230.0,262.8L228.5,263.0L224.7,265.0L224.0,264.5Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M298.5,146.9L302.8,153.1L303.3,158.0L296.4,162.6L294.5,160.1L295.1,157.7L292.9,153.4L293.9,151.8L293.0,150.1L293.0,150.0L293.7,147.9L297.3,145.4L298.5,146.9Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M33.4,31.4L31.9,29.9L31.0,29.9L31.0,29.8L31.2,29.7L32.0,29.0L32.4,28.2L32.9,27.0L32.9,26.8L33.0,26.8L33.5,26.3L33.7,26.3L34.0,26.6L34.2,26.9L34.4,27.1L35.8,26.6L35.8,28.0L33.5,31.3L33.4,31.4L33.4,31.4Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M45.6,137.7L43.6,136.1L43.6,135.6L42.3,132.2L41.8,131.7L42.6,131.5L45.3,129.8L46.5,130.2L47.4,131.5L47.3,131.7L47.0,133.3L46.6,132.8L45.7,137.2L45.6,137.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M216.5,219.1L219.3,221.5L219.0,223.4L224.4,224.9L224.5,226.4L226.6,228.0L222.8,230.9L227.3,233.2L227.5,234.5L232.8,240.1L232.9,241.0L236.2,243.2L235.3,244.2L236.7,247.9L236.8,248.4L236.6,248.5L233.9,249.9L231.1,251.5L227.7,250.0L227.7,249.9L227.9,249.8L229.0,247.2L228.5,243.6L226.0,239.4L226.2,238.5L222.9,234.6L220.7,234.2L219.6,235.3L219.6,235.2L219.6,235.3L219.6,235.3L217.2,235.8L215.6,235.1L212.0,237.6L212.8,231.9L211.7,229.4L209.6,229.1L208.6,226.7L208.6,226.5L208.6,226.3L210.3,224.3L210.2,224.2L212.3,222.1L212.5,221.8L212.7,222.0L215.0,223.2L214.9,218.2L216.1,218.6L216.3,218.7L216.5,219.1Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M27.8,92.9L26.3,93.0L26.1,92.9L25.5,92.2L25.8,92.1L29.0,90.3L29.7,89.7L31.2,89.5L31.4,89.2L32.1,89.8L31.5,92.0L28.1,92.9L27.9,92.9L27.8,92.9Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M-23.8,102.0L-25.1,103.7L-27.7,107.2L-28.9,109.0L-32.2,107.7L-32.5,105.4L-34.7,75.2L-34.7,69.0L-39.5,65.8L-38.8,62.1L-39.2,57.4L-39.5,55.3L-37.6,47.7L-33.8,39.0L-31.5,38.9L-22.4,30.7L-19.8,27.5L-19.6,27.7L-19.3,27.9L-17.1,28.5L-14.8,26.3L-10.4,28.3L-7.7,26.3L-7.8,26.9L-8.0,31.2L-7.1,34.5L-7.7,40.9L-9.6,43.4L-9.9,45.8L-9.1,50.0L-9.4,57.8L-7.9,58.9L-3.5,55.6L-1.9,54.9L3.1,58.8L3.0,62.9L4.1,69.9L3.7,70.7L3.6,70.9L2.2,71.1L-1.6,74.5L-4.0,78.2L-11.0,86.2L-23.2,101.3L-23.8,102.0Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M127.7,256.0L131.3,260.3L133.9,267.3L132.9,270.1L127.0,270.8L125.7,267.3L125.9,262.5L127.0,260.3L127.7,256.0Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M80.9,0.5L80.9,0.4L81.4,0.4L81.8,0.4L81.2,0.5L80.9,0.5Z M86.5,10.5L86.4,10.6L84.9,11.6L82.8,10.8L80.6,11.5L77.6,8.5L77.6,8.3L77.6,8.2L78.3,7.8L78.8,6.0L78.6,6.0L78.8,5.8L79.6,5.3L80.5,5.1L81.0,1.1L81.1,1.1L81.3,0.9L83.0,-0.3L83.8,-0.8L84.0,-0.9L86.0,0.5L87.4,7.8L86.5,10.4L86.5,10.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M94.1,8.0L93.1,9.4L92.3,9.6L89.8,12.2L89.6,12.3L89.6,12.2L87.6,11.5L87.5,11.0L86.6,10.5L86.5,10.5L86.5,10.4L87.4,7.8L86.0,0.5L84.0,-0.9L84.7,-1.3L90.3,-2.5L89.2,2.3L92.8,1.8L93.1,1.7L94.4,2.7L94.1,4.3L94.0,7.7L94.1,7.8L94.1,8.0Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M258.3,217.9L258.3,217.9L258.1,218.0L258.1,218.0L258.1,218.0L258.1,218.0L258.1,217.9L258.2,217.8L258.3,217.9Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M52.1,38.6L56.5,35.2L57.0,34.5L59.9,28.3L59.8,28.1L60.0,28.0L61.7,30.3L61.6,34.2L58.6,39.1L52.2,38.9L52.0,38.9L52.1,38.6Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M34.1,34.0L33.1,36.4L32.7,36.6L31.8,37.2L31.7,37.2L31.6,37.0L29.1,35.3L28.0,33.8L27.9,33.5L27.9,33.4L29.7,30.4L31.0,29.8L31.0,29.8L31.0,29.9L31.9,29.9L33.4,31.4L33.4,31.4L33.4,31.6L33.6,31.8L34.4,33.1L34.4,33.2L34.1,34.0Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M202.6,195.4L204.5,197.9L204.6,201.8L199.8,209.7L200.0,212.1L202.2,211.3L204.5,211.6L204.2,212.9L205.7,215.5L205.8,219.4L208.2,220.0L208.1,220.9L210.8,222.0L212.6,221.7L212.5,221.8L212.3,222.1L210.2,224.2L210.3,224.3L208.6,226.3L208.6,226.5L208.2,226.2L204.4,227.4L204.0,228.4L201.0,228.2L198.0,233.0L201.1,238.4L202.6,241.7L202.0,245.2L200.5,245.9L201.8,249.2L203.5,250.9L204.2,255.6L205.6,259.3L202.2,263.3L201.8,265.2L201.6,265.2L200.9,263.3L201.9,256.2L201.1,252.5L199.0,247.1L198.9,244.9L196.9,238.5L194.7,240.2L192.3,241.2L187.0,242.1L187.3,239.8L185.3,241.1L187.2,235.7L182.3,224.2L179.9,222.5L179.7,222.2L180.9,220.5L181.1,217.9L181.1,217.7L181.3,217.6L183.1,217.1L185.0,210.3L187.0,210.8L189.8,206.6L189.4,205.9L191.8,200.7L198.4,197.2L200.0,195.1L200.1,194.9L201.6,194.6L202.0,194.7L202.4,195.3L202.6,195.4Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M35.6,22.2L34.7,24.3L34.7,24.7L34.3,26.8L34.2,26.9L34.0,26.6L33.7,26.3L33.5,26.3L33.0,26.8L32.9,26.8L32.9,26.8L32.8,25.9L32.8,25.6L29.8,26.7L30.0,26.1L30.8,24.6L31.0,23.6L31.1,23.3L31.1,23.2L31.2,22.9L31.3,22.7L31.5,22.6L31.5,22.7L32.9,21.7L33.3,22.0L35.6,22.1L35.6,22.2L35.6,22.2Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M255.8,109.4L255.2,117.4L256.0,116.6L259.9,115.5L266.3,119.7L263.5,119.8L259.9,121.1L259.8,122.0L255.8,126.2L252.7,126.9L250.4,129.6L247.6,129.2L245.3,132.9L245.8,133.3L242.1,138.2L239.4,139.6L231.6,140.5L227.4,142.7L225.0,142.3L216.9,139.8L210.4,139.1L203.9,137.8L201.5,137.9L198.4,131.4L196.2,129.7L192.5,127.6L190.8,127.4L187.0,124.9L188.3,122.7L188.1,119.1L187.2,116.2L182.2,111.8L182.2,109.6L182.2,109.4L182.2,109.4L183.4,108.5L187.4,108.0L188.7,106.8L194.3,105.3L196.3,105.8L199.9,108.8L207.6,109.9L208.8,109.4L208.4,105.5L211.5,101.6L215.1,103.3L219.5,107.4L222.8,109.8L226.9,108.5L233.8,110.7L235.6,112.7L240.0,112.9L244.5,111.7L249.2,108.1L253.2,108.9L255.8,108.6L255.9,108.8L255.8,109.4Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M215.9,280.9L219.7,284.5L220.8,287.8L221.0,293.8L222.1,294.6L224.0,299.0L220.2,298.4L215.2,295.7L209.4,289.1L208.1,282.3L207.3,280.2L207.1,279.7L211.0,280.9L210.6,282.4L215.2,280.7L215.9,280.9Z M275.1,276.3L278.7,277.2L278.5,278.8L280.1,278.1L285.3,280.1L281.4,282.0L282.8,283.9L278.2,285.4L271.8,285.5L271.0,286.2L270.4,290.0L267.8,295.2L266.1,296.8L263.2,298.0L260.1,297.1L258.2,297.2L250.5,300.2L246.5,297.7L249.3,297.2L252.2,297.6L254.9,292.6L260.3,290.9L265.0,285.7L266.5,287.2L268.6,285.7L272.5,278.7L275.1,276.3Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M145.9,178.7L147.3,178.1L149.4,178.6L153.5,184.3L155.3,184.5L155.5,185.8L159.0,189.1L165.2,192.1L167.7,192.4L168.0,192.5L167.5,196.1L163.6,197.4L162.5,197.2L155.6,192.4L151.2,191.1L142.5,183.9L141.5,182.6L145.8,178.4L145.9,178.7Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M61.4,167.1L62.3,171.4L66.0,174.8L67.2,179.9L68.3,181.2L61.0,186.8L59.2,186.2L56.9,191.0L52.6,190.5L50.9,192.3L48.3,191.3L44.3,193.2L43.2,192.2L39.3,191.3L38.5,191.2L38.5,188.3L38.3,188.0L38.5,180.6L38.6,180.1L39.1,180.2L49.4,182.1L53.1,177.5L54.2,172.9L54.2,172.3L54.5,171.8L57.0,168.2L59.5,165.3L61.5,165.9L61.4,167.1Z M62.3,163.3L62.0,163.1L61.9,162.9L62.3,161.4L62.8,161.0L63.4,161.8L62.4,163.1L62.3,163.3Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M138.1,153.8L138.1,154.3L138.2,155.4L138.2,155.7L138.1,155.9L133.5,156.8L129.6,154.3L126.8,159.8L128.9,163.8L126.0,168.5L123.1,171.3L114.4,176.9L112.7,177.6L109.9,176.2L104.8,179.1L107.2,186.9L107.5,189.1L102.8,189.6L99.6,187.7L97.0,188.6L96.8,188.8L94.5,186.2L93.4,182.8L93.2,179.4L87.0,178.2L77.6,173.9L77.7,173.8L79.8,170.6L83.5,170.3L84.4,170.8L85.5,168.5L85.3,165.1L83.6,161.7L82.8,156.2L82.6,155.2L83.5,156.2L91.5,161.9L98.5,163.1L100.4,159.7L103.1,158.8L104.3,159.6L108.9,159.7L110.8,159.3L113.6,155.4L115.7,155.1L116.9,153.0L119.2,153.2L119.3,151.5L121.4,150.4L122.4,148.7L122.3,146.6L125.7,144.6L132.7,146.0L133.1,145.9L133.3,145.9L136.5,148.9L136.6,152.3L137.9,153.3L138.0,153.4L138.1,153.8Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M310.8,260.5L311.7,263.2L312.6,263.4L313.9,268.2L312.9,270.2L310.8,268.3L309.5,271.0L310.9,273.5L309.8,275.2L305.8,273.9L304.0,270.4L303.9,268.6L301.3,269.8L298.1,268.9L296.3,272.5L295.5,271.5L299.4,266.9L299.9,265.7L302.4,265.1L304.0,266.2L306.5,262.7L309.0,262.1L308.3,259.6L310.8,260.5Z M299.6,263.6L296.5,261.7L298.1,259.9L298.3,256.8L300.4,257.6L299.5,261.6L299.6,263.6Z M300.4,262.0L300.3,260.0L302.0,254.9L302.5,257.9L300.4,262.0Z M276.7,269.4L276.7,268.4L283.9,260.3L282.7,262.7L279.2,267.4L276.7,269.4Z M296.1,254.3L298.5,255.5L297.5,257.2L294.5,257.1L294.4,254.2L296.1,254.3Z M306.3,248.8L308.8,253.7L303.4,250.9L303.7,249.4L306.3,248.8Z M288.4,248.3L290.3,248.2L291.8,249.3L292.0,251.0L290.5,252.8L287.0,248.8L288.4,248.3Z M287.6,228.3L291.9,228.0L293.7,233.1L290.5,240.0L292.8,245.5L296.7,244.2L301.8,247.7L298.5,248.1L295.5,245.5L295.8,248.2L292.3,245.9L287.8,246.4L288.9,244.0L287.3,243.0L285.4,243.4L283.9,237.9L286.0,238.0L285.3,232.5L286.2,228.8L287.6,228.3Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M434.3,281.9L433.2,283.2L429.3,280.5L429.8,279.3L433.7,280.9L434.3,281.9Z M418.1,279.7L419.7,281.7L418.6,284.7L414.4,289.0L410.5,291.2L405.5,291.2L405.5,290.0L415.1,285.7L418.1,279.7Z M388.1,290.1L394.9,291.6L395.1,293.8L403.5,294.4L403.7,295.1L400.3,297.5L403.6,300.4L405.3,300.6L408.1,303.4L409.3,302.6L410.1,304.2L413.0,303.8L412.6,305.3L415.0,306.7L410.6,307.2L403.5,308.4L401.0,306.0L397.1,303.6L391.0,303.9L387.2,306.9L386.6,309.7L383.7,313.2L382.7,313.0L377.4,314.5L376.6,306.0L375.4,289.8L388.1,290.1Z M422.3,279.7L420.9,277.8L412.9,275.7L413.1,274.9L418.0,275.4L422.1,277.1L422.3,279.7Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M78.6,6.0L78.8,6.0L78.3,7.8L77.6,8.2L77.6,8.3L76.4,9.2L73.1,11.8L71.1,11.4L69.0,13.5L68.6,13.9L68.4,14.1L64.9,17.2L64.5,16.7L59.0,17.8L58.8,17.2L58.7,17.1L58.7,17.0L59.2,15.1L58.1,11.5L57.1,11.3L57.5,8.1L57.4,7.8L57.5,7.7L58.7,6.3L59.7,1.8L58.4,1.8L60.6,-3.0L60.2,-4.0L60.3,-4.0L65.0,-6.4L67.6,-8.7L71.9,-10.4L77.5,-4.4L76.8,-0.6L76.9,-0.6L78.2,4.8L78.6,5.9L78.6,6.0Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M299.1,128.6L299.2,128.8L299.7,129.3L299.8,129.3L299.7,129.5L297.9,132.9L298.8,135.4L293.8,141.6L293.9,143.9L297.1,145.2L297.3,145.4L293.7,147.9L293.0,150.0L293.0,150.0L286.9,150.1L289.0,147.3L287.6,146.9L287.6,144.2L284.3,143.0L284.3,143.0L285.6,140.9L288.1,138.4L290.8,135.1L293.8,134.9L292.9,133.1L295.8,130.9L296.8,128.3L299.0,128.5L299.1,128.6Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M45.1,156.0L48.7,152.0L46.3,157.8L45.9,157.7L44.8,156.6L44.9,156.1L45.1,156.0Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M51.8,39.4L51.8,39.8L52.6,41.1L53.3,42.7L53.0,42.9L51.1,41.8L50.8,42.2L47.0,44.2L46.8,44.4L45.9,39.3L45.3,38.6L41.5,29.5L41.5,29.2L41.6,29.1L42.1,25.7L43.8,22.8L45.7,19.0L45.9,18.7L46.0,18.7L47.1,20.3L52.5,19.6L54.8,20.5L54.9,20.5L55.0,20.6L56.0,23.5L56.1,25.6L59.7,28.0L59.8,28.1L59.9,28.3L57.0,34.5L56.5,35.2L52.1,38.6L52.0,38.9L51.8,39.4Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M309.2,73.0L318.9,85.8L322.3,90.0L320.0,91.2L321.2,96.6L326.5,100.9L326.7,102.2L323.7,100.6L323.1,103.8L321.6,100.3L318.1,94.2L317.2,90.9L314.2,84.9L311.1,81.7L309.2,73.0Z M81.0,1.1L80.5,5.1L79.6,5.3L78.8,5.8L78.6,6.0L78.6,5.9L78.2,4.8L76.9,-0.6L77.3,-0.4L77.7,-0.4L79.3,0.1L80.7,0.4L80.9,0.4L80.9,0.5L80.5,0.5L79.5,0.4L80.4,1.4L81.0,1.1Z M311.2,-12.7L319.6,-16.2L322.8,-15.0L324.0,-16.2L321.4,-17.6L322.7,-19.7L325.5,-20.6L328.8,-18.6L327.9,-17.0L330.3,-16.3L332.4,-13.1L326.3,-10.9L325.6,-8.3L322.1,-7.8L324.8,-7.0L325.2,-5.7L311.0,-12.6L311.2,-12.7Z M172.6,2.2L173.2,3.3L168.5,6.5L167.3,11.5L164.8,9.8L163.6,7.7L165.1,7.6L164.2,4.2L171.4,1.2L172.6,2.2Z M265.9,0.5L269.7,-1.2L268.7,1.4L265.8,1.4L265.9,0.5Z M259.2,2.5L259.6,0.9L264.1,0.7L263.5,3.3L261.8,2.7L263.6,4.6L260.9,5.5L259.7,6.8L257.8,5.8L257.4,1.8L259.2,2.5Z M190.8,0.7L183.1,0.3L173.7,3.2L171.9,1.4L172.7,-0.1L186.1,-2.6L189.5,-1.4L193.0,-1.2L190.8,0.7Z M299.8,129.3L299.7,129.3L299.2,128.8L299.1,128.6L299.2,128.4L300.1,126.5L298.5,118.5L299.4,117.0L302.7,116.5L302.3,104.4L300.8,103.3L298.6,105.2L297.5,107.3L293.9,108.6L291.6,105.2L289.0,103.8L283.7,103.7L279.9,98.6L278.4,96.2L274.7,92.1L266.7,92.2L263.2,94.2L264.2,98.8L263.0,100.5L261.7,105.5L262.2,106.8L259.1,109.5L256.5,109.0L255.9,108.8L255.8,108.6L253.2,108.9L249.2,108.1L244.5,111.7L240.0,112.9L235.6,112.7L233.8,110.7L226.9,108.5L222.8,109.8L219.5,107.4L215.1,103.3L211.5,101.6L208.4,105.5L208.8,109.4L207.6,109.9L199.9,108.8L196.3,105.8L194.3,105.3L188.7,106.8L187.4,108.0L183.4,108.5L182.2,109.4L182.2,109.4L182.1,109.4L181.5,109.4L181.3,109.5L181.2,109.5L180.9,109.4L180.9,109.2L179.9,106.4L178.4,107.2L176.2,106.1L172.2,100.0L170.7,100.3L168.3,99.3L167.0,97.0L166.1,98.1L163.2,87.3L161.4,84.0L155.9,83.9L154.0,83.2L154.6,81.4L150.3,78.4L151.4,75.7L149.5,73.2L146.2,72.3L144.6,72.8L135.8,71.0L130.4,68.8L128.7,71.1L129.8,72.9L127.7,72.2L124.3,77.3L123.7,79.9L118.8,77.8L118.1,75.4L115.9,74.7L115.5,73.6L111.7,73.4L108.1,65.7L108.1,64.7L105.6,62.5L98.7,63.0L96.8,65.1L96.3,61.6L89.7,65.9L88.6,69.4L90.2,71.3L88.6,77.6L88.5,77.8L78.8,79.6L78.9,82.9L76.6,85.4L75.9,91.0L75.9,91.4L72.9,92.2L71.9,90.8L71.8,87.6L71.6,87.3L71.6,87.2L70.9,85.1L71.7,84.1L65.7,73.7L64.9,70.9L63.4,69.9L63.4,69.5L63.0,57.7L65.4,59.1L66.1,58.4L68.7,58.8L69.0,56.1L72.6,57.2L72.0,55.5L71.3,55.2L72.9,54.0L77.6,55.1L79.5,52.4L81.7,51.5L80.6,46.7L79.8,46.7L79.3,36.3L82.0,31.9L78.9,28.9L78.9,28.8L79.0,28.8L82.3,25.4L82.6,26.9L84.8,24.6L86.0,22.4L90.1,18.6L90.2,16.4L89.2,15.8L89.4,12.7L89.6,12.3L89.8,12.2L92.3,9.6L93.1,9.4L94.1,8.0L94.1,7.8L94.2,7.7L95.2,7.5L98.6,5.3L101.9,4.7L102.2,4.6L103.8,5.4L105.4,4.9L106.1,2.7L105.7,2.1L114.8,3.2L118.3,1.7L119.3,-0.9L121.9,-2.3L124.1,-4.3L128.1,-5.8L130.8,-8.5L136.3,-11.9L139.2,-12.7L139.4,-12.5L140.5,-12.7L144.4,-10.9L143.8,-5.9L142.5,1.5L142.3,3.9L139.8,6.2L134.6,5.2L133.3,0.6L133.9,-4.9L131.6,-1.7L131.1,0.5L128.8,1.4L126.9,3.3L126.1,9.1L126.6,9.4L128.8,5.2L131.6,10.5L132.3,9.8L136.6,8.2L139.9,10.3L139.3,11.8L146.9,6.1L147.5,4.4L149.2,7.3L148.3,9.4L145.0,8.9L144.5,12.5L145.7,13.1L148.1,11.7L156.5,13.1L158.9,14.0L155.7,15.0L161.3,17.6L163.9,17.7L162.6,19.6L166.1,19.3L167.1,16.8L168.4,16.7L170.6,19.0L173.0,24.1L173.5,26.9L175.3,25.2L177.1,17.5L180.2,15.9L185.1,12.1L187.8,14.7L184.3,18.4L184.0,21.1L177.5,32.1L174.3,34.6L172.5,34.1L171.2,32.5L172.0,34.9L173.1,35.4L178.1,34.9L180.9,32.8L182.1,29.5L185.3,29.4L184.2,34.1L186.2,32.8L186.8,30.3L185.1,28.3L182.8,27.7L184.1,23.9L185.5,22.7L185.7,19.1L190.7,15.3L190.3,17.5L189.2,18.4L188.4,21.1L191.3,23.2L189.7,20.2L193.6,18.3L198.1,22.8L195.9,24.8L196.8,25.5L195.6,27.6L197.2,27.0L198.4,22.2L197.3,19.9L197.1,17.3L197.8,15.0L206.0,14.2L204.8,12.8L210.4,10.4L219.2,9.1L220.3,10.0L221.6,8.2L222.2,5.7L224.2,4.1L227.8,6.7L227.1,8.1L231.6,7.4L234.5,12.3L229.3,18.8L227.6,20.2L228.9,20.8L231.0,19.6L230.9,18.3L235.2,18.2L235.5,19.0L238.8,17.9L241.1,17.8L241.4,19.1L247.0,18.9L248.1,15.7L252.9,16.0L254.4,20.3L257.6,23.2L259.8,23.9L259.7,19.1L262.4,20.3L267.3,18.2L268.0,16.2L266.1,13.8L268.2,11.5L272.0,11.8L274.5,9.4L277.4,8.6L277.5,10.0L280.1,10.7L280.7,9.7L284.7,9.1L286.0,6.8L288.1,5.2L291.0,4.8L293.2,6.9L296.4,6.5L296.8,4.0L300.5,-0.7L302.4,-0.1L305.7,-1.4L305.2,-2.4L302.5,-2.8L301.0,-4.2L304.3,-7.8L305.1,-9.4L311.0,-12.6L326.2,-5.2L327.5,-0.4L330.7,-0.0L335.8,1.8L333.1,4.1L333.8,5.7L333.7,11.1L335.3,18.0L336.5,20.3L334.2,20.1L332.4,21.4L332.2,26.6L331.2,25.6L328.7,29.4L329.1,30.9L335.6,38.5L337.1,39.9L339.8,41.0L338.5,42.1L339.6,45.6L342.3,47.2L341.3,49.2L341.0,52.8L343.0,55.4L342.4,59.2L343.3,60.3L343.8,67.1L332.7,57.1L330.3,54.6L327.4,49.8L326.6,44.4L327.1,42.7L326.8,38.6L326.3,37.3L323.7,24.4L321.9,21.6L320.2,22.9L322.2,25.5L321.9,26.6L322.7,31.3L322.2,32.4L319.9,30.7L318.8,28.7L317.3,29.7L315.1,33.0L316.0,37.2L316.3,42.0L317.0,44.6L314.3,48.5L311.5,47.0L309.4,47.4L309.4,49.8L308.0,50.1L304.7,53.2L303.6,52.8L299.7,55.3L298.4,57.6L297.8,60.6L298.0,63.2L296.2,67.8L295.6,72.5L293.7,76.9L293.4,78.8L296.9,78.1L299.4,81.3L302.1,80.2L303.3,76.5L308.5,78.4L308.0,79.8L311.1,83.3L310.8,84.8L311.7,89.2L314.2,95.0L314.3,98.6L313.6,107.4L312.0,112.8L310.1,120.6L306.0,125.6L299.9,129.2L299.8,129.3Z M223.7,-1.9L225.7,0.9L222.2,2.0L223.7,-1.9Z M220.1,-5.5L221.2,-4.8L221.2,-1.5L220.4,-0.4L216.7,-3.9L220.1,-5.5Z M219.8,-8.9L219.8,-5.8L217.3,-5.2L215.9,-6.4L219.8,-8.9Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M41.8,131.7L42.3,132.2L43.6,135.6L43.6,136.1L45.6,137.7L45.6,138.1L45.0,141.9L46.4,147.0L45.5,150.0L44.8,155.7L44.9,156.1L44.8,156.6L45.9,157.7L46.0,158.0L45.9,158.4L45.5,158.8L46.1,159.4L46.2,159.5L47.2,166.9L53.9,172.5L54.2,172.3L54.2,172.9L53.1,177.5L49.4,182.1L39.1,180.2L38.6,180.1L37.8,179.8L29.5,175.9L25.7,175.5L22.4,177.3L20.2,177.4L18.7,174.9L10.8,167.3L9.8,167.4L7.0,170.2L7.1,169.8L7.2,163.5L6.8,162.0L7.5,154.0L6.4,148.6L9.0,138.2L9.3,126.7L10.4,123.8L12.5,109.3L11.8,107.8L13.4,106.0L15.4,104.3L17.4,107.5L20.5,106.9L22.4,108.2L24.8,107.7L25.1,101.9L30.8,105.0L31.4,104.9L31.8,105.5L33.6,108.3L35.7,117.5L41.3,131.5L41.8,131.7Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M1.8,135.7L0.1,141.0L-2.9,148.0L-1.5,153.5L-1.5,153.9L-6.4,154.3L-7.7,153.4L-10.8,157.3L-12.9,159.0L-13.8,161.4L-14.3,162.6L-15.0,163.4L-18.2,167.3L-19.9,166.7L-21.9,168.0L-24.7,171.3L-27.1,170.9L-29.5,174.5L-29.5,174.5L-29.5,174.4L-28.7,171.1L-29.6,166.7L-27.8,162.7L-30.2,159.1L-30.9,162.8L-36.5,165.2L-38.2,162.4L-43.3,159.6L-45.5,157.8L-45.7,156.1L-48.7,153.0L-48.9,146.8L-50.3,145.6L-53.7,147.5L-54.9,148.8L-56.2,148.4L-57.4,146.0L-55.1,142.4L-54.6,135.7L-53.6,134.6L-52.5,125.1L-50.6,124.6L-48.0,122.5L-47.4,120.5L-41.9,120.3L-41.5,121.2L-33.3,109.3L-32.2,107.7L-28.9,109.0L-27.7,107.2L-25.1,103.7L-23.8,102.0L-23.1,103.2L-15.3,114.2L-8.5,122.8L-1.7,130.6L2.3,134.9L1.8,135.7Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M10.4,214.0L9.3,213.3L7.0,211.6L-0.9,201.3L-2.2,191.4L-1.5,191.1L-1.4,190.9L-0.7,190.5L-0.1,190.1L0.3,189.8L0.7,190.8L2.2,196.6L4.0,197.8L7.3,198.2L11.0,200.5L12.1,200.4L17.0,202.6L17.6,203.4L17.7,203.4L15.5,210.0L15.4,210.4L11.2,213.4L10.4,214.0Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M-14.2,216.0L-10.9,216.9L-9.4,216.3L-3.3,219.3L1.3,217.3L9.3,214.4L10.4,214.0L11.2,213.4L15.4,210.4L15.5,210.0L17.7,203.4L18.1,203.6L24.7,204.5L22.8,211.4L20.5,215.3L15.9,219.1L9.7,225.2L1.4,230.1L-2.2,231.5L-9.1,231.9L-12.7,233.0L-21.2,237.6L-22.3,233.2L-20.1,224.2L-15.5,216.9L-14.8,216.4L-14.2,216.0Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M45.9,18.7L45.7,19.0L43.8,22.8L42.1,25.7L41.6,29.1L41.5,29.2L41.4,29.1L36.8,32.6L36.4,32.1L34.6,33.3L34.4,33.2L34.4,33.1L33.6,31.8L33.4,31.6L33.4,31.4L33.5,31.3L35.8,28.0L35.8,26.6L34.4,27.1L34.2,26.9L34.3,26.8L34.7,24.7L34.7,24.3L35.6,22.2L35.6,22.2L35.9,22.3L37.8,22.0L39.0,19.8L40.4,18.7L40.3,18.6L40.4,18.5L42.0,18.3L42.3,17.3L44.0,15.9L44.1,15.9L44.2,15.9L44.5,16.3L45.2,16.9L45.9,18.6L45.9,18.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M58.6,17.2L57.9,17.3L57.4,17.4L56.5,17.4L55.9,17.8L55.9,17.7L55.2,14.0L52.0,11.2L50.9,11.3L50.6,7.1L50.6,7.1L50.7,6.9L51.9,5.6L52.1,5.5L52.7,5.4L52.7,5.4L53.0,5.3L54.5,6.7L55.2,7.1L57.4,7.8L57.4,7.8L57.5,8.1L57.1,11.3L58.1,11.5L59.2,15.1L58.7,17.0L58.7,17.1L58.6,17.2Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M44.5,8.5L42.8,7.3L39.7,7.9L38.9,3.5L39.0,3.6L39.3,3.7L40.7,2.6L41.9,1.4L42.6,1.8L42.9,1.8L42.9,1.9L44.2,5.3L44.8,6.5L45.5,6.9L45.6,7.0L45.7,7.5L45.2,7.9L44.6,8.7L44.5,8.8L44.5,8.5Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M50.9,95.2L47.4,95.2L43.8,98.9L34.7,100.0L33.7,99.8L32.9,99.7L26.9,98.8L26.3,97.9L26.1,95.3L25.9,95.0L26.1,94.8L27.0,94.0L27.2,93.9L27.7,93.0L27.9,92.9L28.1,92.9L31.5,92.0L32.1,89.8L31.4,89.2L31.8,88.3L33.4,86.5L33.5,85.6L34.5,84.9L34.7,84.8L35.0,85.7L38.5,83.7L39.7,86.0L41.9,86.9L43.6,90.2L46.7,91.5L51.1,94.7L50.9,95.2L50.9,95.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M208.6,226.5L208.6,226.7L209.6,229.1L211.7,229.4L212.8,231.9L212.0,237.6L215.6,235.1L217.2,235.8L219.6,235.3L220.7,234.2L222.9,234.6L226.2,238.5L226.0,239.4L228.5,243.6L229.0,247.2L227.9,249.8L227.7,249.9L227.6,250.0L221.3,249.6L218.8,250.7L216.4,252.9L218.8,260.0L218.7,260.0L214.0,256.1L211.1,253.2L208.2,252.9L207.2,253.8L207.2,257.2L205.0,262.7L203.6,264.8L204.2,269.0L206.5,269.5L206.7,271.2L208.7,277.0L210.8,278.3L212.4,278.2L214.0,279.8L215.2,280.7L210.6,282.4L211.0,280.9L207.1,279.7L206.1,278.5L199.7,271.8L201.2,266.5L201.8,265.2L202.2,263.3L205.6,259.3L204.2,255.6L203.5,250.9L201.8,249.2L200.5,245.9L202.0,245.2L202.6,241.7L201.1,238.4L198.0,233.0L201.0,228.2L204.0,228.4L204.4,227.4L208.2,226.2L208.6,226.5Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M126.1,131.2L125.6,131.0L125.5,130.8L126.1,131.2Z M127.4,129.9L127.3,130.0L122.5,129.0L121.8,130.7L127.9,133.0L129.4,135.2L133.5,135.7L133.6,135.8L133.6,136.0L133.0,139.1L135.7,141.0L134.4,145.5L134.3,145.5L134.3,145.4L130.6,143.1L124.2,143.9L125.5,139.8L124.1,136.5L121.1,139.1L115.6,138.5L113.9,137.8L113.9,137.6L114.2,137.4L117.0,132.4L116.1,129.4L122.7,128.1L123.1,126.7L127.1,126.4L127.2,129.9L127.4,129.9Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M110.8,135.4L110.6,135.3L109.1,133.6L108.0,134.5L105.5,134.1L103.6,136.4L99.0,136.3L98.1,137.7L95.5,137.5L93.7,134.5L93.5,134.4L93.5,134.3L94.9,130.5L92.9,129.3L91.7,124.9L89.4,122.4L87.9,119.4L85.3,117.7L77.8,116.4L77.9,116.1L81.0,111.0L81.1,105.8L83.5,102.5L84.9,104.7L87.8,104.3L87.3,102.4L88.0,99.6L85.8,98.6L84.0,99.5L84.3,98.4L89.4,99.5L90.0,105.1L91.2,105.6L91.3,105.7L91.9,106.2L93.6,107.6L94.7,105.4L96.3,105.0L99.3,106.0L99.2,105.0L102.1,109.5L101.3,111.7L105.2,115.4L104.6,120.4L110.9,135.0L110.8,135.4Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M-7.7,26.3L-10.4,28.3L-14.8,26.3L-17.1,28.5L-19.3,27.9L-19.6,27.7L-18.8,26.8L-8.0,12.0L-5.0,12.2L-3.0,11.6L-0.4,9.7L4.0,8.1L4.3,8.7L5.8,11.3L4.7,13.6L5.2,15.9L2.8,15.5L1.7,16.1L-0.7,19.9L-4.5,19.3L-6.8,21.8L-7.7,25.8L-7.7,26.3Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M60.9,79.0L61.3,79.9L63.6,84.1L63.5,84.2L63.4,84.3L61.7,88.7L62.4,89.4L62.6,91.2L62.6,91.4L62.6,91.5L62.5,91.7L62.5,91.6L60.3,91.0L56.2,100.0L56.1,100.0L56.1,99.9L54.3,97.9L52.3,95.1L51.1,95.3L50.9,95.2L51.1,94.7L46.7,91.5L43.6,90.2L41.9,86.9L39.7,86.0L38.5,83.7L35.0,85.7L34.7,84.8L35.1,84.7L37.8,82.0L36.3,81.8L33.7,78.9L31.4,78.8L29.4,77.1L29.1,71.2L27.8,69.3L27.0,70.1L24.2,67.9L25.0,65.6L22.6,61.7L24.7,62.9L24.2,60.6L25.0,58.3L26.3,57.4L25.8,55.1L26.9,53.6L30.8,51.9L29.5,50.4L31.3,49.0L33.3,49.3L34.1,51.3L36.5,54.8L38.8,55.8L38.8,52.9L41.4,57.1L46.2,58.9L51.1,64.1L51.9,69.6L55.9,76.0L56.2,77.2L60.5,79.1L60.9,79.0Z M39.8,48.2L37.7,51.2L36.2,49.5L34.2,48.8L33.4,46.8L33.5,46.6L34.8,46.7L35.6,45.9L37.2,44.9L37.1,44.6L37.2,44.5L39.4,46.7L40.2,48.0L39.8,48.2Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M285.3,212.8L282.7,213.2L281.7,211.3L283.0,205.8L285.5,202.3L287.2,204.9L285.3,212.8Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M71.2,55.2L64.8,51.2L62.2,52.9L61.7,54.1L63.3,56.2L62.3,57.6L61.2,55.7L59.5,55.7L56.1,53.7L57.5,48.4L61.0,47.7L60.0,43.2L62.4,41.8L60.7,43.6L59.0,41.6L53.6,42.6L53.3,42.7L52.6,41.1L51.8,39.8L51.8,39.4L52.0,38.9L52.2,38.9L58.6,39.1L61.6,34.2L61.7,30.3L60.0,28.0L59.8,28.1L59.7,28.0L56.1,25.6L56.0,23.5L55.0,20.6L54.9,20.5L55.0,20.4L55.6,19.1L55.6,18.6L56.1,18.0L55.9,17.8L56.5,17.4L57.4,17.4L57.9,17.3L58.6,17.2L58.7,17.1L58.8,17.2L59.0,17.8L64.5,16.7L64.9,17.2L68.4,14.1L68.6,13.9L68.7,13.9L72.7,20.6L74.9,27.3L78.7,28.5L78.9,28.8L78.9,28.9L82.0,31.9L79.3,36.3L79.8,46.7L80.6,46.7L81.7,51.5L79.5,52.4L77.6,55.1L72.9,54.0L71.3,55.2L71.2,55.2Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M510.9,42.7L507.1,39.2L508.0,38.1L510.0,38.5L510.9,42.7Z M294.2,-159.7L303.0,-157.9L309.8,-156.2L340.3,-146.1L346.2,-143.7L359.6,-137.9L374.4,-130.5L392.6,-120.1L396.6,-117.6L408.0,-108.3L406.3,-106.6L395.7,-105.9L383.7,-106.3L381.4,-106.1L375.6,-103.4L372.6,-108.1L374.7,-109.6L369.4,-107.5L364.1,-113.7L355.7,-122.2L348.6,-128.6L338.7,-136.3L330.4,-141.8L319.2,-148.4L310.0,-153.1L299.0,-157.9L294.6,-158.4L294.2,-159.7Z M356.5,-80.1L359.3,-83.8L360.9,-84.0L358.6,-80.6L356.5,-80.1Z M362.8,-41.2L364.8,-41.3L366.9,-37.5L363.9,-38.3L362.8,-41.2Z M351.0,-75.2L351.4,-76.9L352.9,-77.1L353.6,-75.6L352.9,-73.7L351.0,-75.2Z M336.3,-15.2L338.6,-19.0L339.4,-17.3L337.5,-14.6L336.3,-15.2Z M307.8,-43.6L306.9,-46.9L308.7,-48.3L307.9,-50.9L308.5,-54.3L307.9,-57.6L307.9,-61.9L311.5,-62.4L340.8,-64.8L346.9,-64.9L345.3,-68.4L349.9,-71.6L348.1,-73.3L344.9,-74.8L348.3,-79.6L351.3,-82.3L353.4,-85.1L353.3,-87.2L358.2,-87.4L359.2,-86.8L357.5,-83.1L354.7,-84.3L352.9,-81.4L353.1,-80.0L351.1,-80.1L348.6,-78.4L348.0,-76.2L350.0,-76.5L350.6,-74.9L348.1,-74.2L349.5,-72.9L351.0,-74.4L349.2,-67.2L347.3,-68.2L349.0,-66.1L348.5,-64.4L349.6,-60.3L347.9,-54.9L346.6,-55.3L348.6,-51.6L351.0,-51.7L356.3,-46.0L354.3,-44.6L350.1,-46.2L348.6,-47.9L348.8,-50.2L347.5,-47.8L349.5,-45.5L353.6,-43.3L356.0,-40.7L359.0,-40.9L361.7,-38.7L364.9,-34.2L366.7,-32.8L369.5,-28.3L370.1,-28.6L372.3,-25.2L371.5,-25.0L372.1,-21.3L373.7,-19.6L373.7,-16.8L372.0,-19.4L370.8,-23.7L369.4,-24.6L367.5,-28.1L365.5,-29.8L358.5,-34.4L359.0,-31.2L360.9,-29.9L359.2,-29.3L358.8,-26.6L359.7,-24.7L357.7,-25.6L353.1,-25.8L354.1,-24.3L351.6,-21.0L349.7,-22.1L348.7,-21.2L344.8,-22.0L341.8,-24.6L339.4,-30.8L338.0,-32.3L333.4,-32.9L335.2,-29.2L334.8,-26.1L329.1,-23.2L326.1,-29.2L327.6,-29.7L328.5,-32.6L327.5,-33.5L324.4,-33.8L323.9,-31.3L319.7,-29.7L316.0,-29.5L315.1,-33.2L309.8,-38.6L308.3,-39.1L306.2,-42.5L307.8,-43.6Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M127.5,131.5L127.2,131.0L127.1,130.5L127.5,131.5Z M130.3,122.4L130.4,122.3L129.5,123.4L129.6,126.9L134.1,130.0L129.5,131.0L127.5,129.9L127.4,129.9L127.2,129.9L127.1,126.4L123.1,126.7L122.7,128.1L116.1,129.4L117.0,132.4L114.2,137.4L113.9,137.6L114.0,137.5L113.2,136.9L112.3,136.1L111.7,135.7L110.8,135.4L110.9,135.0L104.6,120.4L105.2,115.4L101.3,111.7L102.1,109.5L99.2,105.0L99.3,106.0L96.3,105.0L94.7,105.4L93.6,107.6L91.9,106.2L91.3,105.7L91.7,104.9L99.3,92.9L106.0,94.6L109.3,102.9L110.1,106.9L113.1,108.0L116.0,109.8L117.2,109.8L119.1,114.0L117.2,117.5L118.0,117.9L117.8,121.7L121.8,124.9L124.0,123.5L130.0,122.4L130.3,122.4Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M237.7,222.0L233.1,224.3L233.4,225.1L229.2,232.1L233.6,238.2L237.7,241.8L238.6,242.0L241.8,245.6L243.8,251.4L244.4,254.8L242.9,261.1L233.4,267.0L230.3,266.5L231.7,268.8L226.3,271.1L226.6,267.3L225.1,265.3L224.7,265.0L228.5,263.0L230.0,262.8L230.8,260.1L232.3,260.1L236.5,257.8L237.2,252.9L236.8,248.6L236.8,248.4L236.7,247.9L235.3,244.2L236.2,243.2L232.9,241.0L232.8,240.1L227.5,234.5L227.3,233.2L222.8,230.9L226.6,228.0L224.5,226.4L224.4,224.9L219.0,223.4L219.3,221.5L216.5,219.1L216.3,218.7L216.4,218.6L221.8,217.3L222.8,218.2L226.2,216.0L233.4,217.2L233.2,220.2L237.9,222.0L237.7,222.0Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M24.2,96.1L23.4,96.8L22.9,97.6L22.2,98.1L21.9,98.3L21.8,98.2L21.6,96.7L24.4,95.3L24.5,95.5L24.2,96.1Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/><path d="M36.6,190.9L35.1,191.4L34.3,193.3L22.6,191.4L20.8,192.1L14.8,190.4L11.3,188.6L4.3,187.3L3.4,185.9L3.0,183.0L4.9,175.9L4.6,174.1L6.5,171.5L7.0,170.2L9.8,167.4L10.8,167.3L18.7,174.9L20.2,177.4L22.4,177.3L25.7,175.5L29.5,175.9L37.8,179.8L38.6,180.1L38.5,180.6L38.3,188.0L38.5,188.3L38.5,191.2L36.6,190.9Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M249.0,227.3L247.4,232.5L244.1,234.5L241.0,233.4L242.6,228.6L245.3,227.7L249.0,227.3Z M299.1,128.6L299.0,128.5L296.8,128.3L295.8,130.9L292.9,133.1L293.8,134.9L290.8,135.1L288.1,138.4L285.6,140.9L284.3,143.0L284.2,143.0L280.7,145.2L277.7,148.5L275.7,147.3L277.6,143.0L274.3,141.5L272.7,144.5L269.8,146.9L269.6,148.3L265.4,150.1L265.1,151.2L266.6,153.7L269.6,153.8L270.0,156.6L272.6,156.8L274.0,154.7L276.2,153.9L281.4,154.2L281.2,156.1L276.8,158.4L276.1,160.2L274.8,160.2L272.2,166.2L275.0,167.3L278.8,172.4L279.0,173.8L282.8,176.5L278.9,176.5L282.5,178.5L283.5,180.0L282.4,182.9L284.8,183.9L284.7,186.9L283.4,186.7L284.2,190.4L281.8,192.2L279.5,198.0L278.1,197.4L277.4,200.8L278.2,200.5L278.8,203.0L276.6,204.3L275.9,206.4L273.1,207.4L273.9,208.1L271.4,210.6L264.9,215.3L261.1,216.2L260.9,216.4L260.3,216.4L260.2,216.4L259.9,216.6L259.6,216.6L257.7,215.2L257.3,215.3L258.3,217.9L258.2,217.8L258.1,217.9L258.1,218.0L258.1,218.0L258.1,218.0L256.6,218.1L254.9,220.0L252.5,219.9L249.2,221.4L246.2,224.1L247.5,225.4L246.1,226.5L243.9,221.1L240.8,221.4L239.7,220.4L238.2,221.9L237.9,222.0L233.2,220.2L233.4,217.2L226.2,216.0L222.8,218.2L221.8,217.3L216.4,218.6L216.3,218.7L216.1,218.6L214.9,218.2L215.0,223.2L212.7,222.0L212.5,221.8L212.6,221.7L210.8,222.0L208.1,220.9L208.2,220.0L205.8,219.4L205.7,215.5L204.2,212.9L204.5,211.6L202.2,211.3L200.0,212.1L199.8,209.7L204.6,201.8L204.5,197.9L202.6,195.4L202.4,195.3L202.5,195.3L204.5,194.8L205.6,193.1L206.3,188.2L206.2,185.6L204.8,180.6L202.5,178.2L201.3,178.3L198.1,181.0L194.6,180.5L192.1,176.8L188.1,176.7L184.4,175.5L182.0,172.9L178.2,171.6L177.0,169.8L177.8,166.2L177.0,164.0L177.8,161.3L174.6,159.3L167.3,159.1L166.5,160.2L158.6,160.3L155.4,158.2L152.1,159.2L148.4,157.4L145.9,160.9L142.9,161.1L142.7,161.2L143.0,161.0L141.6,158.9L141.3,156.1L141.0,155.0L141.0,155.0L140.9,155.0L140.7,155.0L139.9,154.7L139.4,154.5L138.3,153.7L138.0,153.4L137.9,153.3L136.6,152.3L136.5,148.9L133.3,145.9L133.1,145.9L133.0,145.9L132.7,145.2L133.4,145.1L134.2,145.5L134.3,145.5L134.4,145.5L135.7,141.0L133.0,139.1L133.6,136.0L133.6,135.8L133.9,135.8L138.4,133.1L142.3,135.0L144.5,133.1L145.8,133.4L155.3,131.6L155.3,131.3L155.4,131.3L157.9,127.6L158.1,120.4L162.8,120.3L164.6,121.8L164.8,119.6L167.8,115.0L172.4,116.7L175.0,115.6L175.8,111.9L178.3,111.2L180.7,109.3L180.9,109.4L181.2,109.5L181.3,109.5L181.5,109.4L182.1,109.4L182.2,109.4L182.2,109.6L182.2,111.8L187.2,116.2L188.1,119.1L188.3,122.7L187.0,124.9L190.8,127.4L192.5,127.6L196.2,129.7L198.4,131.4L201.5,137.9L203.9,137.8L210.4,139.1L216.9,139.8L225.0,142.3L227.4,142.7L231.6,140.5L239.4,139.6L242.1,138.2L245.8,133.3L245.3,132.9L247.6,129.2L250.4,129.6L252.7,126.9L255.8,126.2L259.8,122.0L259.9,121.1L263.5,119.8L266.3,119.7L259.9,115.5L256.0,116.6L255.2,117.4L255.8,109.4L255.9,108.8L256.5,109.0L259.1,109.5L262.2,106.8L261.7,105.5L263.0,100.5L264.2,98.8L263.2,94.2L266.7,92.2L274.7,92.1L278.4,96.2L279.9,98.6L283.7,103.7L289.0,103.8L291.6,105.2L293.9,108.6L297.5,107.3L298.6,105.2L300.8,103.3L302.3,104.4L302.7,116.5L299.4,117.0L298.5,118.5L300.1,126.5L299.2,128.4L299.1,128.6Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 276" height="276px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 450 276" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="276.168144542" padding="0" w="450"><proj id="laea" lat0="39.5" lon0="104.5"/><bbox h="858.81" w="1404.46" x="297.77" y="525.07"/></view></views></metadata><g class="" id="countries"><path d="M202.3,195.2L196.6,193.8L197.4,192.3L195.2,190.1L191.3,190.1L187.3,192.1L186.2,192.0L180.1,194.8L180.2,194.1L175.5,192.0L173.1,192.3L170.4,195.1L170.0,194.5L162.8,190.6L161.0,191.1L160.2,189.7L155.4,185.2L155.5,184.6L149.6,179.4L149.5,178.7L146.0,179.1L140.7,171.8L139.7,171.6L139.7,167.2L141.2,168.2L142.5,164.7L141.9,163.4L142.6,161.2L142.9,161.1L145.9,160.9L148.4,157.4L152.1,159.2L155.4,158.2L158.6,160.3L166.5,160.2L167.3,159.1L174.6,159.3L177.8,161.3L177.0,164.0L177.8,166.2L177.0,169.8L178.2,171.6L182.0,172.9L184.4,175.5L188.1,176.7L192.1,176.8L194.6,180.5L198.1,181.0L201.3,178.3L202.5,178.2L204.8,180.6L206.2,185.6L206.3,188.2L205.6,193.1L204.5,194.8L202.5,195.3L202.3,195.2Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M134.2,145.5L133.4,145.1L132.7,145.2L133.0,145.9L133.1,145.9L132.7,146.0L125.7,144.6L122.3,146.6L122.4,148.7L121.4,150.4L119.3,151.5L119.2,153.2L116.9,153.0L115.7,155.1L113.6,155.4L110.8,159.3L108.9,159.7L104.3,159.6L103.1,158.8L100.4,159.7L98.5,163.1L91.5,161.9L83.5,156.2L82.6,155.2L83.8,154.6L87.5,151.3L85.4,148.4L88.7,138.9L91.7,137.0L93.4,134.7L93.5,134.4L93.7,134.5L95.5,137.5L98.1,137.7L99.0,136.3L103.6,136.4L105.5,134.1L108.0,134.5L109.1,133.6L110.6,135.3L110.8,135.4L111.7,135.7L112.3,136.1L113.2,136.9L114.0,137.5L113.9,137.6L113.9,137.8L115.6,138.5L121.1,139.1L124.1,136.5L125.5,139.8L124.2,143.9L130.6,143.1L134.3,145.4L134.3,145.5L134.2,145.5Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M32.9,27.0L32.4,28.2L32.0,29.0L31.2,29.7L31.0,29.8L31.0,29.8L29.7,30.4L27.9,33.4L27.9,33.5L27.6,33.6L25.0,34.6L24.1,34.1L22.9,33.9L23.2,33.6L25.0,30.4L26.1,29.5L29.9,27.0L29.8,26.7L32.8,25.6L32.8,25.9L32.9,26.8L32.9,26.8L32.9,27.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M62.4,163.7L61.5,165.8L61.5,165.9L59.5,165.3L57.0,168.2L54.5,171.8L54.2,172.3L53.9,172.5L47.2,166.9L46.2,159.5L46.4,159.4L47.2,161.8L54.4,164.9L55.6,164.1L62.3,161.4L62.3,161.4L61.9,162.9L62.0,163.1L62.3,163.3L62.4,163.7Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M64.2,97.4L63.9,97.1L63.4,97.0L63.3,96.8L63.5,96.5L64.3,93.9L63.5,93.5L62.8,91.6L62.6,91.4L62.6,91.2L62.4,89.4L61.7,88.7L63.4,84.3L63.5,84.2L63.7,84.3L65.4,85.4L67.0,86.6L67.1,86.6L67.1,86.8L65.1,92.3L65.3,94.6L64.4,97.1L64.2,97.4Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M52.7,5.4L52.1,5.5L51.9,5.6L50.7,6.9L50.6,7.1L50.4,7.0L48.5,7.0L47.7,6.7L46.1,7.1L45.6,7.0L45.5,6.9L44.8,6.5L44.2,5.3L42.9,1.9L42.9,1.8L42.9,1.2L43.7,-2.9L44.3,-3.2L42.7,-7.1L42.9,-7.1L43.2,-9.5L46.7,-4.3L46.2,-1.8L50.7,-2.8L51.5,-2.4L51.6,-2.4L51.7,-0.1L53.0,-0.0L52.8,5.3L52.7,5.4L52.7,5.4Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M63.3,96.8L63.0,96.3L62.3,95.1L62.5,91.8L62.5,91.7L62.6,91.5L62.6,91.4L62.8,91.6L63.5,93.5L64.3,93.9L63.5,96.5L63.3,96.8Z M76.0,91.8L76.1,99.9L74.1,98.8L70.6,102.0L69.2,102.2L68.4,103.6L67.4,100.5L69.4,99.2L69.4,97.7L64.4,97.6L64.2,97.4L64.4,97.1L65.3,94.6L65.1,92.3L67.1,86.8L67.1,86.6L67.9,86.6L69.8,90.2L70.6,89.8L71.4,87.4L71.6,87.3L71.8,87.6L71.9,90.8L72.9,92.2L75.9,91.4L76.0,91.8Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M181.1,217.7L181.1,217.9L180.9,220.5L179.7,222.2L179.6,222.2L178.9,220.6L178.4,216.4L177.1,214.0L174.5,212.5L173.9,215.7L168.3,215.8L168.3,215.5L167.3,209.1L167.9,207.9L166.0,204.7L167.7,203.1L166.8,200.2L170.1,199.1L171.7,200.6L174.0,204.1L179.4,205.0L180.9,206.3L179.4,208.8L177.6,208.9L176.9,212.8L180.5,211.0L181.0,217.5L181.1,217.7Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M45.9,45.0L42.3,45.3L41.1,45.3L40.4,47.7L40.2,48.0L39.4,46.7L37.2,44.5L37.1,44.6L37.1,44.2L35.8,45.0L34.4,43.5L31.8,37.5L31.7,37.2L31.8,37.2L32.7,36.6L33.1,36.4L34.1,34.0L34.4,33.2L34.6,33.3L36.4,32.1L36.8,32.6L41.4,29.1L41.5,29.2L41.5,29.5L45.3,38.6L45.9,39.3L46.8,44.4L45.9,45.0Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M40.3,18.6L40.4,18.7L39.0,19.8L37.8,22.0L35.9,22.3L35.6,22.2L35.6,22.1L33.3,22.0L32.9,21.7L31.5,22.7L31.5,22.6L31.5,22.3L32.0,20.4L37.4,10.6L38.9,11.0L40.3,18.4L40.3,18.6Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M89.4,12.7L89.2,15.8L90.2,16.4L90.1,18.6L86.0,22.4L84.8,24.6L82.6,26.9L82.3,25.4L79.0,28.8L78.9,28.8L78.7,28.5L74.9,27.3L72.7,20.6L68.7,13.9L68.6,13.9L69.0,13.5L71.1,11.4L73.1,11.8L76.4,9.2L77.6,8.3L77.6,8.5L80.6,11.5L82.8,10.8L84.9,11.6L86.4,10.6L86.5,10.5L86.6,10.5L87.5,11.0L87.6,11.5L89.6,12.2L89.6,12.3L89.4,12.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M170.7,194.5L175.1,191.9L178.8,193.4L180.1,194.6L180.1,194.8L181.4,196.8L179.8,198.5L175.2,197.5L172.6,197.8L170.4,195.1L170.7,194.5Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M26.8,79.8L27.8,79.5L28.6,80.9L28.9,82.7L28.8,83.1L28.1,82.5L28.0,81.5L26.8,79.6L26.8,79.8Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M28.8,83.2L25.2,81.2L25.1,80.6L26.7,79.4L26.8,79.6L28.0,81.5L28.1,82.5L28.8,83.1L28.8,83.2Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M57.4,7.8L57.4,7.8L55.2,7.1L54.5,6.7L53.0,5.3L52.7,5.4L52.8,5.3L53.0,-0.0L51.7,-0.1L51.6,-2.4L51.8,-2.6L53.3,-5.8L56.5,-8.6L57.4,-8.4L60.0,-5.4L60.2,-4.0L60.2,-4.0L60.6,-3.0L58.4,1.8L59.7,1.8L58.7,6.3L57.5,7.7L57.4,7.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M-1.4,190.9L-1.6,190.8L-4.8,188.3L-3.6,185.5L-1.3,184.3L-0.8,184.0L-0.6,184.0L-0.0,185.1L0.3,185.1L1.8,184.8L1.8,185.0L1.9,187.5L1.1,188.0L0.2,189.3L0.3,189.8L-0.1,190.1L-0.7,190.5L-1.4,190.9Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M-19.6,27.7L-19.8,27.5L-22.4,30.7L-31.5,38.9L-33.8,39.0L-37.6,47.7L-39.5,55.3L-41.0,54.4L-52.5,47.6L-58.4,45.9L-61.8,38.2L-60.6,36.3L-58.5,28.6L-56.8,23.8L-56.1,23.1L-53.4,14.8L-50.7,7.4L-46.2,-3.6L-38.1,-20.8L-33.0,-30.4L-27.6,-33.2L-26.7,-32.2L-24.3,-27.3L-23.7,-23.4L-22.3,-23.0L-20.7,-19.4L-17.9,-20.1L-16.6,-13.3L-11.9,-17.2L-7.8,-19.7L-4.6,-20.8L-2.8,-19.2L0.1,-14.6L0.8,-10.6L2.2,-6.6L3.7,6.8L4.0,8.1L-0.4,9.7L-3.0,11.6L-5.0,12.2L-8.0,12.0L-18.8,26.8L-19.6,27.7Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M18.7,96.3L18.4,97.2L17.3,99.5L16.9,100.7L15.6,103.7L15.4,103.7L11.1,107.2L9.5,105.7L9.8,102.6L11.8,96.1L9.4,100.7L8.7,105.6L6.4,111.0L3.9,121.7L4.0,125.1L3.4,124.6L1.6,128.4L2.3,134.8L2.3,134.9L-1.7,130.6L-8.5,122.8L-15.3,114.2L-23.1,103.2L-23.8,102.0L-23.2,101.3L-11.0,86.2L-4.0,78.2L-1.6,74.5L2.2,71.1L3.6,70.9L3.4,71.5L6.2,77.5L7.8,84.2L13.7,87.0L15.1,92.3L18.9,95.8L19.0,95.8L18.9,95.9L18.7,96.3Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M-1.9,156.8L-3.8,165.4L-1.8,170.6L-0.4,176.5L0.7,179.4L1.1,183.5L1.9,184.3L1.8,184.8L0.3,185.1L-0.0,185.1L-0.6,184.0L-0.8,184.0L-0.9,183.4L-2.7,173.7L-6.6,167.7L-8.6,167.0L-9.5,163.8L-11.7,165.7L-14.2,162.6L-14.3,162.6L-13.8,161.4L-12.9,159.0L-10.8,157.3L-7.7,153.4L-6.4,154.3L-1.5,153.9L-1.9,156.8Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M101.9,4.7L98.6,5.3L95.2,7.5L94.2,7.7L94.1,7.8L94.0,7.7L94.1,4.3L94.4,2.7L93.1,1.7L93.3,1.6L97.7,-2.4L100.7,0.2L101.8,4.7L101.9,4.7Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M-0.8,184.0L-1.3,184.3L-3.6,185.5L-4.8,188.3L-1.6,190.8L-1.4,190.9L-1.5,191.1L-2.2,191.4L-0.9,201.3L7.0,211.6L9.3,213.3L10.4,214.0L9.3,214.4L1.3,217.3L-3.3,219.3L-9.4,216.3L-10.9,216.9L-14.2,216.0L-14.6,215.6L-17.3,212.1L-20.1,211.6L-22.3,212.2L-26.4,207.9L-31.6,199.1L-32.5,185.6L-34.9,177.4L-29.5,174.6L-29.5,174.5L-27.1,170.9L-24.7,171.3L-21.9,168.0L-19.9,166.7L-18.2,167.3L-15.0,163.4L-14.3,162.6L-14.2,162.6L-11.7,165.7L-9.5,163.8L-8.6,167.0L-6.6,167.7L-2.7,173.7L-0.9,183.4L-0.8,184.0Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M139.2,-12.7L136.3,-11.9L130.8,-8.5L128.1,-5.8L124.1,-4.3L121.9,-2.3L119.3,-0.9L118.3,1.7L114.8,3.2L105.7,2.1L105.7,2.1L100.7,-4.0L99.8,-4.4L103.8,-9.4L108.9,-11.7L112.4,-12.8L113.2,-11.8L122.0,-10.6L123.6,-11.3L126.2,-14.9L128.0,-15.2L133.1,-18.3L135.9,-22.8L137.1,-21.9L135.2,-19.3L135.6,-16.8L142.8,-15.7L141.8,-13.6L139.3,-12.8L139.2,-12.7Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M26.6,-1.8L24.1,-0.3L21.3,0.3L24.0,-3.2L25.3,-3.4L26.6,-1.8Z M38.1,-14.3L37.6,-14.6L34.0,-13.3L31.5,-11.5L29.6,-9.1L29.6,-9.2L27.2,-10.6L26.9,-13.1L28.0,-17.9L26.7,-19.9L24.3,-19.3L23.3,-20.4L25.5,-29.5L25.5,-30.3L28.3,-34.2L33.2,-34.8L40.1,-37.3L44.3,-40.0L44.5,-41.4L47.3,-46.1L50.5,-48.5L49.6,-43.2L49.6,-40.1L54.1,-42.3L52.0,-37.6L53.6,-37.2L55.7,-34.5L58.6,-34.5L58.9,-33.1L55.3,-28.1L54.8,-26.3L53.4,-25.6L50.1,-16.4L44.8,-15.5L41.6,-17.3L38.8,-17.1L40.0,-16.3L38.2,-14.4L38.1,-14.3Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M18.9,95.9L19.0,95.8L19.8,95.7L20.2,95.6L19.4,96.0L19.2,96.2L18.7,96.3L18.9,95.9Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M71.4,87.4L70.6,89.8L69.8,90.2L67.9,86.6L67.1,86.6L67.0,86.6L65.4,85.4L63.7,84.3L63.5,84.2L63.6,84.1L61.3,79.9L60.9,79.0L61.8,78.8L64.1,74.9L63.8,74.1L63.5,70.7L63.4,69.9L64.9,70.9L65.7,73.7L71.7,84.1L70.9,85.1L71.6,87.2L71.6,87.3L71.4,87.4Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M33.6,46.4L32.0,42.0L30.7,40.9L29.7,43.6L28.0,41.6L28.5,38.7L26.9,39.8L23.7,43.7L23.1,42.9L21.1,48.7L20.7,47.1L18.1,48.0L17.3,49.2L15.2,49.1L16.2,46.7L15.0,47.0L16.9,44.6L17.8,42.1L20.4,42.8L20.3,46.4L21.3,46.6L20.7,42.6L19.8,41.5L20.4,39.3L22.8,34.3L22.9,33.9L24.1,34.1L25.0,34.6L27.6,33.6L27.9,33.5L28.0,33.8L29.1,35.3L31.6,37.0L31.7,37.2L31.8,37.5L34.4,43.5L35.8,45.0L37.1,44.2L37.1,44.6L37.2,44.9L35.6,45.9L34.8,46.7L33.5,46.6L33.6,46.4Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M259.9,216.6L260.2,216.4L260.3,216.4L260.9,216.4L260.9,216.4L259.5,217.0L259.9,216.7L259.9,216.6Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M32.0,20.4L31.5,22.3L31.5,22.6L31.3,22.7L31.2,22.9L31.1,23.2L31.3,22.4L32.1,18.4L31.9,20.1L32.0,20.4Z M44.1,15.9L44.0,15.9L42.3,17.3L42.0,18.3L40.4,18.5L40.3,18.6L40.3,18.4L38.9,11.0L37.4,10.6L32.1,19.3L33.4,15.0L38.7,6.4L38.8,3.4L38.9,3.5L39.7,7.9L42.8,7.3L44.5,8.5L44.5,8.8L44.5,9.0L42.8,13.5L42.8,13.9L44.1,15.9L44.1,15.9Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M56.1,18.0L55.6,18.6L55.6,19.1L55.0,20.4L54.9,20.5L54.8,20.5L52.5,19.6L47.1,20.3L46.0,18.7L45.9,18.7L45.9,18.6L45.2,16.9L44.5,16.3L44.2,15.9L44.1,15.9L44.1,15.9L42.8,13.9L42.8,13.5L44.5,9.0L44.5,8.8L44.6,8.7L45.2,7.9L45.7,7.5L45.6,7.0L46.1,7.1L47.7,6.7L48.5,7.0L50.4,7.0L50.6,7.1L50.6,7.1L50.9,11.3L52.0,11.2L55.2,14.0L55.9,17.7L55.9,17.8L56.1,18.0Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M145.8,178.4L141.5,182.6L142.5,183.9L151.2,191.1L155.6,192.4L162.5,197.2L163.6,197.4L167.5,196.1L168.0,192.5L168.0,192.3L169.7,191.9L170.5,192.3L170.2,194.9L170.4,195.1L172.6,197.8L175.2,197.5L179.8,198.5L181.4,196.8L180.1,194.8L180.4,194.8L183.8,193.9L186.0,192.1L191.5,190.5L195.9,189.9L196.9,190.9L196.9,194.1L199.9,195.0L200.0,195.1L198.4,197.2L191.8,200.7L189.4,205.9L189.8,206.6L187.0,210.8L185.0,210.3L183.1,217.1L181.3,217.6L181.1,217.7L181.0,217.5L180.5,211.0L176.9,212.8L177.6,208.9L179.4,208.8L180.9,206.3L179.4,205.0L174.0,204.1L171.7,200.6L170.1,199.1L166.8,200.2L167.7,203.1L166.0,204.7L167.9,207.9L167.3,209.1L168.3,215.5L168.1,216.1L164.7,216.7L164.1,215.9L159.9,217.5L157.0,221.6L154.3,222.6L154.0,221.7L148.1,226.9L146.3,227.4L140.9,230.1L139.7,232.3L136.9,232.1L134.3,233.5L132.7,233.4L131.1,242.7L130.3,245.2L127.8,249.1L127.4,253.9L125.7,253.6L123.5,256.0L123.7,256.9L120.3,257.8L118.3,260.1L115.3,258.4L113.4,253.8L111.8,244.3L110.2,240.3L109.6,232.6L108.5,227.2L107.5,225.3L107.8,214.1L108.4,213.3L108.0,209.8L109.7,206.2L110.2,203.1L109.9,200.7L108.9,200.0L108.2,202.7L102.1,203.9L98.3,197.1L98.5,195.4L102.2,196.2L103.8,194.6L101.0,194.8L98.2,192.5L96.9,189.1L97.0,188.6L99.6,187.7L102.8,189.6L107.5,189.1L107.2,186.9L104.8,179.1L109.9,176.2L112.7,177.6L114.4,176.9L123.1,171.3L126.0,168.5L128.9,163.8L126.8,159.8L129.6,154.3L133.5,156.8L138.1,155.9L138.2,155.7L138.7,155.6L140.1,155.2L140.6,155.1L140.9,155.0L141.0,155.0L141.3,156.1L141.6,158.9L143.0,161.0L142.4,161.3L142.3,167.6L139.7,166.9L139.7,171.5L143.7,176.2L145.8,178.1L145.8,178.4Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M63.3,96.8L63.4,97.0L63.9,97.1L64.2,97.4L64.4,97.6L69.4,97.7L69.4,99.2L67.4,100.5L68.4,103.6L68.3,103.7L68.8,110.7L71.0,115.2L75.5,117.2L77.6,117.0L77.8,116.4L85.3,117.7L87.9,119.4L89.4,122.4L91.7,124.9L92.9,129.3L94.9,130.5L93.5,134.3L93.5,134.4L93.4,134.7L91.7,137.0L88.7,138.9L85.4,148.4L87.5,151.3L83.8,154.6L82.7,155.1L82.6,155.2L82.8,156.2L83.6,161.7L85.3,165.1L85.5,168.5L84.4,170.8L83.5,170.3L79.8,170.6L77.7,173.8L77.5,173.8L65.8,163.0L65.9,162.0L62.6,157.2L59.7,157.4L56.6,154.6L52.4,144.8L53.3,134.9L51.5,133.9L51.1,131.7L49.0,132.8L48.8,132.8L48.8,127.3L50.9,124.8L50.0,112.5L51.0,111.4L54.3,109.7L56.1,107.4L54.8,105.2L56.1,100.0L56.1,100.0L56.2,100.0L60.3,91.0L62.5,91.6L62.5,91.7L62.5,91.8L62.3,95.1L63.0,96.3L63.3,96.8Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M56.1,100.0L54.8,105.2L56.1,107.4L54.3,109.7L51.0,111.4L50.0,112.5L50.9,124.8L48.8,127.3L48.8,132.8L48.5,132.7L48.3,132.4L47.5,131.4L47.4,131.5L46.5,130.2L45.3,129.8L42.6,131.5L41.8,131.7L41.3,131.5L35.7,117.5L33.6,108.3L31.8,105.5L31.4,104.9L32.0,104.8L32.1,103.5L33.3,100.8L33.7,99.8L34.7,100.0L43.8,98.9L47.4,95.2L50.9,95.2L50.9,95.2L51.1,95.3L52.3,95.1L54.3,97.9L56.1,99.9L56.1,100.0L56.1,100.0Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M25.8,94.9L25.4,94.7L25.2,94.8L24.5,95.5L24.4,95.3L21.6,96.7L21.8,98.2L21.9,98.3L21.5,98.8L18.9,100.9L17.9,101.9L15.9,103.6L15.6,103.7L16.9,100.7L17.3,99.5L18.4,97.2L18.7,96.3L19.2,96.2L19.4,96.0L20.2,95.6L20.2,95.6L21.4,95.1L22.5,94.4L25.1,92.5L25.5,92.2L26.1,92.9L26.3,93.0L27.8,92.9L27.9,92.9L27.7,93.0L27.2,93.9L27.0,94.0L26.1,94.8L25.9,95.0L25.8,94.9Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M13.4,25.6L10.0,26.3L8.9,27.8L7.5,27.8L7.5,26.1L9.1,18.2L11.1,18.6L11.1,20.7L13.4,25.6Z M19.3,2.6L13.5,5.8L11.5,4.6L12.7,2.4L15.9,0.8L18.8,-1.4L20.4,0.9L19.3,2.6Z M42.9,1.8L42.6,1.8L41.9,1.4L40.7,2.6L39.3,3.7L39.5,3.8L38.0,0.3L34.1,2.5L31.0,8.3L28.0,11.6L27.2,13.1L24.4,24.3L22.8,28.8L21.6,29.2L22.9,23.9L21.2,23.8L18.9,26.9L17.2,27.6L12.9,27.6L12.6,26.7L16.6,25.5L19.9,21.5L21.5,17.7L22.6,11.4L27.6,0.7L30.9,-1.8L32.6,-6.9L29.9,-8.5L29.6,-9.1L31.5,-11.5L34.0,-13.3L37.6,-14.6L38.1,-14.3L38.0,-14.1L40.3,-11.4L39.1,-9.8L40.6,-7.6L42.2,-6.9L42.7,-7.1L44.3,-3.2L43.7,-2.9L42.9,1.2L42.9,1.8Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M30.8,105.0L25.1,101.9L24.8,107.7L22.4,108.2L20.5,106.9L17.4,107.5L15.4,104.3L15.8,103.9L15.9,103.6L17.9,101.9L18.9,100.9L21.5,98.8L21.9,98.3L22.2,98.1L22.9,97.6L23.4,96.8L24.2,96.1L24.5,95.5L25.2,94.8L25.4,94.7L25.8,94.9L25.9,95.0L26.1,95.3L26.3,97.9L26.9,98.8L32.9,99.7L33.7,99.8L33.3,100.8L32.1,103.5L32.0,104.8L31.4,104.9L30.8,105.0Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M311.0,162.3L312.8,161.9L312.5,163.2L313.9,169.5L312.2,172.1L310.0,171.7L310.4,166.6L308.5,165.5L307.9,167.3L307.1,164.6L308.6,162.0L311.0,162.3Z M320.0,156.6L320.9,156.4L320.6,160.2L317.8,161.1L316.5,164.1L315.0,161.8L318.7,156.7L320.0,156.6Z M329.4,122.0L334.0,127.1L334.2,133.1L333.8,134.3L336.0,142.6L336.7,143.2L335.7,147.8L335.2,145.0L334.6,147.2L331.5,148.7L331.0,151.0L326.5,150.8L325.0,158.1L324.2,158.1L322.8,154.1L321.6,154.5L313.6,158.9L313.8,160.4L309.8,161.1L310.4,159.2L314.9,152.9L318.0,151.9L320.6,150.1L323.2,149.4L322.8,148.2L324.3,143.2L325.6,143.8L326.8,142.0L329.2,136.9L329.4,135.7L328.5,129.1L328.0,129.2L327.4,123.5L329.4,122.0Z M331.2,108.7L333.9,108.1L334.4,106.0L334.9,108.4L337.1,109.9L333.5,113.8L333.5,117.0L329.0,116.8L325.4,118.8L328.3,120.7L327.2,121.0L326.5,123.1L323.9,119.1L324.7,116.6L324.0,115.8L326.5,114.3L323.6,106.6L331.2,108.7Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M140.6,155.1L140.1,155.2L138.7,155.6L138.2,155.7L138.2,155.4L138.1,154.3L138.1,153.8L138.0,153.4L138.3,153.7L139.4,154.5L139.9,154.7L140.7,155.0L140.9,155.0L140.6,155.1Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M180.9,109.4L180.7,109.3L178.3,111.2L175.8,111.9L175.0,115.6L172.4,116.7L167.8,115.0L164.8,119.6L164.6,121.8L162.8,120.3L158.1,120.4L157.9,127.6L155.4,131.3L155.3,131.3L155.0,130.8L152.8,128.2L147.6,125.7L142.1,124.1L138.3,122.3L135.8,123.2L134.3,121.8L131.9,120.9L130.3,122.1L130.3,122.4L130.0,122.4L124.0,123.5L121.8,124.9L117.8,121.7L118.0,117.9L117.2,117.5L119.1,114.0L117.2,109.8L116.0,109.8L113.1,108.0L110.1,106.9L109.3,102.9L106.0,94.6L99.3,92.9L91.7,104.9L91.3,105.7L91.2,105.6L90.0,105.1L89.4,99.5L84.3,98.4L84.5,98.0L86.8,95.0L85.0,91.6L85.7,85.9L87.6,86.0L88.8,87.5L88.8,85.1L90.5,84.5L94.1,87.4L93.8,85.9L96.1,84.4L97.5,81.5L94.6,78.4L88.7,77.4L88.6,77.6L90.2,71.3L88.6,69.4L89.7,65.9L96.3,61.6L96.8,65.1L98.7,63.0L105.6,62.5L108.1,64.7L108.1,65.7L111.7,73.4L115.5,73.6L115.9,74.7L118.1,75.4L118.8,77.8L123.7,79.9L124.3,77.3L127.7,72.2L129.8,72.9L128.7,71.1L130.4,68.8L135.8,71.0L144.6,72.8L146.2,72.3L149.5,73.2L151.4,75.7L150.3,78.4L154.6,81.4L154.0,83.2L155.9,83.9L161.4,84.0L163.2,87.3L166.1,98.1L167.0,97.0L168.3,99.3L170.7,100.3L172.2,100.0L176.2,106.1L178.4,107.2L179.9,106.4L180.9,109.2L180.9,109.4Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M155.3,131.6L145.8,133.4L144.5,133.1L142.3,135.0L138.4,133.1L133.9,135.8L133.6,135.8L133.5,135.7L129.4,135.2L127.9,133.0L121.8,130.7L122.5,129.0L127.3,130.0L127.4,129.9L127.5,129.9L129.5,131.0L134.1,130.0L129.6,126.9L129.5,123.4L130.4,122.3L130.3,122.4L130.3,122.1L131.9,120.9L134.3,121.8L135.8,123.2L138.3,122.3L142.1,124.1L147.6,125.7L152.8,128.2L155.0,130.8L155.3,131.3L155.3,131.6Z M127.5,131.5L127.1,130.5L127.2,131.0L127.5,131.5Z M126.1,131.2L125.5,130.8L125.6,131.0L126.1,131.2Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M224.0,264.5L221.6,264.6L221.6,262.5L219.6,263.0L218.8,259.9L218.8,260.0L216.4,252.9L218.8,250.7L221.3,249.6L227.6,250.0L227.7,249.9L227.7,250.0L231.1,251.5L233.9,249.9L236.6,248.5L236.8,248.4L236.8,248.6L237.2,252.9L236.5,257.8L232.3,260.1L230.8,260.1L230.0,262.8L228.5,263.0L224.7,265.0L224.0,264.5Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M298.5,146.9L302.8,153.1L303.3,158.0L296.4,162.6L294.5,160.1L295.1,157.7L292.9,153.4L293.9,151.8L293.0,150.1L293.0,150.0L293.7,147.9L297.3,145.4L298.5,146.9Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M33.4,31.4L31.9,29.9L31.0,29.9L31.0,29.8L31.2,29.7L32.0,29.0L32.4,28.2L32.9,27.0L32.9,26.8L33.0,26.8L33.5,26.3L33.7,26.3L34.0,26.6L34.2,26.9L34.4,27.1L35.8,26.6L35.8,28.0L33.5,31.3L33.4,31.4L33.4,31.4Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M45.6,137.7L43.6,136.1L43.6,135.6L42.3,132.2L41.8,131.7L42.6,131.5L45.3,129.8L46.5,130.2L47.4,131.5L47.3,131.7L47.0,133.3L46.6,132.8L45.7,137.2L45.6,137.7Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M216.5,219.1L219.3,221.5L219.0,223.4L224.4,224.9L224.5,226.4L226.6,228.0L222.8,230.9L227.3,233.2L227.5,234.5L232.8,240.1L232.9,241.0L236.2,243.2L235.3,244.2L236.7,247.9L236.8,248.4L236.6,248.5L233.9,249.9L231.1,251.5L227.7,250.0L227.7,249.9L227.9,249.8L229.0,247.2L228.5,243.6L226.0,239.4L226.2,238.5L222.9,234.6L220.7,234.2L219.6,235.3L219.6,235.2L219.6,235.3L219.6,235.3L217.2,235.8L215.6,235.1L212.0,237.6L212.8,231.9L211.7,229.4L209.6,229.1L208.6,226.7L208.6,226.5L208.6,226.3L210.3,224.3L210.2,224.2L212.3,222.1L212.5,221.8L212.7,222.0L215.0,223.2L214.9,218.2L216.1,218.6L216.3,218.7L216.5,219.1Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M27.8,92.9L26.3,93.0L26.1,92.9L25.5,92.2L25.8,92.1L29.0,90.3L29.7,89.7L31.2,89.5L31.4,89.2L32.1,89.8L31.5,92.0L28.1,92.9L27.9,92.9L27.8,92.9Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M-23.8,102.0L-25.1,103.7L-27.7,107.2L-28.9,109.0L-32.2,107.7L-32.5,105.4L-34.7,75.2L-34.7,69.0L-39.5,65.8L-38.8,62.1L-39.2,57.4L-39.5,55.3L-37.6,47.7L-33.8,39.0L-31.5,38.9L-22.4,30.7L-19.8,27.5L-19.6,27.7L-19.3,27.9L-17.1,28.5L-14.8,26.3L-10.4,28.3L-7.7,26.3L-7.8,26.9L-8.0,31.2L-7.1,34.5L-7.7,40.9L-9.6,43.4L-9.9,45.8L-9.1,50.0L-9.4,57.8L-7.9,58.9L-3.5,55.6L-1.9,54.9L3.1,58.8L3.0,62.9L4.1,69.9L3.7,70.7L3.6,70.9L2.2,71.1L-1.6,74.5L-4.0,78.2L-11.0,86.2L-23.2,101.3L-23.8,102.0Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M127.7,256.0L131.3,260.3L133.9,267.3L132.9,270.1L127.0,270.8L125.7,267.3L125.9,262.5L127.0,260.3L127.7,256.0Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M80.9,0.5L80.9,0.4L81.4,0.4L81.8,0.4L81.2,0.5L80.9,0.5Z M86.5,10.5L86.4,10.6L84.9,11.6L82.8,10.8L80.6,11.5L77.6,8.5L77.6,8.3L77.6,8.2L78.3,7.8L78.8,6.0L78.6,6.0L78.8,5.8L79.6,5.3L80.5,5.1L81.0,1.1L81.1,1.1L81.3,0.9L83.0,-0.3L83.8,-0.8L84.0,-0.9L86.0,0.5L87.4,7.8L86.5,10.4L86.5,10.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M94.1,8.0L93.1,9.4L92.3,9.6L89.8,12.2L89.6,12.3L89.6,12.2L87.6,11.5L87.5,11.0L86.6,10.5L86.5,10.5L86.5,10.4L87.4,7.8L86.0,0.5L84.0,-0.9L84.7,-1.3L90.3,-2.5L89.2,2.3L92.8,1.8L93.1,1.7L94.4,2.7L94.1,4.3L94.0,7.7L94.1,7.8L94.1,8.0Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M258.3,217.9L258.3,217.9L258.1,218.0L258.1,218.0L258.1,218.0L258.1,218.0L258.1,217.9L258.2,217.8L258.3,217.9Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M52.1,38.6L56.5,35.2L57.0,34.5L59.9,28.3L59.8,28.1L60.0,28.0L61.7,30.3L61.6,34.2L58.6,39.1L52.2,38.9L52.0,38.9L52.1,38.6Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M34.1,34.0L33.1,36.4L32.7,36.6L31.8,37.2L31.7,37.2L31.6,37.0L29.1,35.3L28.0,33.8L27.9,33.5L27.9,33.4L29.7,30.4L31.0,29.8L31.0,29.8L31.0,29.9L31.9,29.9L33.4,31.4L33.4,31.4L33.4,31.6L33.6,31.8L34.4,33.1L34.4,33.2L34.1,34.0Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M202.6,195.4L204.5,197.9L204.6,201.8L199.8,209.7L200.0,212.1L202.2,211.3L204.5,211.6L204.2,212.9L205.7,215.5L205.8,219.4L208.2,220.0L208.1,220.9L210.8,222.0L212.6,221.7L212.5,221.8L212.3,222.1L210.2,224.2L210.3,224.3L208.6,226.3L208.6,226.5L208.2,226.2L204.4,227.4L204.0,228.4L201.0,228.2L198.0,233.0L201.1,238.4L202.6,241.7L202.0,245.2L200.5,245.9L201.8,249.2L203.5,250.9L204.2,255.6L205.6,259.3L202.2,263.3L201.8,265.2L201.6,265.2L200.9,263.3L201.9,256.2L201.1,252.5L199.0,247.1L198.9,244.9L196.9,238.5L194.7,240.2L192.3,241.2L187.0,242.1L187.3,239.8L185.3,241.1L187.2,235.7L182.3,224.2L179.9,222.5L179.7,222.2L180.9,220.5L181.1,217.9L181.1,217.7L181.3,217.6L183.1,217.1L185.0,210.3L187.0,210.8L189.8,206.6L189.4,205.9L191.8,200.7L198.4,197.2L200.0,195.1L200.1,194.9L201.6,194.6L202.0,194.7L202.4,195.3L202.6,195.4Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M35.6,22.2L34.7,24.3L34.7,24.7L34.3,26.8L34.2,26.9L34.0,26.6L33.7,26.3L33.5,26.3L33.0,26.8L32.9,26.8L32.9,26.8L32.8,25.9L32.8,25.6L29.8,26.7L30.0,26.1L30.8,24.6L31.0,23.6L31.1,23.3L31.1,23.2L31.2,22.9L31.3,22.7L31.5,22.6L31.5,22.7L32.9,21.7L33.3,22.0L35.6,22.1L35.6,22.2L35.6,22.2Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M255.8,109.4L255.2,117.4L256.0,116.6L259.9,115.5L266.3,119.7L263.5,119.8L259.9,121.1L259.8,122.0L255.8,126.2L252.7,126.9L250.4,129.6L247.6,129.2L245.3,132.9L245.8,133.3L242.1,138.2L239.4,139.6L231.6,140.5L227.4,142.7L225.0,142.3L216.9,139.8L210.4,139.1L203.9,137.8L201.5,137.9L198.4,131.4L196.2,129.7L192.5,127.6L190.8,127.4L187.0,124.9L188.3,122.7L188.1,119.1L187.2,116.2L182.2,111.8L182.2,109.6L182.2,109.4L182.2,109.4L183.4,108.5L187.4,108.0L188.7,106.8L194.3,105.3L196.3,105.8L199.9,108.8L207.6,109.9L208.8,109.4L208.4,105.5L211.5,101.6L215.1,103.3L219.5,107.4L222.8,109.8L226.9,108.5L233.8,110.7L235.6,112.7L240.0,112.9L244.5,111.7L249.2,108.1L253.2,108.9L255.8,108.6L255.9,108.8L255.8,109.4Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M215.9,280.9L219.7,284.5L220.8,287.8L221.0,293.8L222.1,294.6L224.0,299.0L220.2,298.4L215.2,295.7L209.4,289.1L208.1,282.3L207.3,280.2L207.1,279.7L211.0,280.9L210.6,282.4L215.2,280.7L215.9,280.9Z M275.1,276.3L278.7,277.2L278.5,278.8L280.1,278.1L285.3,280.1L281.4,282.0L282.8,283.9L278.2,285.4L271.8,285.5L271.0,286.2L270.4,290.0L267.8,295.2L266.1,296.8L263.2,298.0L260.1,297.1L258.2,297.2L250.5,300.2L246.5,297.7L249.3,297.2L252.2,297.6L254.9,292.6L260.3,290.9L265.0,285.7L266.5,287.2L268.6,285.7L272.5,278.7L275.1,276.3Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M145.9,178.7L147.3,178.1L149.4,178.6L153.5,184.3L155.3,184.5L155.5,185.8L159.0,189.1L165.2,192.1L167.7,192.4L168.0,192.5L167.5,196.1L163.6,197.4L162.5,197.2L155.6,192.4L151.2,191.1L142.5,183.9L141.5,182.6L145.8,178.4L145.9,178.7Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M61.4,167.1L62.3,171.4L66.0,174.8L67.2,179.9L68.3,181.2L61.0,186.8L59.2,186.2L56.9,191.0L52.6,190.5L50.9,192.3L48.3,191.3L44.3,193.2L43.2,192.2L39.3,191.3L38.5,191.2L38.5,188.3L38.3,188.0L38.5,180.6L38.6,180.1L39.1,180.2L49.4,182.1L53.1,177.5L54.2,172.9L54.2,172.3L54.5,171.8L57.0,168.2L59.5,165.3L61.5,165.9L61.4,167.1Z M62.3,163.3L62.0,163.1L61.9,162.9L62.3,161.4L62.8,161.0L63.4,161.8L62.4,163.1L62.3,163.3Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M138.1,153.8L138.1,154.3L138.2,155.4L138.2,155.7L138.1,155.9L133.5,156.8L129.6,154.3L126.8,159.8L128.9,163.8L126.0,168.5L123.1,171.3L114.4,176.9L112.7,177.6L109.9,176.2L104.8,179.1L107.2,186.9L107.5,189.1L102.8,189.6L99.6,187.7L97.0,188.6L96.8,188.8L94.5,186.2L93.4,182.8L93.2,179.4L87.0,178.2L77.6,173.9L77.7,173.8L79.8,170.6L83.5,170.3L84.4,170.8L85.5,168.5L85.3,165.1L83.6,161.7L82.8,156.2L82.6,155.2L83.5,156.2L91.5,161.9L98.5,163.1L100.4,159.7L103.1,158.8L104.3,159.6L108.9,159.7L110.8,159.3L113.6,155.4L115.7,155.1L116.9,153.0L119.2,153.2L119.3,151.5L121.4,150.4L122.4,148.7L122.3,146.6L125.7,144.6L132.7,146.0L133.1,145.9L133.3,145.9L136.5,148.9L136.6,152.3L137.9,153.3L138.0,153.4L138.1,153.8Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M310.8,260.5L311.7,263.2L312.6,263.4L313.9,268.2L312.9,270.2L310.8,268.3L309.5,271.0L310.9,273.5L309.8,275.2L305.8,273.9L304.0,270.4L303.9,268.6L301.3,269.8L298.1,268.9L296.3,272.5L295.5,271.5L299.4,266.9L299.9,265.7L302.4,265.1L304.0,266.2L306.5,262.7L309.0,262.1L308.3,259.6L310.8,260.5Z M299.6,263.6L296.5,261.7L298.1,259.9L298.3,256.8L300.4,257.6L299.5,261.6L299.6,263.6Z M300.4,262.0L300.3,260.0L302.0,254.9L302.5,257.9L300.4,262.0Z M276.7,269.4L276.7,268.4L283.9,260.3L282.7,262.7L279.2,267.4L276.7,269.4Z M296.1,254.3L298.5,255.5L297.5,257.2L294.5,257.1L294.4,254.2L296.1,254.3Z M306.3,248.8L308.8,253.7L303.4,250.9L303.7,249.4L306.3,248.8Z M288.4,248.3L290.3,248.2L291.8,249.3L292.0,251.0L290.5,252.8L287.0,248.8L288.4,248.3Z M287.6,228.3L291.9,228.0L293.7,233.1L290.5,240.0L292.8,245.5L296.7,244.2L301.8,247.7L298.5,248.1L295.5,245.5L295.8,248.2L292.3,245.9L287.8,246.4L288.9,244.0L287.3,243.0L285.4,243.4L283.9,237.9L286.0,238.0L285.3,232.5L286.2,228.8L287.6,228.3Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M434.3,281.9L433.2,283.2L429.3,280.5L429.8,279.3L433.7,280.9L434.3,281.9Z M418.1,279.7L419.7,281.7L418.6,284.7L414.4,289.0L410.5,291.2L405.5,291.2L405.5,290.0L415.1,285.7L418.1,279.7Z M388.1,290.1L394.9,291.6L395.1,293.8L403.5,294.4L403.7,295.1L400.3,297.5L403.6,300.4L405.3,300.6L408.1,303.4L409.3,302.6L410.1,304.2L413.0,303.8L412.6,305.3L415.0,306.7L410.6,307.2L403.5,308.4L401.0,306.0L397.1,303.6L391.0,303.9L387.2,306.9L386.6,309.7L383.7,313.2L382.7,313.0L377.4,314.5L376.6,306.0L375.4,289.8L388.1,290.1Z M422.3,279.7L420.9,277.8L412.9,275.7L413.1,274.9L418.0,275.4L422.1,277.1L422.3,279.7Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M78.6,6.0L78.8,6.0L78.3,7.8L77.6,8.2L77.6,8.3L76.4,9.2L73.1,11.8L71.1,11.4L69.0,13.5L68.6,13.9L68.4,14.1L64.9,17.2L64.5,16.7L59.0,17.8L58.8,17.2L58.7,17.1L58.7,17.0L59.2,15.1L58.1,11.5L57.1,11.3L57.5,8.1L57.4,7.8L57.5,7.7L58.7,6.3L59.7,1.8L58.4,1.8L60.6,-3.0L60.2,-4.0L60.3,-4.0L65.0,-6.4L67.6,-8.7L71.9,-10.4L77.5,-4.4L76.8,-0.6L76.9,-0.6L78.2,4.8L78.6,5.9L78.6,6.0Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M299.1,128.6L299.2,128.8L299.7,129.3L299.8,129.3L299.7,129.5L297.9,132.9L298.8,135.4L293.8,141.6L293.9,143.9L297.1,145.2L297.3,145.4L293.7,147.9L293.0,150.0L293.0,150.0L286.9,150.1L289.0,147.3L287.6,146.9L287.6,144.2L284.3,143.0L284.3,143.0L285.6,140.9L288.1,138.4L290.8,135.1L293.8,134.9L292.9,133.1L295.8,130.9L296.8,128.3L299.0,128.5L299.1,128.6Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M45.1,156.0L48.7,152.0L46.3,157.8L45.9,157.7L44.8,156.6L44.9,156.1L45.1,156.0Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M51.8,39.4L51.8,39.8L52.6,41.1L53.3,42.7L53.0,42.9L51.1,41.8L50.8,42.2L47.0,44.2L46.8,44.4L45.9,39.3L45.3,38.6L41.5,29.5L41.5,29.2L41.6,29.1L42.1,25.7L43.8,22.8L45.7,19.0L45.9,18.7L46.0,18.7L47.1,20.3L52.5,19.6L54.8,20.5L54.9,20.5L55.0,20.6L56.0,23.5L56.1,25.6L59.7,28.0L59.8,28.1L59.9,28.3L57.0,34.5L56.5,35.2L52.1,38.6L52.0,38.9L51.8,39.4Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M309.2,73.0L318.9,85.8L322.3,90.0L320.0,91.2L321.2,96.6L326.5,100.9L326.7,102.2L323.7,100.6L323.1,103.8L321.6,100.3L318.1,94.2L317.2,90.9L314.2,84.9L311.1,81.7L309.2,73.0Z M81.0,1.1L80.5,5.1L79.6,5.3L78.8,5.8L78.6,6.0L78.6,5.9L78.2,4.8L76.9,-0.6L77.3,-0.4L77.7,-0.4L79.3,0.1L80.7,0.4L80.9,0.4L80.9,0.5L80.5,0.5L79.5,0.4L80.4,1.4L81.0,1.1Z M311.2,-12.7L319.6,-16.2L322.8,-15.0L324.0,-16.2L321.4,-17.6L322.7,-19.7L325.5,-20.6L328.8,-18.6L327.9,-17.0L330.3,-16.3L332.4,-13.1L326.3,-10.9L325.6,-8.3L322.1,-7.8L324.8,-7.0L325.2,-5.7L311.0,-12.6L311.2,-12.7Z M172.6,2.2L173.2,3.3L168.5,6.5L167.3,11.5L164.8,9.8L163.6,7.7L165.1,7.6L164.2,4.2L171.4,1.2L172.6,2.2Z M265.9,0.5L269.7,-1.2L268.7,1.4L265.8,1.4L265.9,0.5Z M259.2,2.5L259.6,0.9L264.1,0.7L263.5,3.3L261.8,2.7L263.6,4.6L260.9,5.5L259.7,6.8L257.8,5.8L257.4,1.8L259.2,2.5Z M190.8,0.7L183.1,0.3L173.7,3.2L171.9,1.4L172.7,-0.1L186.1,-2.6L189.5,-1.4L193.0,-1.2L190.8,0.7Z M299.8,129.3L299.7,129.3L299.2,128.8L299.1,128.6L299.2,128.4L300.1,126.5L298.5,118.5L299.4,117.0L302.7,116.5L302.3,104.4L300.8,103.3L298.6,105.2L297.5,107.3L293.9,108.6L291.6,105.2L289.0,103.8L283.7,103.7L279.9,98.6L278.4,96.2L274.7,92.1L266.7,92.2L263.2,94.2L264.2,98.8L263.0,100.5L261.7,105.5L262.2,106.8L259.1,109.5L256.5,109.0L255.9,108.8L255.8,108.6L253.2,108.9L249.2,108.1L244.5,111.7L240.0,112.9L235.6,112.7L233.8,110.7L226.9,108.5L222.8,109.8L219.5,107.4L215.1,103.3L211.5,101.6L208.4,105.5L208.8,109.4L207.6,109.9L199.9,108.8L196.3,105.8L194.3,105.3L188.7,106.8L187.4,108.0L183.4,108.5L182.2,109.4L182.2,109.4L182.1,109.4L181.5,109.4L181.3,109.5L181.2,109.5L180.9,109.4L180.9,109.2L179.9,106.4L178.4,107.2L176.2,106.1L172.2,100.0L170.7,100.3L168.3,99.3L167.0,97.0L166.1,98.1L163.2,87.3L161.4,84.0L155.9,83.9L154.0,83.2L154.6,81.4L150.3,78.4L151.4,75.7L149.5,73.2L146.2,72.3L144.6,72.8L135.8,71.0L130.4,68.8L128.7,71.1L129.8,72.9L127.7,72.2L124.3,77.3L123.7,79.9L118.8,77.8L118.1,75.4L115.9,74.7L115.5,73.6L111.7,73.4L108.1,65.7L108.1,64.7L105.6,62.5L98.7,63.0L96.8,65.1L96.3,61.6L89.7,65.9L88.6,69.4L90.2,71.3L88.6,77.6L88.5,77.8L78.8,79.6L78.9,82.9L76.6,85.4L75.9,91.0L75.9,91.4L72.9,92.2L71.9,90.8L71.8,87.6L71.6,87.3L71.6,87.2L70.9,85.1L71.7,84.1L65.7,73.7L64.9,70.9L63.4,69.9L63.4,69.5L63.0,57.7L65.4,59.1L66.1,58.4L68.7,58.8L69.0,56.1L72.6,57.2L72.0,55.5L71.3,55.2L72.9,54.0L77.6,55.1L79.5,52.4L81.7,51.5L80.6,46.7L79.8,46.7L79.3,36.3L82.0,31.9L78.9,28.9L78.9,28.8L79.0,28.8L82.3,25.4L82.6,26.9L84.8,24.6L86.0,22.4L90.1,18.6L90.2,16.4L89.2,15.8L89.4,12.7L89.6,12.3L89.8,12.2L92.3,9.6L93.1,9.4L94.1,8.0L94.1,7.8L94.2,7.7L95.2,7.5L98.6,5.3L101.9,4.7L102.2,4.6L103.8,5.4L105.4,4.9L106.1,2.7L105.7,2.1L114.8,3.2L118.3,1.7L119.3,-0.9L121.9,-2.3L124.1,-4.3L128.1,-5.8L130.8,-8.5L136.3,-11.9L139.2,-12.7L139.4,-12.5L140.5,-12.7L144.4,-10.9L143.8,-5.9L142.5,1.5L142.3,3.9L139.8,6.2L134.6,5.2L133.3,0.6L133.9,-4.9L131.6,-1.7L131.1,0.5L128.8,1.4L126.9,3.3L126.1,9.1L126.6,9.4L128.8,5.2L131.6,10.5L132.3,9.8L136.6,8.2L139.9,10.3L139.3,11.8L146.9,6.1L147.5,4.4L149.2,7.3L148.3,9.4L145.0,8.9L144.5,12.5L145.7,13.1L148.1,11.7L156.5,13.1L158.9,14.0L155.7,15.0L161.3,17.6L163.9,17.7L162.6,19.6L166.1,19.3L167.1,16.8L168.4,16.7L170.6,19.0L173.0,24.1L173.5,26.9L175.3,25.2L177.1,17.5L180.2,15.9L185.1,12.1L187.8,14.7L184.3,18.4L184.0,21.1L177.5,32.1L174.3,34.6L172.5,34.1L171.2,32.5L172.0,34.9L173.1,35.4L178.1,34.9L180.9,32.8L182.1,29.5L185.3,29.4L184.2,34.1L186.2,32.8L186.8,30.3L185.1,28.3L182.8,27.7L184.1,23.9L185.5,22.7L185.7,19.1L190.7,15.3L190.3,17.5L189.2,18.4L188.4,21.1L191.3,23.2L189.7,20.2L193.6,18.3L198.1,22.8L195.9,24.8L196.8,25.5L195.6,27.6L197.2,27.0L198.4,22.2L197.3,19.9L197.1,17.3L197.8,15.0L206.0,14.2L204.8,12.8L210.4,10.4L219.2,9.1L220.3,10.0L221.6,8.2L222.2,5.7L224.2,4.1L227.8,6.7L227.1,8.1L231.6,7.4L234.5,12.3L229.3,18.8L227.6,20.2L228.9,20.8L231.0,19.6L230.9,18.3L235.2,18.2L235.5,19.0L238.8,17.9L241.1,17.8L241.4,19.1L247.0,18.9L248.1,15.7L252.9,16.0L254.4,20.3L257.6,23.2L259.8,23.9L259.7,19.1L262.4,20.3L267.3,18.2L268.0,16.2L266.1,13.8L268.2,11.5L272.0,11.8L274.5,9.4L277.4,8.6L277.5,10.0L280.1,10.7L280.7,9.7L284.7,9.1L286.0,6.8L288.1,5.2L291.0,4.8L293.2,6.9L296.4,6.5L296.8,4.0L300.5,-0.7L302.4,-0.1L305.7,-1.4L305.2,-2.4L302.5,-2.8L301.0,-4.2L304.3,-7.8L305.1,-9.4L311.0,-12.6L326.2,-5.2L327.5,-0.4L330.7,-0.0L335.8,1.8L333.1,4.1L333.8,5.7L333.7,11.1L335.3,18.0L336.5,20.3L334.2,20.1L332.4,21.4L332.2,26.6L331.2,25.6L328.7,29.4L329.1,30.9L335.6,38.5L337.1,39.9L339.8,41.0L338.5,42.1L339.6,45.6L342.3,47.2L341.3,49.2L341.0,52.8L343.0,55.4L342.4,59.2L343.3,60.3L343.8,67.1L332.7,57.1L330.3,54.6L327.4,49.8L326.6,44.4L327.1,42.7L326.8,38.6L326.3,37.3L323.7,24.4L321.9,21.6L320.2,22.9L322.2,25.5L321.9,26.6L322.7,31.3L322.2,32.4L319.9,30.7L318.8,28.7L317.3,29.7L315.1,33.0L316.0,37.2L316.3,42.0L317.0,44.6L314.3,48.5L311.5,47.0L309.4,47.4L309.4,49.8L308.0,50.1L304.7,53.2L303.6,52.8L299.7,55.3L298.4,57.6L297.8,60.6L298.0,63.2L296.2,67.8L295.6,72.5L293.7,76.9L293.4,78.8L296.9,78.1L299.4,81.3L302.1,80.2L303.3,76.5L308.5,78.4L308.0,79.8L311.1,83.3L310.8,84.8L311.7,89.2L314.2,95.0L314.3,98.6L313.6,107.4L312.0,112.8L310.1,120.6L306.0,125.6L299.9,129.2L299.8,129.3Z M223.7,-1.9L225.7,0.9L222.2,2.0L223.7,-1.9Z M220.1,-5.5L221.2,-4.8L221.2,-1.5L220.4,-0.4L216.7,-3.9L220.1,-5.5Z M219.8,-8.9L219.8,-5.8L217.3,-5.2L215.9,-6.4L219.8,-8.9Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M41.8,131.7L42.3,132.2L43.6,135.6L43.6,136.1L45.6,137.7L45.6,138.1L45.0,141.9L46.4,147.0L45.5,150.0L44.8,155.7L44.9,156.1L44.8,156.6L45.9,157.7L46.0,158.0L45.9,158.4L45.5,158.8L46.1,159.4L46.2,159.5L47.2,166.9L53.9,172.5L54.2,172.3L54.2,172.9L53.1,177.5L49.4,182.1L39.1,180.2L38.6,180.1L37.8,179.8L29.5,175.9L25.7,175.5L22.4,177.3L20.2,177.4L18.7,174.9L10.8,167.3L9.8,167.4L7.0,170.2L7.1,169.8L7.2,163.5L6.8,162.0L7.5,154.0L6.4,148.6L9.0,138.2L9.3,126.7L10.4,123.8L12.5,109.3L11.8,107.8L13.4,106.0L15.4,104.3L17.4,107.5L20.5,106.9L22.4,108.2L24.8,107.7L25.1,101.9L30.8,105.0L31.4,104.9L31.8,105.5L33.6,108.3L35.7,117.5L41.3,131.5L41.8,131.7Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M1.8,135.7L0.1,141.0L-2.9,148.0L-1.5,153.5L-1.5,153.9L-6.4,154.3L-7.7,153.4L-10.8,157.3L-12.9,159.0L-13.8,161.4L-14.3,162.6L-15.0,163.4L-18.2,167.3L-19.9,166.7L-21.9,168.0L-24.7,171.3L-27.1,170.9L-29.5,174.5L-29.5,174.5L-29.5,174.4L-28.7,171.1L-29.6,166.7L-27.8,162.7L-30.2,159.1L-30.9,162.8L-36.5,165.2L-38.2,162.4L-43.3,159.6L-45.5,157.8L-45.7,156.1L-48.7,153.0L-48.9,146.8L-50.3,145.6L-53.7,147.5L-54.9,148.8L-56.2,148.4L-57.4,146.0L-55.1,142.4L-54.6,135.7L-53.6,134.6L-52.5,125.1L-50.6,124.6L-48.0,122.5L-47.4,120.5L-41.9,120.3L-41.5,121.2L-33.3,109.3L-32.2,107.7L-28.9,109.0L-27.7,107.2L-25.1,103.7L-23.8,102.0L-23.1,103.2L-15.3,114.2L-8.5,122.8L-1.7,130.6L2.3,134.9L1.8,135.7Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M10.4,214.0L9.3,213.3L7.0,211.6L-0.9,201.3L-2.2,191.4L-1.5,191.1L-1.4,190.9L-0.7,190.5L-0.1,190.1L0.3,189.8L0.7,190.8L2.2,196.6L4.0,197.8L7.3,198.2L11.0,200.5L12.1,200.4L17.0,202.6L17.6,203.4L17.7,203.4L15.5,210.0L15.4,210.4L11.2,213.4L10.4,214.0Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M-14.2,216.0L-10.9,216.9L-9.4,216.3L-3.3,219.3L1.3,217.3L9.3,214.4L10.4,214.0L11.2,213.4L15.4,210.4L15.5,210.0L17.7,203.4L18.1,203.6L24.7,204.5L22.8,211.4L20.5,215.3L15.9,219.1L9.7,225.2L1.4,230.1L-2.2,231.5L-9.1,231.9L-12.7,233.0L-21.2,237.6L-22.3,233.2L-20.1,224.2L-15.5,216.9L-14.8,216.4L-14.2,216.0Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M45.9,18.7L45.7,19.0L43.8,22.8L42.1,25.7L41.6,29.1L41.5,29.2L41.4,29.1L36.8,32.6L36.4,32.1L34.6,33.3L34.4,33.2L34.4,33.1L33.6,31.8L33.4,31.6L33.4,31.4L33.5,31.3L35.8,28.0L35.8,26.6L34.4,27.1L34.2,26.9L34.3,26.8L34.7,24.7L34.7,24.3L35.6,22.2L35.6,22.2L35.9,22.3L37.8,22.0L39.0,19.8L40.4,18.7L40.3,18.6L40.4,18.5L42.0,18.3L42.3,17.3L44.0,15.9L44.1,15.9L44.2,15.9L44.5,16.3L45.2,16.9L45.9,18.6L45.9,18.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M58.6,17.2L57.9,17.3L57.4,17.4L56.5,17.4L55.9,17.8L55.9,17.7L55.2,14.0L52.0,11.2L50.9,11.3L50.6,7.1L50.6,7.1L50.7,6.9L51.9,5.6L52.1,5.5L52.7,5.4L52.7,5.4L53.0,5.3L54.5,6.7L55.2,7.1L57.4,7.8L57.4,7.8L57.5,8.1L57.1,11.3L58.1,11.5L59.2,15.1L58.7,17.0L58.7,17.1L58.6,17.2Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M44.5,8.5L42.8,7.3L39.7,7.9L38.9,3.5L39.0,3.6L39.3,3.7L40.7,2.6L41.9,1.4L42.6,1.8L42.9,1.8L42.9,1.9L44.2,5.3L44.8,6.5L45.5,6.9L45.6,7.0L45.7,7.5L45.2,7.9L44.6,8.7L44.5,8.8L44.5,8.5Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M50.9,95.2L47.4,95.2L43.8,98.9L34.7,100.0L33.7,99.8L32.9,99.7L26.9,98.8L26.3,97.9L26.1,95.3L25.9,95.0L26.1,94.8L27.0,94.0L27.2,93.9L27.7,93.0L27.9,92.9L28.1,92.9L31.5,92.0L32.1,89.8L31.4,89.2L31.8,88.3L33.4,86.5L33.5,85.6L34.5,84.9L34.7,84.8L35.0,85.7L38.5,83.7L39.7,86.0L41.9,86.9L43.6,90.2L46.7,91.5L51.1,94.7L50.9,95.2L50.9,95.2Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M208.6,226.5L208.6,226.7L209.6,229.1L211.7,229.4L212.8,231.9L212.0,237.6L215.6,235.1L217.2,235.8L219.6,235.3L220.7,234.2L222.9,234.6L226.2,238.5L226.0,239.4L228.5,243.6L229.0,247.2L227.9,249.8L227.7,249.9L227.6,250.0L221.3,249.6L218.8,250.7L216.4,252.9L218.8,260.0L218.7,260.0L214.0,256.1L211.1,253.2L208.2,252.9L207.2,253.8L207.2,257.2L205.0,262.7L203.6,264.8L204.2,269.0L206.5,269.5L206.7,271.2L208.7,277.0L210.8,278.3L212.4,278.2L214.0,279.8L215.2,280.7L210.6,282.4L211.0,280.9L207.1,279.7L206.1,278.5L199.7,271.8L201.2,266.5L201.8,265.2L202.2,263.3L205.6,259.3L204.2,255.6L203.5,250.9L201.8,249.2L200.5,245.9L202.0,245.2L202.6,241.7L201.1,238.4L198.0,233.0L201.0,228.2L204.0,228.4L204.4,227.4L208.2,226.2L208.6,226.5Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M126.1,131.2L125.6,131.0L125.5,130.8L126.1,131.2Z M127.4,129.9L127.3,130.0L122.5,129.0L121.8,130.7L127.9,133.0L129.4,135.2L133.5,135.7L133.6,135.8L133.6,136.0L133.0,139.1L135.7,141.0L134.4,145.5L134.3,145.5L134.3,145.4L130.6,143.1L124.2,143.9L125.5,139.8L124.1,136.5L121.1,139.1L115.6,138.5L113.9,137.8L113.9,137.6L114.2,137.4L117.0,132.4L116.1,129.4L122.7,128.1L123.1,126.7L127.1,126.4L127.2,129.9L127.4,129.9Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M110.8,135.4L110.6,135.3L109.1,133.6L108.0,134.5L105.5,134.1L103.6,136.4L99.0,136.3L98.1,137.7L95.5,137.5L93.7,134.5L93.5,134.4L93.5,134.3L94.9,130.5L92.9,129.3L91.7,124.9L89.4,122.4L87.9,119.4L85.3,117.7L77.8,116.4L77.9,116.1L81.0,111.0L81.1,105.8L83.5,102.5L84.9,104.7L87.8,104.3L87.3,102.4L88.0,99.6L85.8,98.6L84.0,99.5L84.3,98.4L89.4,99.5L90.0,105.1L91.2,105.6L91.3,105.7L91.9,106.2L93.6,107.6L94.7,105.4L96.3,105.0L99.3,106.0L99.2,105.0L102.1,109.5L101.3,111.7L105.2,115.4L104.6,120.4L110.9,135.0L110.8,135.4Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M-7.7,26.3L-10.4,28.3L-14.8,26.3L-17.1,28.5L-19.3,27.9L-19.6,27.7L-18.8,26.8L-8.0,12.0L-5.0,12.2L-3.0,11.6L-0.4,9.7L4.0,8.1L4.3,8.7L5.8,11.3L4.7,13.6L5.2,15.9L2.8,15.5L1.7,16.1L-0.7,19.9L-4.5,19.3L-6.8,21.8L-7.7,25.8L-7.7,26.3Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M60.9,79.0L61.3,79.9L63.6,84.1L63.5,84.2L63.4,84.3L61.7,88.7L62.4,89.4L62.6,91.2L62.6,91.4L62.6,91.5L62.5,91.7L62.5,91.6L60.3,91.0L56.2,100.0L56.1,100.0L56.1,99.9L54.3,97.9L52.3,95.1L51.1,95.3L50.9,95.2L51.1,94.7L46.7,91.5L43.6,90.2L41.9,86.9L39.7,86.0L38.5,83.7L35.0,85.7L34.7,84.8L35.1,84.7L37.8,82.0L36.3,81.8L33.7,78.9L31.4,78.8L29.4,77.1L29.1,71.2L27.8,69.3L27.0,70.1L24.2,67.9L25.0,65.6L22.6,61.7L24.7,62.9L24.2,60.6L25.0,58.3L26.3,57.4L25.8,55.1L26.9,53.6L30.8,51.9L29.5,50.4L31.3,49.0L33.3,49.3L34.1,51.3L36.5,54.8L38.8,55.8L38.8,52.9L41.4,57.1L46.2,58.9L51.1,64.1L51.9,69.6L55.9,76.0L56.2,77.2L60.5,79.1L60.9,79.0Z M39.8,48.2L37.7,51.2L36.2,49.5L34.2,48.8L33.4,46.8L33.5,46.6L34.8,46.7L35.6,45.9L37.2,44.9L37.1,44.6L37.2,44.5L39.4,46.7L40.2,48.0L39.8,48.2Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M285.3,212.8L282.7,213.2L281.7,211.3L283.0,205.8L285.5,202.3L287.2,204.9L285.3,212.8Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M71.2,55.2L64.8,51.2L62.2,52.9L61.7,54.1L63.3,56.2L62.3,57.6L61.2,55.7L59.5,55.7L56.1,53.7L57.5,48.4L61.0,47.7L60.0,43.2L62.4,41.8L60.7,43.6L59.0,41.6L53.6,42.6L53.3,42.7L52.6,41.1L51.8,39.8L51.8,39.4L52.0,38.9L52.2,38.9L58.6,39.1L61.6,34.2L61.7,30.3L60.0,28.0L59.8,28.1L59.7,28.0L56.1,25.6L56.0,23.5L55.0,20.6L54.9,20.5L55.0,20.4L55.6,19.1L55.6,18.6L56.1,18.0L55.9,17.8L56.5,17.4L57.4,17.4L57.9,17.3L58.6,17.2L58.7,17.1L58.8,17.2L59.0,17.8L64.5,16.7L64.9,17.2L68.4,14.1L68.6,13.9L68.7,13.9L72.7,20.6L74.9,27.3L78.7,28.5L78.9,28.8L78.9,28.9L82.0,31.9L79.3,36.3L79.8,46.7L80.6,46.7L81.7,51.5L79.5,52.4L77.6,55.1L72.9,54.0L71.3,55.2L71.2,55.2Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M510.9,42.7L507.1,39.2L508.0,38.1L510.0,38.5L510.9,42.7Z M294.2,-159.7L303.0,-157.9L309.8,-156.2L340.3,-146.1L346.2,-143.7L359.6,-137.9L374.4,-130.5L392.6,-120.1L396.6,-117.6L408.0,-108.3L406.3,-106.6L395.7,-105.9L383.7,-106.3L381.4,-106.1L375.6,-103.4L372.6,-108.1L374.7,-109.6L369.4,-107.5L364.1,-113.7L355.7,-122.2L348.6,-128.6L338.7,-136.3L330.4,-141.8L319.2,-148.4L310.0,-153.1L299.0,-157.9L294.6,-158.4L294.2,-159.7Z M356.5,-80.1L359.3,-83.8L360.9,-84.0L358.6,-80.6L356.5,-80.1Z M362.8,-41.2L364.8,-41.3L366.9,-37.5L363.9,-38.3L362.8,-41.2Z M351.0,-75.2L351.4,-76.9L352.9,-77.1L353.6,-75.6L352.9,-73.7L351.0,-75.2Z M336.3,-15.2L338.6,-19.0L339.4,-17.3L337.5,-14.6L336.3,-15.2Z M307.8,-43.6L306.9,-46.9L308.7,-48.3L307.9,-50.9L308.5,-54.3L307.9,-57.6L307.9,-61.9L311.5,-62.4L340.8,-64.8L346.9,-64.9L345.3,-68.4L349.9,-71.6L348.1,-73.3L344.9,-74.8L348.3,-79.6L351.3,-82.3L353.4,-85.1L353.3,-87.2L358.2,-87.4L359.2,-86.8L357.5,-83.1L354.7,-84.3L352.9,-81.4L353.1,-80.0L351.1,-80.1L348.6,-78.4L348.0,-76.2L350.0,-76.5L350.6,-74.9L348.1,-74.2L349.5,-72.9L351.0,-74.4L349.2,-67.2L347.3,-68.2L349.0,-66.1L348.5,-64.4L349.6,-60.3L347.9,-54.9L346.6,-55.3L348.6,-51.6L351.0,-51.7L356.3,-46.0L354.3,-44.6L350.1,-46.2L348.6,-47.9L348.8,-50.2L347.5,-47.8L349.5,-45.5L353.6,-43.3L356.0,-40.7L359.0,-40.9L361.7,-38.7L364.9,-34.2L366.7,-32.8L369.5,-28.3L370.1,-28.6L372.3,-25.2L371.5,-25.0L372.1,-21.3L373.7,-19.6L373.7,-16.8L372.0,-19.4L370.8,-23.7L369.4,-24.6L367.5,-28.1L365.5,-29.8L358.5,-34.4L359.0,-31.2L360.9,-29.9L359.2,-29.3L358.8,-26.6L359.7,-24.7L357.7,-25.6L353.1,-25.8L354.1,-24.3L351.6,-21.0L349.7,-22.1L348.7,-21.2L344.8,-22.0L341.8,-24.6L339.4,-30.8L338.0,-32.3L333.4,-32.9L335.2,-29.2L334.8,-26.1L329.1,-23.2L326.1,-29.2L327.6,-29.7L328.5,-32.6L327.5,-33.5L324.4,-33.8L323.9,-31.3L319.7,-29.7L316.0,-29.5L315.1,-33.2L309.8,-38.6L308.3,-39.1L306.2,-42.5L307.8,-43.6Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M127.5,131.5L127.2,131.0L127.1,130.5L127.5,131.5Z M130.3,122.4L130.4,122.3L129.5,123.4L129.6,126.9L134.1,130.0L129.5,131.0L127.5,129.9L127.4,129.9L127.2,129.9L127.1,126.4L123.1,126.7L122.7,128.1L116.1,129.4L117.0,132.4L114.2,137.4L113.9,137.6L114.0,137.5L113.2,136.9L112.3,136.1L111.7,135.7L110.8,135.4L110.9,135.0L104.6,120.4L105.2,115.4L101.3,111.7L102.1,109.5L99.2,105.0L99.3,106.0L96.3,105.0L94.7,105.4L93.6,107.6L91.9,106.2L91.3,105.7L91.7,104.9L99.3,92.9L106.0,94.6L109.3,102.9L110.1,106.9L113.1,108.0L116.0,109.8L117.2,109.8L119.1,114.0L117.2,117.5L118.0,117.9L117.8,121.7L121.8,124.9L124.0,123.5L130.0,122.4L130.3,122.4Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M237.7,222.0L233.1,224.3L233.4,225.1L229.2,232.1L233.6,238.2L237.7,241.8L238.6,242.0L241.8,245.6L243.8,251.4L244.4,254.8L242.9,261.1L233.4,267.0L230.3,266.5L231.7,268.8L226.3,271.1L226.6,267.3L225.1,265.3L224.7,265.0L228.5,263.0L230.0,262.8L230.8,260.1L232.3,260.1L236.5,257.8L237.2,252.9L236.8,248.6L236.8,248.4L236.7,247.9L235.3,244.2L236.2,243.2L232.9,241.0L232.8,240.1L227.5,234.5L227.3,233.2L222.8,230.9L226.6,228.0L224.5,226.4L224.4,224.9L219.0,223.4L219.3,221.5L216.5,219.1L216.3,218.7L216.4,218.6L221.8,217.3L222.8,218.2L226.2,216.0L233.4,217.2L233.2,220.2L237.9,222.0L237.7,222.0Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M24.2,96.1L23.4,96.8L22.9,97.6L22.2,98.1L21.9,98.3L21.8,98.2L21.6,96.7L24.4,95.3L24.5,95.5L24.2,96.1Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/><path d="M36.6,190.9L35.1,191.4L34.3,193.3L22.6,191.4L20.8,192.1L14.8,190.4L11.3,188.6L4.3,187.3L3.4,185.9L3.0,183.0L4.9,175.9L4.6,174.1L6.5,171.5L7.0,170.2L9.8,167.4L10.8,167.3L18.7,174.9L20.2,177.4L22.4,177.3L25.7,175.5L29.5,175.9L37.8,179.8L38.6,180.1L38.5,180.6L38.3,188.0L38.5,188.3L38.5,191.2L36.6,190.9Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M249.0,227.3L247.4,232.5L244.1,234.5L241.0,233.4L242.6,228.6L245.3,227.7L249.0,227.3Z M299.1,128.6L299.0,128.5L296.8,128.3L295.8,130.9L292.9,133.1L293.8,134.9L290.8,135.1L288.1,138.4L285.6,140.9L284.3,143.0L284.2,143.0L280.7,145.2L277.7,148.5L275.7,147.3L277.6,143.0L274.3,141.5L272.7,144.5L269.8,146.9L269.6,148.3L265.4,150.1L265.1,151.2L266.6,153.7L269.6,153.8L270.0,156.6L272.6,156.8L274.0,154.7L276.2,153.9L281.4,154.2L281.2,156.1L276.8,158.4L276.1,160.2L274.8,160.2L272.2,166.2L275.0,167.3L278.8,172.4L279.0,173.8L282.8,176.5L278.9,176.5L282.5,178.5L283.5,180.0L282.4,182.9L284.8,183.9L284.7,186.9L283.4,186.7L284.2,190.4L281.8,192.2L279.5,198.0L278.1,197.4L277.4,200.8L278.2,200.5L278.8,203.0L276.6,204.3L275.9,206.4L273.1,207.4L273.9,208.1L271.4,210.6L264.9,215.3L261.1,216.2L260.9,216.4L260.3,216.4L260.2,216.4L259.9,216.6L259.6,216.6L257.7,215.2L257.3,215.3L258.3,217.9L258.2,217.8L258.1,217.9L258.1,218.0L258.1,218.0L258.1,218.0L256.6,218.1L254.9,220.0L252.5,219.9L249.2,221.4L246.2,224.1L247.5,225.4L246.1,226.5L243.9,221.1L240.8,221.4L239.7,220.4L238.2,221.9L237.9,222.0L233.2,220.2L233.4,217.2L226.2,216.0L222.8,218.2L221.8,217.3L216.4,218.6L216.3,218.7L216.1,218.6L214.9,218.2L215.0,223.2L212.7,222.0L212.5,221.8L212.6,221.7L210.8,222.0L208.1,220.9L208.2,220.0L205.8,219.4L205.7,215.5L204.2,212.9L204.5,211.6L202.2,211.3L200.0,212.1L199.8,209.7L204.6,201.8L204.5,197.9L202.6,195.4L202.4,195.3L202.5,195.3L204.5,194.8L205.6,193.1L206.3,188.2L206.2,185.6L204.8,180.6L202.5,178.2L201.3,178.3L198.1,181.0L194.6,180.5L192.1,176.8L188.1,176.7L184.4,175.5L182.0,172.9L178.2,171.6L177.0,169.8L177.8,166.2L177.0,164.0L177.8,161.3L174.6,159.3L167.3,159.1L166.5,160.2L158.6,160.3L155.4,158.2L152.1,159.2L148.4,157.4L145.9,160.9L142.9,161.1L142.7,161.2L143.0,161.0L141.6,158.9L141.3,156.1L141.0,155.0L141.0,155.0L140.9,155.0L140.7,155.0L139.9,154.7L139.4,154.5L138.3,153.7L138.0,153.4L137.9,153.3L136.6,152.3L136.5,148.9L133.3,145.9L133.1,145.9L133.0,145.9L132.7,145.2L133.4,145.1L134.2,145.5L134.3,145.5L134.4,145.5L135.7,141.0L133.0,139.1L133.6,136.0L133.6,135.8L133.9,135.8L138.4,133.1L142.3,135.0L144.5,133.1L145.8,133.4L155.3,131.6L155.3,131.3L155.4,131.3L157.9,127.6L158.1,120.4L162.8,120.3L164.6,121.8L164.8,119.6L167.8,115.0L172.4,116.7L175.0,115.6L175.8,111.9L178.3,111.2L180.7,109.3L180.9,109.4L181.2,109.5L181.3,109.5L181.5,109.4L182.1,109.4L182.2,109.4L182.2,109.6L182.2,111.8L187.2,116.2L188.1,119.1L188.3,122.7L187.0,124.9L190.8,127.4L192.5,127.6L196.2,129.7L198.4,131.4L201.5,137.9L203.9,137.8L210.4,139.1L216.9,139.8L225.0,142.3L227.4,142.7L231.6,140.5L239.4,139.6L242.1,138.2L245.8,133.3L245.3,132.9L247.6,129.2L250.4,129.6L252.7,126.9L255.8,126.2L259.8,122.0L259.9,121.1L263.5,119.8L266.3,119.7L259.9,115.5L256.0,116.6L255.2,117.4L255.8,109.4L255.9,108.8L256.5,109.0L259.1,109.5L262.2,106.8L261.7,105.5L263.0,100.5L264.2,98.8L263.2,94.2L266.7,92.2L274.7,92.1L278.4,96.2L279.9,98.6L283.7,103.7L289.0,103.8L291.6,105.2L293.9,108.6L297.5,107.3L298.6,105.2L300.8,103.3L302.3,104.4L302.7,116.5L299.4,117.0L298.5,118.5L300.1,126.5L299.2,128.4L299.1,128.6Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/CAF.svg b/plugins/UserCountryMap/svg/CAF.svg
index 6dfc750e2a..639ddc7794 100644
--- a/plugins/UserCountryMap/svg/CAF.svg
+++ b/plugins/UserCountryMap/svg/CAF.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="4.9788695337" lon0="21.365218708"/><bbox h="127.16" w="179.48" x="904.79" y="916.08"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M279,25L270,23L259,28L255,30L249,33L248,36L248,38L247,43L242,47L239,52L235,52L228,60L221,69L209,77L201,77L197,78L188,80L174,80L169,82L167,85L173,91L167,98L163,102L159,105L158,108L134,110L131,110L109,120L107,122L101,117L99,114L94,118L84,121L79,124L72,123L69,123L66,127L62,130L56,144L50,151L48,156L46,159L42,161L38,165L43,171L43,181L41,188L44,191L45,205L54,214L55,224L55,226L67,241L76,250L80,252L84,257L84,261L86,273L88,275L90,271L96,259L96,249L99,241L120,237L124,235L137,238L144,239L145,240L150,238L154,237L156,240L158,241L158,235L159,227L158,222L157,218L158,216L161,214L165,210L171,200L179,195L184,193L193,194L205,202L210,206L217,213L221,213L226,214L243,219L247,218L254,218L268,222L271,220L274,213L281,205L285,204L294,206L297,206L305,203L310,202L323,197L327,196L336,198L342,197L345,197L354,189L358,187L377,191L390,194L397,194L401,191L404,190L412,193L410,191L408,188L407,178L403,173L393,167L386,165L380,154L382,149L374,142L372,139L368,136L353,129L348,122L349,119L348,115L343,110L338,105L335,104L322,101L320,99L319,96L320,92L319,91L318,90L315,89L304,88L300,86L301,82L298,79L298,77L302,73L303,71L303,57L300,51L292,38L283,29L281,25L279,25Z " data-iso="CAF"/><path d="M4,278L11,278L38,278L41,277L46,281L50,281L50,283L58,282L63,285L71,285L75,286L82,290L84,293L86,291L84,283L88,276L88,275L86,273L84,261L84,257L80,252L76,250L67,241L55,226L55,224L54,214L45,205L44,191L41,188L43,181L43,171L38,165L42,161L46,159L48,156L50,151L56,144L62,130L66,127L69,123L70,120L71,115L68,113L62,99L59,92L51,85L48,83L36,73L35,71L27,62L26,59L31,53L34,51L38,51L51,52L58,52L71,52L75,51L64,40L62,37L58,26L57,18L60,6L59,0L44,0L45,6L34,13L28,15L25,17L19,25L14,32L11,45L7,49L5,60L0,64L0,275L2,275L3,276L4,278Z " data-iso="CMR"/><path d="M412,193L404,190L401,191L397,194L390,194L377,191L358,187L354,189L345,197L342,197L336,198L327,196L323,197L310,202L305,203L297,206L294,206L285,204L281,205L274,213L271,220L268,222L254,218L247,218L243,219L226,214L221,213L217,213L210,206L205,202L193,194L184,193L179,195L171,200L165,210L161,214L158,216L157,218L158,222L159,227L158,235L158,241L158,246L155,257L146,272L142,283L141,299L450,299L450,210L442,215L435,215L425,207L420,200L415,197L413,195L412,193Z " data-iso="COD"/><path d="M158,241L156,240L154,237L150,238L145,240L144,239L137,238L124,235L120,237L99,241L96,249L96,259L90,271L88,275L88,276L84,283L86,291L84,293L82,290L75,286L71,285L63,285L58,282L50,283L50,281L46,281L41,277L38,278L11,278L4,278L4,280L0,289L0,293L2,299L141,299L142,283L146,272L155,257L158,246L158,241Z " data-iso="COG"/><path d="M4,278L3,276L2,275L0,275L0,299L2,299L0,293L0,289L4,280L4,278Z " data-iso="GAB"/><path d="M0,0L0,64L5,60L7,49L11,45L14,32L19,25L25,17L28,15L34,13L45,6L44,0L0,0Z " data-iso="NGA"/><path d="M281,25L283,29L292,38L300,51L303,57L303,71L302,73L298,77L298,79L301,82L300,86L304,88L315,89L318,90L318,90L318,89L322,86L329,84L330,79L332,74L332,71L336,65L336,58L342,50L342,44L344,43L350,42L364,39L368,46L375,52L386,65L389,66L392,65L401,62L422,63L429,70L450,70L450,0L272,0L273,6L278,11L282,13L281,22L281,25Z " data-iso="SDN"/><path d="M318,90L318,90L319,91L320,92L319,96L320,99L322,101L335,104L338,105L343,110L348,115L349,119L348,122L353,129L368,136L372,139L374,142L382,149L380,154L386,165L393,167L403,173L407,178L408,188L410,191L412,193L413,195L415,197L420,200L425,207L435,215L442,215L450,210L450,70L429,70L422,63L401,62L392,65L389,66L386,65L375,52L368,46L364,39L350,42L344,43L342,44L342,50L336,58L336,65L332,71L332,74L330,79L329,84L322,86L318,89L318,90Z " data-iso="SDS"/><path d="M69,123L72,123L79,124L84,121L94,118L99,114L101,117L107,122L109,120L131,110L134,110L158,108L159,105L163,102L167,98L173,91L167,85L169,82L174,80L188,80L197,78L201,77L209,77L221,69L228,60L235,52L239,52L242,47L247,43L248,38L248,36L249,33L255,30L259,28L270,23L279,25L281,25L281,22L282,13L278,11L273,6L272,0L59,0L60,6L57,18L58,26L62,37L64,40L75,51L71,52L58,52L51,52L38,51L34,51L31,53L26,59L27,62L35,71L36,73L48,83L51,85L59,92L62,99L68,113L71,115L70,120L69,123Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M215,213L221,213L222,213L229,214L232,217L238,217L242,218L246,217L255,219L256,219L257,219L258,215L260,211L254,208L251,206L249,205L251,195L250,195L253,190L253,184L253,183L251,182L249,181L246,181L246,182L245,183L241,180L234,178L231,178L228,176L228,180L226,185L226,190L224,193L225,197L224,202L216,207L212,210L215,213Z " data-fips="CT02" data-fips-="" data-iso3="CAF" data-name="Basse-Kotto"/><path d="M113,196L113,196L107,200L107,206L113,215L109,213L105,215L104,218L105,219L109,226L118,229L123,235L124,234L130,236L134,237L136,239L142,238L144,239L146,241L154,236L157,241L159,241L158,230L158,229L150,223L150,221L149,217L144,212L142,213L134,210L128,209L125,202L122,201L115,195L113,196Z " data-fips="CT07" data-fips-="" data-iso3="CAF" data-name="Lobaye"/><path d="M98,188L85,194L82,194L81,193L78,194L76,189L74,189L71,195L68,194L66,196L58,196L55,197L52,196L44,195L44,196L45,205L47,209L55,216L57,222L59,223L55,224L56,228L59,232L61,235L66,232L70,232L71,230L79,226L85,225L95,230L100,225L101,220L104,218L104,218L105,215L109,213L113,215L107,206L107,200L113,196L113,196L112,194L113,193L113,189L110,186L102,186L98,188Z " data-fips="CT04" data-fips-="" data-iso3="CAF" data-name="Mambr-Kad"/><path d="M104,218L104,218L101,220L100,225L95,230L85,225L79,226L71,230L70,232L66,232L61,235L76,251L80,251L84,256L85,258L84,263L85,263L85,268L86,272L88,276L95,262L96,250L98,245L102,239L106,239L109,238L111,239L117,238L122,235L123,235L118,229L109,226L105,219L104,218Z " data-fips="CT16" data-fips-="" data-iso3="CAF" data-name="Sangha-Mbar"/><path d="M49,154L46,159L39,163L37,165L41,169L43,171L42,184L41,188L44,192L44,195L44,195L52,196L55,197L58,196L66,196L68,194L71,195L74,189L76,189L78,194L81,193L82,194L85,194L98,188L98,186L97,184L98,181L98,180L97,179L94,175L89,170L86,173L83,173L78,169L77,163L75,159L77,156L76,155L70,158L65,157L60,145L52,147L49,154Z " data-fips="CT09" data-fips-="" data-iso3="CAF" data-name="Nana-Mambr"/><path d="M52,147L60,145L65,157L70,158L76,155L77,156L75,159L77,163L78,169L83,173L86,173L89,170L94,175L97,179L98,180L99,179L103,175L105,174L111,172L111,171L111,171L110,169L109,164L111,158L114,156L113,153L110,154L107,151L105,147L103,138L105,134L107,126L107,122L107,122L106,122L101,117L99,113L95,115L94,119L85,121L81,124L78,125L74,123L68,123L66,127L61,131L57,141L52,146L52,147Z " data-fips="CT13" data-fips-="" data-iso3="CAF" data-name="Ouham-Pend"/><path d="M222,68L213,75L211,77L199,77L196,79L193,79L182,80L178,80L171,81L168,83L167,85L172,91L172,91L172,91L172,92L172,93L173,93L174,98L176,100L180,106L179,115L187,120L186,122L192,124L192,126L195,128L196,131L203,136L203,136L203,136L206,138L211,138L215,136L220,132L224,131L231,119L231,118L231,116L231,111L238,110L241,102L250,100L252,103L256,103L256,97L255,93L259,92L267,93L267,92L267,91L266,90L262,89L260,88L258,81L254,77L251,73L249,69L242,63L242,60L240,59L235,64L229,65L225,69L222,68L222,68Z " data-fips="CT01" data-fips-="" data-iso3="CAF" data-name="Bamingui-Bangoran"/><path d="M203,136L196,131L195,128L192,126L192,124L186,122L187,120L179,115L180,106L176,100L174,98L173,93L172,93L172,93L170,102L171,108L170,112L169,116L164,120L162,122L165,131L163,133L160,141L162,145L166,148L163,151L163,153L169,152L171,152L174,155L185,153L191,154L192,154L203,139L203,137L203,136L203,136Z " data-fips="CT15" data-fips-="" data-iso3="CAF" data-name="Nana-Grbizi"/><path d="M163,153L162,153L166,158L164,164L160,167L159,174L159,175L161,177L166,179L166,182L170,186L169,192L172,196L173,199L173,198L181,193L186,192L194,195L194,195L196,193L199,184L184,182L184,180L185,180L188,175L187,174L187,170L192,167L193,165L195,158L191,155L191,154L185,153L174,155L171,152L169,152L163,153Z " data-fips="CT06" data-fips-="" data-iso3="CAF" data-name="Kmo"/><path d="M231,118L231,119L224,131L220,132L215,136L211,138L206,138L203,136L203,136L203,137L203,139L192,154L191,154L191,155L195,158L193,165L192,167L187,170L187,174L188,175L185,180L184,180L184,182L199,184L196,193L194,195L195,196L206,203L207,203L212,208L211,210L212,210L216,207L224,202L225,197L224,193L226,190L226,185L228,180L228,176L231,178L234,178L241,180L245,183L246,182L246,181L247,179L252,178L253,177L254,170L253,167L249,162L251,157L249,151L248,151L246,144L246,142L245,139L244,131L239,129L238,123L232,119L231,118Z " data-fips="CT11" data-fips-="" data-iso3="CAF" data-name="Ouaka"/><path d="M172,93L172,92L172,91L172,91L172,91L163,102L162,103L156,109L143,109L136,110L130,111L126,113L124,112L120,114L116,118L108,120L108,122L107,122L107,126L105,134L103,138L105,147L107,151L110,154L113,153L114,156L111,158L109,164L110,169L111,171L111,171L111,173L115,176L129,175L135,172L141,173L152,175L152,180L153,180L159,175L159,175L159,174L160,167L164,164L166,158L162,153L163,153L163,151L166,148L162,145L160,141L163,133L165,131L162,122L164,120L169,116L170,112L171,108L170,102L172,93L172,93Z " data-fips="CT12" data-fips-="" data-iso3="CAF" data-name="Ouham"/><path d="M222,68L225,69L229,65L235,64L240,59L242,60L242,63L249,69L251,73L254,77L258,81L260,88L262,89L266,90L267,91L267,92L268,92L271,92L275,90L285,88L286,88L288,83L293,80L294,79L298,76L298,76L301,75L303,72L302,68L304,62L302,54L293,39L288,34L285,32L281,26L276,24L270,23L266,24L260,28L257,27L256,30L251,32L247,43L246,45L242,46L238,52L235,52L229,59L229,58L223,67L222,69L222,68Z " data-fips="CT14" data-fips-="" data-iso3="CAF" data-name="Vakaga"/><path d="M298,76L294,79L293,80L288,83L286,88L285,88L275,90L271,92L268,92L267,92L267,93L259,92L255,93L256,97L256,103L252,103L250,100L241,102L238,110L231,111L231,116L231,118L232,119L238,123L239,129L244,131L245,139L246,142L246,144L248,151L249,151L251,157L249,162L253,167L254,170L253,177L252,178L247,179L246,181L249,181L251,182L253,183L253,183L259,178L258,176L258,170L260,168L264,166L265,167L269,165L272,161L280,160L284,163L294,164L293,163L297,161L298,159L321,146L322,145L323,140L329,138L328,130L331,124L328,120L328,118L327,111L327,108L321,102L321,102L317,100L317,98L320,90L304,89L299,88L301,82L298,81L298,76L298,76Z " data-fips="CT03" data-fips-="" data-iso3="CAF" data-name="Haute-Kotto"/><path d="M321,102L327,108L327,111L328,118L328,120L331,124L328,130L329,138L323,140L322,145L321,146L329,154L331,156L334,155L336,154L339,153L343,155L345,159L339,162L342,165L346,168L347,169L346,173L344,177L343,182L339,185L339,187L331,191L328,194L328,194L333,199L338,198L345,198L351,196L353,193L353,188L354,187L360,186L361,187L366,189L369,191L377,189L378,191L385,193L385,194L392,193L397,195L399,192L403,190L412,192L409,189L407,183L407,177L404,173L401,173L397,170L396,170L395,168L392,167L390,167L384,165L385,159L380,156L379,154L382,148L379,147L374,143L371,138L359,132L358,131L353,129L351,126L348,124L347,122L350,116L349,113L343,112L337,105L331,103L329,103L326,102L322,102L321,102Z " data-fips="CT05" data-fips-="" data-iso3="CAF" data-name="Haut-Mbomou"/><path d="M321,146L298,159L297,161L293,163L294,164L284,163L280,160L272,161L269,165L265,167L264,166L260,168L258,170L258,176L259,178L253,183L253,183L253,184L253,190L250,195L251,195L249,205L251,206L254,208L260,211L258,215L257,219L258,219L265,222L268,222L274,215L273,212L276,212L279,205L282,204L282,202L288,205L290,205L294,207L298,207L302,205L317,199L318,199L325,195L325,193L327,193L328,194L331,191L339,187L339,185L343,182L344,177L346,173L347,169L346,168L342,165L339,162L345,159L343,155L339,153L336,154L334,155L331,156L329,154L321,146Z " data-fips="CT08" data-fips-="" data-iso3="CAF" data-name="Mbomou"/><path d="M111,171L111,172L105,174L103,175L99,179L98,180L98,181L97,184L98,186L98,188L102,186L110,186L113,189L113,193L112,194L113,196L115,195L122,201L125,202L128,209L134,210L142,213L144,212L149,217L150,221L150,223L158,229L158,229L159,226L159,222L156,217L157,215L161,215L163,213L164,209L170,203L172,199L173,199L172,196L169,192L170,186L166,182L166,179L161,177L159,175L159,175L153,180L152,180L152,175L141,173L135,172L129,175L115,176L111,173L111,171Z " data-fips="CT10" data-fips-="CT17|CT18" data-iso3="CAF" data-name="Bangui"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="4.9788695337" lon0="21.365218708"/><bbox h="127.16" w="179.48" x="904.79" y="916.08"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M279,25L270,23L259,28L255,30L249,33L248,36L248,38L247,43L242,47L239,52L235,52L228,60L221,69L209,77L201,77L197,78L188,80L174,80L169,82L167,85L173,91L167,98L163,102L159,105L158,108L134,110L131,110L109,120L107,122L101,117L99,114L94,118L84,121L79,124L72,123L69,123L66,127L62,130L56,144L50,151L48,156L46,159L42,161L38,165L43,171L43,181L41,188L44,191L45,205L54,214L55,224L55,226L67,241L76,250L80,252L84,257L84,261L86,273L88,275L90,271L96,259L96,249L99,241L120,237L124,235L137,238L144,239L145,240L150,238L154,237L156,240L158,241L158,235L159,227L158,222L157,218L158,216L161,214L165,210L171,200L179,195L184,193L193,194L205,202L210,206L217,213L221,213L226,214L243,219L247,218L254,218L268,222L271,220L274,213L281,205L285,204L294,206L297,206L305,203L310,202L323,197L327,196L336,198L342,197L345,197L354,189L358,187L377,191L390,194L397,194L401,191L404,190L412,193L410,191L408,188L407,178L403,173L393,167L386,165L380,154L382,149L374,142L372,139L368,136L353,129L348,122L349,119L348,115L343,110L338,105L335,104L322,101L320,99L319,96L320,92L319,91L318,90L315,89L304,88L300,86L301,82L298,79L298,77L302,73L303,71L303,57L300,51L292,38L283,29L281,25L279,25Z " data-iso="CAF"/><path d="M4,278L11,278L38,278L41,277L46,281L50,281L50,283L58,282L63,285L71,285L75,286L82,290L84,293L86,291L84,283L88,276L88,275L86,273L84,261L84,257L80,252L76,250L67,241L55,226L55,224L54,214L45,205L44,191L41,188L43,181L43,171L38,165L42,161L46,159L48,156L50,151L56,144L62,130L66,127L69,123L70,120L71,115L68,113L62,99L59,92L51,85L48,83L36,73L35,71L27,62L26,59L31,53L34,51L38,51L51,52L58,52L71,52L75,51L64,40L62,37L58,26L57,18L60,6L59,0L44,0L45,6L34,13L28,15L25,17L19,25L14,32L11,45L7,49L5,60L0,64L0,275L2,275L3,276L4,278Z " data-iso="CMR"/><path d="M412,193L404,190L401,191L397,194L390,194L377,191L358,187L354,189L345,197L342,197L336,198L327,196L323,197L310,202L305,203L297,206L294,206L285,204L281,205L274,213L271,220L268,222L254,218L247,218L243,219L226,214L221,213L217,213L210,206L205,202L193,194L184,193L179,195L171,200L165,210L161,214L158,216L157,218L158,222L159,227L158,235L158,241L158,246L155,257L146,272L142,283L141,299L450,299L450,210L442,215L435,215L425,207L420,200L415,197L413,195L412,193Z " data-iso="COD"/><path d="M158,241L156,240L154,237L150,238L145,240L144,239L137,238L124,235L120,237L99,241L96,249L96,259L90,271L88,275L88,276L84,283L86,291L84,293L82,290L75,286L71,285L63,285L58,282L50,283L50,281L46,281L41,277L38,278L11,278L4,278L4,280L0,289L0,293L2,299L141,299L142,283L146,272L155,257L158,246L158,241Z " data-iso="COG"/><path d="M4,278L3,276L2,275L0,275L0,299L2,299L0,293L0,289L4,280L4,278Z " data-iso="GAB"/><path d="M0,0L0,64L5,60L7,49L11,45L14,32L19,25L25,17L28,15L34,13L45,6L44,0L0,0Z " data-iso="NGA"/><path d="M281,25L283,29L292,38L300,51L303,57L303,71L302,73L298,77L298,79L301,82L300,86L304,88L315,89L318,90L318,90L318,89L322,86L329,84L330,79L332,74L332,71L336,65L336,58L342,50L342,44L344,43L350,42L364,39L368,46L375,52L386,65L389,66L392,65L401,62L422,63L429,70L450,70L450,0L272,0L273,6L278,11L282,13L281,22L281,25Z " data-iso="SDN"/><path d="M318,90L318,90L319,91L320,92L319,96L320,99L322,101L335,104L338,105L343,110L348,115L349,119L348,122L353,129L368,136L372,139L374,142L382,149L380,154L386,165L393,167L403,173L407,178L408,188L410,191L412,193L413,195L415,197L420,200L425,207L435,215L442,215L450,210L450,70L429,70L422,63L401,62L392,65L389,66L386,65L375,52L368,46L364,39L350,42L344,43L342,44L342,50L336,58L336,65L332,71L332,74L330,79L329,84L322,86L318,89L318,90Z " data-iso="SSD"/><path d="M69,123L72,123L79,124L84,121L94,118L99,114L101,117L107,122L109,120L131,110L134,110L158,108L159,105L163,102L167,98L173,91L167,85L169,82L174,80L188,80L197,78L201,77L209,77L221,69L228,60L235,52L239,52L242,47L247,43L248,38L248,36L249,33L255,30L259,28L270,23L279,25L281,25L281,22L282,13L278,11L273,6L272,0L59,0L60,6L57,18L58,26L62,37L64,40L75,51L71,52L58,52L51,52L38,51L34,51L31,53L26,59L27,62L35,71L36,73L48,83L51,85L59,92L62,99L68,113L71,115L70,120L69,123Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M215,213L221,213L222,213L229,214L232,217L238,217L242,218L246,217L255,219L256,219L257,219L258,215L260,211L254,208L251,206L249,205L251,195L250,195L253,190L253,184L253,183L251,182L249,181L246,181L246,182L245,183L241,180L234,178L231,178L228,176L228,180L226,185L226,190L224,193L225,197L224,202L216,207L212,210L215,213Z " data-fips="CT02" data-fips-="" data-iso3="CAF" data-name="Basse-Kotto"/><path d="M113,196L113,196L107,200L107,206L113,215L109,213L105,215L104,218L105,219L109,226L118,229L123,235L124,234L130,236L134,237L136,239L142,238L144,239L146,241L154,236L157,241L159,241L158,230L158,229L150,223L150,221L149,217L144,212L142,213L134,210L128,209L125,202L122,201L115,195L113,196Z " data-fips="CT07" data-fips-="" data-iso3="CAF" data-name="Lobaye"/><path d="M98,188L85,194L82,194L81,193L78,194L76,189L74,189L71,195L68,194L66,196L58,196L55,197L52,196L44,195L44,196L45,205L47,209L55,216L57,222L59,223L55,224L56,228L59,232L61,235L66,232L70,232L71,230L79,226L85,225L95,230L100,225L101,220L104,218L104,218L105,215L109,213L113,215L107,206L107,200L113,196L113,196L112,194L113,193L113,189L110,186L102,186L98,188Z " data-fips="CT04" data-fips-="" data-iso3="CAF" data-name="Mambr-Kad"/><path d="M104,218L104,218L101,220L100,225L95,230L85,225L79,226L71,230L70,232L66,232L61,235L76,251L80,251L84,256L85,258L84,263L85,263L85,268L86,272L88,276L95,262L96,250L98,245L102,239L106,239L109,238L111,239L117,238L122,235L123,235L118,229L109,226L105,219L104,218Z " data-fips="CT16" data-fips-="" data-iso3="CAF" data-name="Sangha-Mbar"/><path d="M49,154L46,159L39,163L37,165L41,169L43,171L42,184L41,188L44,192L44,195L44,195L52,196L55,197L58,196L66,196L68,194L71,195L74,189L76,189L78,194L81,193L82,194L85,194L98,188L98,186L97,184L98,181L98,180L97,179L94,175L89,170L86,173L83,173L78,169L77,163L75,159L77,156L76,155L70,158L65,157L60,145L52,147L49,154Z " data-fips="CT09" data-fips-="" data-iso3="CAF" data-name="Nana-Mambr"/><path d="M52,147L60,145L65,157L70,158L76,155L77,156L75,159L77,163L78,169L83,173L86,173L89,170L94,175L97,179L98,180L99,179L103,175L105,174L111,172L111,171L111,171L110,169L109,164L111,158L114,156L113,153L110,154L107,151L105,147L103,138L105,134L107,126L107,122L107,122L106,122L101,117L99,113L95,115L94,119L85,121L81,124L78,125L74,123L68,123L66,127L61,131L57,141L52,146L52,147Z " data-fips="CT13" data-fips-="" data-iso3="CAF" data-name="Ouham-Pend"/><path d="M222,68L213,75L211,77L199,77L196,79L193,79L182,80L178,80L171,81L168,83L167,85L172,91L172,91L172,91L172,92L172,93L173,93L174,98L176,100L180,106L179,115L187,120L186,122L192,124L192,126L195,128L196,131L203,136L203,136L203,136L206,138L211,138L215,136L220,132L224,131L231,119L231,118L231,116L231,111L238,110L241,102L250,100L252,103L256,103L256,97L255,93L259,92L267,93L267,92L267,91L266,90L262,89L260,88L258,81L254,77L251,73L249,69L242,63L242,60L240,59L235,64L229,65L225,69L222,68L222,68Z " data-fips="CT01" data-fips-="" data-iso3="CAF" data-name="Bamingui-Bangoran"/><path d="M203,136L196,131L195,128L192,126L192,124L186,122L187,120L179,115L180,106L176,100L174,98L173,93L172,93L172,93L170,102L171,108L170,112L169,116L164,120L162,122L165,131L163,133L160,141L162,145L166,148L163,151L163,153L169,152L171,152L174,155L185,153L191,154L192,154L203,139L203,137L203,136L203,136Z " data-fips="CT15" data-fips-="" data-iso3="CAF" data-name="Nana-Grbizi"/><path d="M163,153L162,153L166,158L164,164L160,167L159,174L159,175L161,177L166,179L166,182L170,186L169,192L172,196L173,199L173,198L181,193L186,192L194,195L194,195L196,193L199,184L184,182L184,180L185,180L188,175L187,174L187,170L192,167L193,165L195,158L191,155L191,154L185,153L174,155L171,152L169,152L163,153Z " data-fips="CT06" data-fips-="" data-iso3="CAF" data-name="Kmo"/><path d="M231,118L231,119L224,131L220,132L215,136L211,138L206,138L203,136L203,136L203,137L203,139L192,154L191,154L191,155L195,158L193,165L192,167L187,170L187,174L188,175L185,180L184,180L184,182L199,184L196,193L194,195L195,196L206,203L207,203L212,208L211,210L212,210L216,207L224,202L225,197L224,193L226,190L226,185L228,180L228,176L231,178L234,178L241,180L245,183L246,182L246,181L247,179L252,178L253,177L254,170L253,167L249,162L251,157L249,151L248,151L246,144L246,142L245,139L244,131L239,129L238,123L232,119L231,118Z " data-fips="CT11" data-fips-="" data-iso3="CAF" data-name="Ouaka"/><path d="M172,93L172,92L172,91L172,91L172,91L163,102L162,103L156,109L143,109L136,110L130,111L126,113L124,112L120,114L116,118L108,120L108,122L107,122L107,126L105,134L103,138L105,147L107,151L110,154L113,153L114,156L111,158L109,164L110,169L111,171L111,171L111,173L115,176L129,175L135,172L141,173L152,175L152,180L153,180L159,175L159,175L159,174L160,167L164,164L166,158L162,153L163,153L163,151L166,148L162,145L160,141L163,133L165,131L162,122L164,120L169,116L170,112L171,108L170,102L172,93L172,93Z " data-fips="CT12" data-fips-="" data-iso3="CAF" data-name="Ouham"/><path d="M222,68L225,69L229,65L235,64L240,59L242,60L242,63L249,69L251,73L254,77L258,81L260,88L262,89L266,90L267,91L267,92L268,92L271,92L275,90L285,88L286,88L288,83L293,80L294,79L298,76L298,76L301,75L303,72L302,68L304,62L302,54L293,39L288,34L285,32L281,26L276,24L270,23L266,24L260,28L257,27L256,30L251,32L247,43L246,45L242,46L238,52L235,52L229,59L229,58L223,67L222,69L222,68Z " data-fips="CT14" data-fips-="" data-iso3="CAF" data-name="Vakaga"/><path d="M298,76L294,79L293,80L288,83L286,88L285,88L275,90L271,92L268,92L267,92L267,93L259,92L255,93L256,97L256,103L252,103L250,100L241,102L238,110L231,111L231,116L231,118L232,119L238,123L239,129L244,131L245,139L246,142L246,144L248,151L249,151L251,157L249,162L253,167L254,170L253,177L252,178L247,179L246,181L249,181L251,182L253,183L253,183L259,178L258,176L258,170L260,168L264,166L265,167L269,165L272,161L280,160L284,163L294,164L293,163L297,161L298,159L321,146L322,145L323,140L329,138L328,130L331,124L328,120L328,118L327,111L327,108L321,102L321,102L317,100L317,98L320,90L304,89L299,88L301,82L298,81L298,76L298,76Z " data-fips="CT03" data-fips-="" data-iso3="CAF" data-name="Haute-Kotto"/><path d="M321,102L327,108L327,111L328,118L328,120L331,124L328,130L329,138L323,140L322,145L321,146L329,154L331,156L334,155L336,154L339,153L343,155L345,159L339,162L342,165L346,168L347,169L346,173L344,177L343,182L339,185L339,187L331,191L328,194L328,194L333,199L338,198L345,198L351,196L353,193L353,188L354,187L360,186L361,187L366,189L369,191L377,189L378,191L385,193L385,194L392,193L397,195L399,192L403,190L412,192L409,189L407,183L407,177L404,173L401,173L397,170L396,170L395,168L392,167L390,167L384,165L385,159L380,156L379,154L382,148L379,147L374,143L371,138L359,132L358,131L353,129L351,126L348,124L347,122L350,116L349,113L343,112L337,105L331,103L329,103L326,102L322,102L321,102Z " data-fips="CT05" data-fips-="" data-iso3="CAF" data-name="Haut-Mbomou"/><path d="M321,146L298,159L297,161L293,163L294,164L284,163L280,160L272,161L269,165L265,167L264,166L260,168L258,170L258,176L259,178L253,183L253,183L253,184L253,190L250,195L251,195L249,205L251,206L254,208L260,211L258,215L257,219L258,219L265,222L268,222L274,215L273,212L276,212L279,205L282,204L282,202L288,205L290,205L294,207L298,207L302,205L317,199L318,199L325,195L325,193L327,193L328,194L331,191L339,187L339,185L343,182L344,177L346,173L347,169L346,168L342,165L339,162L345,159L343,155L339,153L336,154L334,155L331,156L329,154L321,146Z " data-fips="CT08" data-fips-="" data-iso3="CAF" data-name="Mbomou"/><path d="M111,171L111,172L105,174L103,175L99,179L98,180L98,181L97,184L98,186L98,188L102,186L110,186L113,189L113,193L112,194L113,196L115,195L122,201L125,202L128,209L134,210L142,213L144,212L149,217L150,221L150,223L158,229L158,229L159,226L159,222L156,217L157,215L161,215L163,213L164,209L170,203L172,199L173,199L172,196L169,192L170,186L166,182L166,179L161,177L159,175L159,175L153,180L152,180L152,175L141,173L135,172L129,175L115,176L111,173L111,171Z " data-fips="CT10" data-fips-="CT17|CT18" data-iso3="CAF" data-name="Bangui"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/COD.svg b/plugins/UserCountryMap/svg/COD.svg
index 6e47ddd233..46aba0a25a 100644
--- a/plugins/UserCountryMap/svg/COD.svg
+++ b/plugins/UserCountryMap/svg/COD.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="1.31628947618" lon0="20.3145332978"/><bbox h="260.59" w="262.8" x="886.31" y="935.72"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M256,246L255,246L248,248L244,249L235,249L233,251L231,250L233,243L233,239L230,232L226,226L227,210L226,207L226,197L225,196L209,195L209,191L195,192L194,193L191,205L188,206L180,205L166,207L158,195L154,186L154,181L150,176L121,176L115,175L102,175L102,176L99,177L95,186L99,191L100,195L103,203L107,211L107,215L104,225L107,234L114,247L114,259L111,266L109,269L103,273L102,277L97,282L96,287L95,291L94,299L228,299L228,276L254,276L256,268L256,248L256,246Z M102,158L102,158L100,155L93,158L92,160L88,163L88,164L90,168L90,170L90,174L90,174L94,173L95,165L94,164L99,159L102,158L102,158Z " data-iso="AGO"/><path d="M349,126L343,126L340,131L333,132L330,129L328,130L328,131L328,131L331,136L330,145L333,153L333,155L337,155L341,153L346,146L348,143L353,136L349,127L349,126L349,126Z " data-iso="BDI"/><path d="M146,60L147,58L150,52L150,48L152,43L162,41L164,40L174,42L180,43L181,43L180,40L181,36L180,31L182,30L187,23L191,21L198,20L209,30L211,29L222,32L234,34L241,25L248,26L261,22L267,23L272,22L278,17L294,20L297,20L301,19L305,20L304,19L302,13L300,10L293,7L289,1L289,0L128,0L122,7L124,9L125,19L126,26L130,31L130,35L136,43L141,48L143,49L145,53L146,59L146,60Z " data-iso="CAF"/><path d="M39,24L44,27L45,34L49,36L52,36L58,48L56,56L56,59L57,61L59,61L74,61L78,61L78,60L81,60L103,60L105,61L105,62L109,62L122,62L124,61L132,63L134,65L138,65L146,68L145,64L146,60L146,60L146,59L145,53L143,49L141,48L136,43L130,35L130,31L126,26L125,19L124,9L122,7L128,0L78,0L54,0L45,8L42,18L39,24L39,24Z " data-iso="CMR"/><path d="M301,19L297,20L294,20L278,17L272,22L267,23L261,22L248,26L241,25L234,34L222,32L211,29L209,30L198,20L191,21L187,23L182,30L180,31L181,36L180,40L181,43L181,46L175,58L173,64L173,68L171,77L171,85L170,89L168,96L168,100L157,109L155,112L151,118L147,123L146,141L144,146L133,153L126,161L122,161L122,155L121,153L115,156L111,155L111,159L107,161L103,158L102,158L102,158L99,159L94,164L95,165L94,173L90,174L91,175L92,176L95,177L102,175L102,175L115,175L121,176L150,176L154,181L154,186L158,195L166,207L180,205L188,206L191,205L194,193L195,192L209,191L209,195L225,196L226,197L226,207L227,210L226,226L230,232L233,239L233,243L231,250L233,251L235,249L244,249L248,248L255,246L256,246L256,246L261,250L261,253L275,251L274,253L277,259L294,262L295,262L300,256L301,259L307,266L317,269L321,274L325,282L332,280L335,283L336,282L337,264L333,265L333,268L326,267L319,260L318,258L320,245L321,243L321,232L318,224L326,212L349,209L351,209L351,207L343,190L341,189L334,177L336,173L332,163L333,156L333,155L333,153L330,145L331,136L328,131L328,131L326,130L325,127L329,123L335,112L336,112L336,111L338,91L341,85L341,83L355,68L360,62L358,60L352,57L353,52L354,43L353,43L353,42L349,40L349,38L344,36L337,27L330,30L323,28L318,31L316,31L305,21L305,20L301,19Z " data-iso="COD"/><path d="M180,43L174,42L164,40L162,41L152,43L150,48L150,52L147,58L146,60L146,60L145,64L146,68L138,65L134,65L132,63L124,61L122,62L109,62L105,62L105,63L104,75L113,72L119,74L121,80L119,85L117,85L114,90L114,96L116,96L122,101L121,106L122,112L118,126L115,128L112,123L108,126L101,125L98,120L93,125L88,126L81,126L81,133L82,133L86,140L85,145L77,144L75,148L78,151L84,157L85,160L87,163L88,163L92,160L93,158L100,155L102,158L102,158L103,158L107,161L111,159L111,155L115,156L121,153L122,155L122,161L126,161L133,153L144,146L146,141L147,123L151,118L155,112L157,109L168,100L168,96L170,89L171,85L171,77L173,68L173,64L175,58L181,46L181,43L180,43Z " data-iso="COG"/><path d="M415,13L415,14L422,16L422,23L427,28L437,28L450,36L450,0L408,0L411,6L411,8L415,13L415,13Z " data-iso="ETH"/><path d="M105,61L103,60L81,60L78,60L78,61L78,65L78,78L57,78L53,77L53,78L54,81L49,83L56,92L51,90L49,88L49,97L44,102L41,101L50,118L50,121L59,131L64,135L68,140L74,147L75,148L77,144L85,145L86,140L82,133L81,133L81,126L88,126L93,125L98,120L101,125L108,126L112,123L115,128L118,126L122,112L121,106L122,101L116,96L114,96L114,90L117,85L119,85L121,80L119,74L113,72L104,75L105,63L105,62L105,61Z " data-iso="GAB"/><path d="M78,61L74,61L59,61L57,61L56,59L56,63L53,70L50,76L53,77L53,77L57,78L78,78L78,65L78,61Z M41,39L38,46L40,46L44,39L41,39Z " data-iso="GNQ"/><path d="M415,13L412,16L403,26L400,29L397,32L399,37L404,41L403,43L406,50L409,53L410,57L411,68L409,72L409,74L405,77L404,80L400,83L397,90L397,104L397,106L398,106L449,135L449,136L450,143L450,36L437,28L427,28L422,23L422,16L415,14L415,13Z " data-iso="KEN"/><path d="M383,291L380,292L370,295L362,298L359,299L400,299L398,297L389,299L384,292L383,291Z M409,257L407,257L404,258L400,266L401,272L402,282L408,286L411,290L418,299L450,299L450,253L448,256L442,259L435,257L427,259L422,255L418,257L412,257L409,257Z M405,264L404,263L405,263L405,264Z M404,263L403,263L403,263L404,263Z " data-iso="MOZ"/><path d="M405,264L405,263L404,263L405,264Z M404,263L403,263L403,263L404,263Z M409,257L408,256L406,253L405,243L403,234L401,231L396,227L388,229L387,227L381,226L381,226L381,226L386,232L386,235L389,238L388,245L386,246L387,251L385,254L386,258L385,264L386,270L380,274L379,282L377,284L382,290L383,291L384,292L389,299L398,297L400,299L418,299L411,290L408,286L402,282L401,272L400,266L404,258L407,257L409,257Z " data-iso="MWI"/><path d="M39,24L42,18L45,8L54,0L0,0L0,28L11,30L14,25L16,29L19,28L35,27L35,22L39,24L39,24Z " data-iso="NGA"/><path d="M348,107L346,108L342,113L340,111L336,112L336,112L335,112L329,123L325,127L326,130L328,131L328,130L330,129L333,132L340,131L343,126L349,126L349,126L350,126L354,124L353,114L348,108L349,107L348,107Z " data-iso="RWA"/><path d="M305,20L305,21L316,31L318,31L323,28L330,30L337,27L344,36L349,38L349,40L353,42L353,43L354,42L367,38L369,41L372,41L374,39L384,37L390,39L394,35L397,32L400,29L403,26L412,16L415,13L415,13L411,8L411,6L408,0L289,0L289,1L293,7L300,10L302,13L304,19L305,20Z " data-iso="SDS"/><path d="M12,90L12,86L10,91L12,90Z " data-iso="STP"/><path d="M397,106L395,106L370,106L358,106L349,107L349,107L348,108L353,114L354,124L350,126L349,126L349,127L353,136L348,143L346,146L341,153L337,155L333,155L333,156L332,163L336,173L334,177L341,189L343,190L351,207L351,209L352,210L356,214L360,214L366,219L380,225L381,226L381,226L387,227L388,229L396,227L401,231L403,234L405,243L406,253L408,256L409,257L412,257L418,257L422,255L427,259L435,257L442,259L448,256L450,253L450,143L449,136L449,135L398,106L397,106Z " data-iso="TZA"/><path d="M397,104L397,90L400,83L404,80L405,77L409,74L409,72L411,68L410,57L409,53L406,50L403,43L404,41L399,37L397,32L394,35L390,39L384,37L374,39L372,41L369,41L367,38L354,42L353,43L354,43L353,52L352,57L358,60L360,62L355,68L341,83L341,85L338,91L336,111L336,112L336,112L340,111L342,113L346,108L348,107L349,107L349,107L358,106L370,106L395,106L397,106L397,104Z " data-iso="UGA"/><path d="M383,291L382,290L377,284L379,282L380,274L386,270L385,264L386,258L385,254L387,251L386,246L388,245L389,238L386,235L386,232L381,226L381,226L380,225L366,219L360,214L356,214L352,210L351,209L349,209L326,212L318,224L321,232L321,243L320,245L318,258L319,260L326,267L333,268L333,265L337,264L336,282L335,283L332,280L325,282L321,274L317,269L307,266L301,259L300,256L295,262L294,262L277,259L274,253L275,251L261,253L261,250L256,246L256,246L256,248L256,268L254,276L228,276L228,299L359,299L362,298L370,295L380,292L383,291Z " data-iso="ZMB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,119L153,121L156,121L155,118L159,118L160,117L177,109L178,110L183,110L184,108L183,106L185,104L193,117L196,116L199,119L203,120L206,122L210,121L214,127L214,128L217,128L221,126L227,128L227,128L227,127L231,125L233,126L231,119L233,120L237,118L244,120L246,122L252,121L254,119L258,117L263,118L262,115L261,112L257,111L248,105L250,102L249,99L247,99L245,98L248,96L242,87L239,76L237,73L235,72L233,71L236,66L239,64L247,61L252,61L252,60L247,56L242,55L244,48L240,50L240,47L237,44L243,42L245,41L248,41L249,38L241,38L235,34L235,34L231,34L224,32L222,32L216,31L209,30L204,24L198,21L194,19L192,20L188,22L183,30L180,32L181,36L181,45L180,48L178,54L174,60L173,65L171,77L170,77L171,87L168,95L168,97L166,102L163,106L158,108L156,110L152,117L151,119Z " data-fips="CG02" data-fips-="" data-iso3="COD" data-name="quateur"/><path d="M235,34L241,38L249,38L248,41L245,41L243,42L237,44L240,47L240,50L244,48L242,55L247,56L252,60L252,61L247,61L239,64L236,66L233,71L235,72L237,73L239,76L242,87L248,96L245,98L247,99L249,99L250,102L248,105L257,111L261,112L262,115L263,118L263,118L263,120L269,120L273,122L278,119L283,118L283,112L285,113L289,101L291,99L287,94L292,98L297,95L309,100L310,100L310,100L315,95L314,87L310,85L314,83L319,82L321,84L333,81L333,80L340,79L341,80L342,80L345,76L354,68L359,62L358,59L352,57L354,51L349,41L349,38L344,36L343,34L333,27L332,30L325,29L324,28L319,31L313,29L310,26L310,25L303,19L301,19L296,21L291,20L288,19L284,19L279,16L275,21L266,23L262,20L256,23L251,25L245,25L241,24L241,26L237,29L235,34L235,34Z " data-fips="CG09" data-fips-="" data-iso3="COD" data-name="Orientale"/><path d="M151,119L147,123L146,125L146,133L147,140L142,148L142,148L147,149L150,152L151,154L148,160L148,162L148,163L147,164L147,170L147,173L145,175L148,175L154,180L154,185L158,192L157,193L158,196L159,197L165,206L169,207L179,205L183,205L183,206L191,206L191,204L193,199L194,191L200,191L196,185L196,179L200,177L203,172L203,165L201,160L201,153L205,155L206,153L209,152L210,139L214,129L214,128L214,127L210,121L206,122L203,120L199,119L196,116L193,117L185,104L183,106L184,108L183,110L178,110L177,109L160,117L159,118L155,118L156,121L153,121L151,119L151,119Z " data-fips="CG01" data-fips-="" data-iso3="COD" data-name="Bandundu"/><path d="M214,128L214,129L210,139L209,152L206,153L205,155L201,153L201,160L203,165L203,172L200,177L196,179L196,185L200,191L204,191L208,195L225,195L226,200L226,201L231,203L236,202L238,204L241,204L244,203L245,203L245,199L245,193L246,191L242,187L243,184L242,178L243,174L252,172L253,169L248,166L247,167L242,163L242,162L245,159L242,156L234,151L230,149L230,148L231,147L229,144L228,142L231,135L228,128L227,128L227,128L221,126L217,128L214,128Z " data-fips="CG03" data-fips-="" data-iso3="COD" data-name="Kasa-Occidental"/><path d="M145,175L147,173L147,170L147,164L148,163L144,163L141,164L138,162L140,159L139,157L136,157L134,158L132,155L131,156L125,162L121,160L121,157L122,155L121,153L114,156L113,155L111,159L107,161L107,160L98,160L98,161L94,165L95,165L95,173L90,174L94,178L100,175L103,175L109,175L123,176L129,176L145,175Z " data-fips="CG08" data-fips-="" data-iso3="COD" data-name="Bas-Congo"/><path d="M142,148L137,150L136,151L132,154L132,155L134,158L136,157L139,157L140,159L138,162L141,164L144,163L148,163L148,162L148,160L151,154L150,152L147,149L142,148L142,148Z " data-fips="CG06" data-fips-="" data-iso3="COD" data-name="Kinshasa City"/><path d="M310,121L305,121L303,124L298,123L297,125L297,128L298,132L300,134L301,146L306,149L309,149L314,151L317,152L322,159L325,163L325,163L329,163L332,163L332,163L332,162L333,157L330,146L331,143L328,132L326,130L327,126L329,123L330,118L330,117L326,116L323,118L321,120L320,119L314,122L311,120L310,121Z " data-fips="CG12" data-fips-="" data-iso3="COD" data-name="Sud-Kivu"/><path d="M309,100L297,95L292,98L287,94L291,99L289,101L285,113L283,112L283,118L278,119L273,122L269,120L263,120L263,121L267,127L272,127L273,131L270,139L268,142L267,146L271,151L271,155L269,157L270,160L272,163L289,163L325,163L325,163L322,159L317,152L314,151L309,149L306,149L301,146L300,134L298,132L297,128L297,125L298,123L303,124L305,121L310,121L310,120L302,109L304,109L303,106L309,105L311,101L310,100L309,100Z " data-fips="" data-fips-="" data-iso3="COD" data-name="Maniema"/><path d="M258,117L254,119L252,121L246,122L244,120L237,118L233,120L231,119L233,126L231,125L227,127L227,128L228,128L231,135L228,142L229,144L231,147L230,148L230,149L234,151L242,156L245,159L242,162L242,163L247,167L248,166L253,169L252,172L243,174L242,178L243,184L242,187L246,191L245,193L245,199L245,203L245,203L249,204L254,204L256,199L256,194L259,190L260,191L264,192L267,190L272,187L275,188L277,187L277,185L274,183L284,180L287,181L287,174L286,173L286,169L288,164L289,163L272,163L270,160L269,157L271,155L271,151L267,146L268,142L270,139L273,131L272,127L267,127L263,121L263,120L263,118L263,118L258,117Z " data-fips="CG04" data-fips-="" data-iso3="COD" data-name="Kasa-Oriental"/><path d="M332,163L332,163L329,163L325,163L289,163L288,164L286,169L286,173L287,174L287,181L284,180L274,183L277,185L277,187L275,188L272,187L267,190L264,192L260,191L259,190L256,194L256,199L254,204L249,204L245,203L245,203L244,203L241,204L238,204L236,202L231,203L226,201L225,203L228,212L225,225L229,232L230,233L232,240L233,244L231,247L232,251L235,250L240,249L245,249L249,247L254,248L257,246L259,248L261,249L262,254L275,251L274,255L277,258L282,259L284,261L290,261L296,262L297,261L300,256L301,259L306,266L310,266L311,267L316,268L317,270L320,274L321,275L324,281L328,282L333,280L334,282L336,282L337,265L332,266L331,268L326,268L325,265L319,260L317,254L318,253L322,242L321,238L321,230L318,223L323,219L325,217L325,212L351,207L347,200L346,196L342,190L339,188L334,181L334,177L336,172L332,163L332,163Z " data-fips="CG05" data-fips-="" data-iso3="COD" data-name="Katanga"/><path d="M310,100L311,101L309,105L303,106L304,109L302,109L310,120L310,121L311,120L314,122L320,119L321,120L323,118L326,116L330,117L331,116L333,114L336,111L335,105L337,93L341,85L341,80L341,80L340,79L333,80L333,81L321,84L319,82L314,83L310,85L314,87L315,95L310,100L310,100Z " data-fips="CG11" data-fips-="" data-iso3="COD" data-name="Nord-Kivu"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="1.31628947618" lon0="20.3145332978"/><bbox h="260.59" w="262.8" x="886.31" y="935.72"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M256,246L255,246L248,248L244,249L235,249L233,251L231,250L233,243L233,239L230,232L226,226L227,210L226,207L226,197L225,196L209,195L209,191L195,192L194,193L191,205L188,206L180,205L166,207L158,195L154,186L154,181L150,176L121,176L115,175L102,175L102,176L99,177L95,186L99,191L100,195L103,203L107,211L107,215L104,225L107,234L114,247L114,259L111,266L109,269L103,273L102,277L97,282L96,287L95,291L94,299L228,299L228,276L254,276L256,268L256,248L256,246Z M102,158L102,158L100,155L93,158L92,160L88,163L88,164L90,168L90,170L90,174L90,174L94,173L95,165L94,164L99,159L102,158L102,158Z " data-iso="AGO"/><path d="M349,126L343,126L340,131L333,132L330,129L328,130L328,131L328,131L331,136L330,145L333,153L333,155L337,155L341,153L346,146L348,143L353,136L349,127L349,126L349,126Z " data-iso="BDI"/><path d="M146,60L147,58L150,52L150,48L152,43L162,41L164,40L174,42L180,43L181,43L180,40L181,36L180,31L182,30L187,23L191,21L198,20L209,30L211,29L222,32L234,34L241,25L248,26L261,22L267,23L272,22L278,17L294,20L297,20L301,19L305,20L304,19L302,13L300,10L293,7L289,1L289,0L128,0L122,7L124,9L125,19L126,26L130,31L130,35L136,43L141,48L143,49L145,53L146,59L146,60Z " data-iso="CAF"/><path d="M39,24L44,27L45,34L49,36L52,36L58,48L56,56L56,59L57,61L59,61L74,61L78,61L78,60L81,60L103,60L105,61L105,62L109,62L122,62L124,61L132,63L134,65L138,65L146,68L145,64L146,60L146,60L146,59L145,53L143,49L141,48L136,43L130,35L130,31L126,26L125,19L124,9L122,7L128,0L78,0L54,0L45,8L42,18L39,24L39,24Z " data-iso="CMR"/><path d="M301,19L297,20L294,20L278,17L272,22L267,23L261,22L248,26L241,25L234,34L222,32L211,29L209,30L198,20L191,21L187,23L182,30L180,31L181,36L180,40L181,43L181,46L175,58L173,64L173,68L171,77L171,85L170,89L168,96L168,100L157,109L155,112L151,118L147,123L146,141L144,146L133,153L126,161L122,161L122,155L121,153L115,156L111,155L111,159L107,161L103,158L102,158L102,158L99,159L94,164L95,165L94,173L90,174L91,175L92,176L95,177L102,175L102,175L115,175L121,176L150,176L154,181L154,186L158,195L166,207L180,205L188,206L191,205L194,193L195,192L209,191L209,195L225,196L226,197L226,207L227,210L226,226L230,232L233,239L233,243L231,250L233,251L235,249L244,249L248,248L255,246L256,246L256,246L261,250L261,253L275,251L274,253L277,259L294,262L295,262L300,256L301,259L307,266L317,269L321,274L325,282L332,280L335,283L336,282L337,264L333,265L333,268L326,267L319,260L318,258L320,245L321,243L321,232L318,224L326,212L349,209L351,209L351,207L343,190L341,189L334,177L336,173L332,163L333,156L333,155L333,153L330,145L331,136L328,131L328,131L326,130L325,127L329,123L335,112L336,112L336,111L338,91L341,85L341,83L355,68L360,62L358,60L352,57L353,52L354,43L353,43L353,42L349,40L349,38L344,36L337,27L330,30L323,28L318,31L316,31L305,21L305,20L301,19Z " data-iso="COD"/><path d="M180,43L174,42L164,40L162,41L152,43L150,48L150,52L147,58L146,60L146,60L145,64L146,68L138,65L134,65L132,63L124,61L122,62L109,62L105,62L105,63L104,75L113,72L119,74L121,80L119,85L117,85L114,90L114,96L116,96L122,101L121,106L122,112L118,126L115,128L112,123L108,126L101,125L98,120L93,125L88,126L81,126L81,133L82,133L86,140L85,145L77,144L75,148L78,151L84,157L85,160L87,163L88,163L92,160L93,158L100,155L102,158L102,158L103,158L107,161L111,159L111,155L115,156L121,153L122,155L122,161L126,161L133,153L144,146L146,141L147,123L151,118L155,112L157,109L168,100L168,96L170,89L171,85L171,77L173,68L173,64L175,58L181,46L181,43L180,43Z " data-iso="COG"/><path d="M415,13L415,14L422,16L422,23L427,28L437,28L450,36L450,0L408,0L411,6L411,8L415,13L415,13Z " data-iso="ETH"/><path d="M105,61L103,60L81,60L78,60L78,61L78,65L78,78L57,78L53,77L53,78L54,81L49,83L56,92L51,90L49,88L49,97L44,102L41,101L50,118L50,121L59,131L64,135L68,140L74,147L75,148L77,144L85,145L86,140L82,133L81,133L81,126L88,126L93,125L98,120L101,125L108,126L112,123L115,128L118,126L122,112L121,106L122,101L116,96L114,96L114,90L117,85L119,85L121,80L119,74L113,72L104,75L105,63L105,62L105,61Z " data-iso="GAB"/><path d="M78,61L74,61L59,61L57,61L56,59L56,63L53,70L50,76L53,77L53,77L57,78L78,78L78,65L78,61Z M41,39L38,46L40,46L44,39L41,39Z " data-iso="GNQ"/><path d="M415,13L412,16L403,26L400,29L397,32L399,37L404,41L403,43L406,50L409,53L410,57L411,68L409,72L409,74L405,77L404,80L400,83L397,90L397,104L397,106L398,106L449,135L449,136L450,143L450,36L437,28L427,28L422,23L422,16L415,14L415,13Z " data-iso="KEN"/><path d="M383,291L380,292L370,295L362,298L359,299L400,299L398,297L389,299L384,292L383,291Z M409,257L407,257L404,258L400,266L401,272L402,282L408,286L411,290L418,299L450,299L450,253L448,256L442,259L435,257L427,259L422,255L418,257L412,257L409,257Z M405,264L404,263L405,263L405,264Z M404,263L403,263L403,263L404,263Z " data-iso="MOZ"/><path d="M405,264L405,263L404,263L405,264Z M404,263L403,263L403,263L404,263Z M409,257L408,256L406,253L405,243L403,234L401,231L396,227L388,229L387,227L381,226L381,226L381,226L386,232L386,235L389,238L388,245L386,246L387,251L385,254L386,258L385,264L386,270L380,274L379,282L377,284L382,290L383,291L384,292L389,299L398,297L400,299L418,299L411,290L408,286L402,282L401,272L400,266L404,258L407,257L409,257Z " data-iso="MWI"/><path d="M39,24L42,18L45,8L54,0L0,0L0,28L11,30L14,25L16,29L19,28L35,27L35,22L39,24L39,24Z " data-iso="NGA"/><path d="M348,107L346,108L342,113L340,111L336,112L336,112L335,112L329,123L325,127L326,130L328,131L328,130L330,129L333,132L340,131L343,126L349,126L349,126L350,126L354,124L353,114L348,108L349,107L348,107Z " data-iso="RWA"/><path d="M305,20L305,21L316,31L318,31L323,28L330,30L337,27L344,36L349,38L349,40L353,42L353,43L354,42L367,38L369,41L372,41L374,39L384,37L390,39L394,35L397,32L400,29L403,26L412,16L415,13L415,13L411,8L411,6L408,0L289,0L289,1L293,7L300,10L302,13L304,19L305,20Z " data-iso="SSD"/><path d="M12,90L12,86L10,91L12,90Z " data-iso="STP"/><path d="M397,106L395,106L370,106L358,106L349,107L349,107L348,108L353,114L354,124L350,126L349,126L349,127L353,136L348,143L346,146L341,153L337,155L333,155L333,156L332,163L336,173L334,177L341,189L343,190L351,207L351,209L352,210L356,214L360,214L366,219L380,225L381,226L381,226L387,227L388,229L396,227L401,231L403,234L405,243L406,253L408,256L409,257L412,257L418,257L422,255L427,259L435,257L442,259L448,256L450,253L450,143L449,136L449,135L398,106L397,106Z " data-iso="TZA"/><path d="M397,104L397,90L400,83L404,80L405,77L409,74L409,72L411,68L410,57L409,53L406,50L403,43L404,41L399,37L397,32L394,35L390,39L384,37L374,39L372,41L369,41L367,38L354,42L353,43L354,43L353,52L352,57L358,60L360,62L355,68L341,83L341,85L338,91L336,111L336,112L336,112L340,111L342,113L346,108L348,107L349,107L349,107L358,106L370,106L395,106L397,106L397,104Z " data-iso="UGA"/><path d="M383,291L382,290L377,284L379,282L380,274L386,270L385,264L386,258L385,254L387,251L386,246L388,245L389,238L386,235L386,232L381,226L381,226L380,225L366,219L360,214L356,214L352,210L351,209L349,209L326,212L318,224L321,232L321,243L320,245L318,258L319,260L326,267L333,268L333,265L337,264L336,282L335,283L332,280L325,282L321,274L317,269L307,266L301,259L300,256L295,262L294,262L277,259L274,253L275,251L261,253L261,250L256,246L256,246L256,248L256,268L254,276L228,276L228,299L359,299L362,298L370,295L380,292L383,291Z " data-iso="ZMB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,119L153,121L156,121L155,118L159,118L160,117L177,109L178,110L183,110L184,108L183,106L185,104L193,117L196,116L199,119L203,120L206,122L210,121L214,127L214,128L217,128L221,126L227,128L227,128L227,127L231,125L233,126L231,119L233,120L237,118L244,120L246,122L252,121L254,119L258,117L263,118L262,115L261,112L257,111L248,105L250,102L249,99L247,99L245,98L248,96L242,87L239,76L237,73L235,72L233,71L236,66L239,64L247,61L252,61L252,60L247,56L242,55L244,48L240,50L240,47L237,44L243,42L245,41L248,41L249,38L241,38L235,34L235,34L231,34L224,32L222,32L216,31L209,30L204,24L198,21L194,19L192,20L188,22L183,30L180,32L181,36L181,45L180,48L178,54L174,60L173,65L171,77L170,77L171,87L168,95L168,97L166,102L163,106L158,108L156,110L152,117L151,119Z " data-fips="CG02" data-fips-="" data-iso3="COD" data-name="quateur"/><path d="M235,34L241,38L249,38L248,41L245,41L243,42L237,44L240,47L240,50L244,48L242,55L247,56L252,60L252,61L247,61L239,64L236,66L233,71L235,72L237,73L239,76L242,87L248,96L245,98L247,99L249,99L250,102L248,105L257,111L261,112L262,115L263,118L263,118L263,120L269,120L273,122L278,119L283,118L283,112L285,113L289,101L291,99L287,94L292,98L297,95L309,100L310,100L310,100L315,95L314,87L310,85L314,83L319,82L321,84L333,81L333,80L340,79L341,80L342,80L345,76L354,68L359,62L358,59L352,57L354,51L349,41L349,38L344,36L343,34L333,27L332,30L325,29L324,28L319,31L313,29L310,26L310,25L303,19L301,19L296,21L291,20L288,19L284,19L279,16L275,21L266,23L262,20L256,23L251,25L245,25L241,24L241,26L237,29L235,34L235,34Z " data-fips="CG09" data-fips-="" data-iso3="COD" data-name="Orientale"/><path d="M151,119L147,123L146,125L146,133L147,140L142,148L142,148L147,149L150,152L151,154L148,160L148,162L148,163L147,164L147,170L147,173L145,175L148,175L154,180L154,185L158,192L157,193L158,196L159,197L165,206L169,207L179,205L183,205L183,206L191,206L191,204L193,199L194,191L200,191L196,185L196,179L200,177L203,172L203,165L201,160L201,153L205,155L206,153L209,152L210,139L214,129L214,128L214,127L210,121L206,122L203,120L199,119L196,116L193,117L185,104L183,106L184,108L183,110L178,110L177,109L160,117L159,118L155,118L156,121L153,121L151,119L151,119Z " data-fips="CG01" data-fips-="" data-iso3="COD" data-name="Bandundu"/><path d="M214,128L214,129L210,139L209,152L206,153L205,155L201,153L201,160L203,165L203,172L200,177L196,179L196,185L200,191L204,191L208,195L225,195L226,200L226,201L231,203L236,202L238,204L241,204L244,203L245,203L245,199L245,193L246,191L242,187L243,184L242,178L243,174L252,172L253,169L248,166L247,167L242,163L242,162L245,159L242,156L234,151L230,149L230,148L231,147L229,144L228,142L231,135L228,128L227,128L227,128L221,126L217,128L214,128Z " data-fips="CG03" data-fips-="" data-iso3="COD" data-name="Kasa-Occidental"/><path d="M145,175L147,173L147,170L147,164L148,163L144,163L141,164L138,162L140,159L139,157L136,157L134,158L132,155L131,156L125,162L121,160L121,157L122,155L121,153L114,156L113,155L111,159L107,161L107,160L98,160L98,161L94,165L95,165L95,173L90,174L94,178L100,175L103,175L109,175L123,176L129,176L145,175Z " data-fips="CG08" data-fips-="" data-iso3="COD" data-name="Bas-Congo"/><path d="M142,148L137,150L136,151L132,154L132,155L134,158L136,157L139,157L140,159L138,162L141,164L144,163L148,163L148,162L148,160L151,154L150,152L147,149L142,148L142,148Z " data-fips="CG06" data-fips-="" data-iso3="COD" data-name="Kinshasa City"/><path d="M310,121L305,121L303,124L298,123L297,125L297,128L298,132L300,134L301,146L306,149L309,149L314,151L317,152L322,159L325,163L325,163L329,163L332,163L332,163L332,162L333,157L330,146L331,143L328,132L326,130L327,126L329,123L330,118L330,117L326,116L323,118L321,120L320,119L314,122L311,120L310,121Z " data-fips="CG12" data-fips-="" data-iso3="COD" data-name="Sud-Kivu"/><path d="M309,100L297,95L292,98L287,94L291,99L289,101L285,113L283,112L283,118L278,119L273,122L269,120L263,120L263,121L267,127L272,127L273,131L270,139L268,142L267,146L271,151L271,155L269,157L270,160L272,163L289,163L325,163L325,163L322,159L317,152L314,151L309,149L306,149L301,146L300,134L298,132L297,128L297,125L298,123L303,124L305,121L310,121L310,120L302,109L304,109L303,106L309,105L311,101L310,100L309,100Z " data-fips="" data-fips-="" data-iso3="COD" data-name="Maniema"/><path d="M258,117L254,119L252,121L246,122L244,120L237,118L233,120L231,119L233,126L231,125L227,127L227,128L228,128L231,135L228,142L229,144L231,147L230,148L230,149L234,151L242,156L245,159L242,162L242,163L247,167L248,166L253,169L252,172L243,174L242,178L243,184L242,187L246,191L245,193L245,199L245,203L245,203L249,204L254,204L256,199L256,194L259,190L260,191L264,192L267,190L272,187L275,188L277,187L277,185L274,183L284,180L287,181L287,174L286,173L286,169L288,164L289,163L272,163L270,160L269,157L271,155L271,151L267,146L268,142L270,139L273,131L272,127L267,127L263,121L263,120L263,118L263,118L258,117Z " data-fips="CG04" data-fips-="" data-iso3="COD" data-name="Kasa-Oriental"/><path d="M332,163L332,163L329,163L325,163L289,163L288,164L286,169L286,173L287,174L287,181L284,180L274,183L277,185L277,187L275,188L272,187L267,190L264,192L260,191L259,190L256,194L256,199L254,204L249,204L245,203L245,203L244,203L241,204L238,204L236,202L231,203L226,201L225,203L228,212L225,225L229,232L230,233L232,240L233,244L231,247L232,251L235,250L240,249L245,249L249,247L254,248L257,246L259,248L261,249L262,254L275,251L274,255L277,258L282,259L284,261L290,261L296,262L297,261L300,256L301,259L306,266L310,266L311,267L316,268L317,270L320,274L321,275L324,281L328,282L333,280L334,282L336,282L337,265L332,266L331,268L326,268L325,265L319,260L317,254L318,253L322,242L321,238L321,230L318,223L323,219L325,217L325,212L351,207L347,200L346,196L342,190L339,188L334,181L334,177L336,172L332,163L332,163Z " data-fips="CG05" data-fips-="" data-iso3="COD" data-name="Katanga"/><path d="M310,100L311,101L309,105L303,106L304,109L302,109L310,120L310,121L311,120L314,122L320,119L321,120L323,118L326,116L330,117L331,116L333,114L336,111L335,105L337,93L341,85L341,80L341,80L340,79L333,80L333,81L321,84L319,82L314,83L310,85L314,87L315,95L310,100L310,100Z " data-fips="CG11" data-fips-="" data-iso3="COD" data-name="Nord-Kivu"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/EGY.svg b/plugins/UserCountryMap/svg/EGY.svg
index 2231f8b900..e0bff90efd 100644
--- a/plugins/UserCountryMap/svg/EGY.svg
+++ b/plugins/UserCountryMap/svg/EGY.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="30.8490863104" lon0="31.0180448942"/><bbox h="137.16" w="153.08" x="922.56" y="980.21"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M300,30L293,33L288,35L281,35L277,36L276,34L262,36L257,32L252,36L247,33L244,31L247,26L251,30L253,30L249,25L239,27L231,23L228,23L227,27L217,28L224,25L225,24L217,26L213,27L209,32L202,33L190,41L182,43L180,43L169,37L157,36L154,33L140,27L129,25L122,23L110,20L98,22L94,21L93,18L85,26L87,41L85,50L81,55L80,58L82,65L84,79L85,84L81,175L76,271L76,277L86,278L133,280L162,280L233,281L235,276L239,277L237,281L258,281L300,280L373,277L373,277L372,275L361,267L357,261L349,259L343,253L340,245L338,240L338,229L338,227L344,227L337,221L329,213L320,195L316,187L313,181L307,172L300,158L298,155L296,144L294,139L291,137L287,130L287,122L279,114L271,104L269,98L265,88L259,78L258,76L261,70L261,68L263,66L265,71L267,79L270,85L275,90L280,104L284,109L288,112L292,118L299,123L303,125L308,116L308,109L312,98L314,84L317,80L318,78L312,59L308,53L303,38L301,32L300,30L300,29L300,30Z " data-iso="EGY"/><path d="M304,30L303,28L306,22L304,25L300,29L300,30L301,32L304,30Z " data-iso="GAZ"/><path d="M412,2L417,3L440,5L443,6L450,9L450,0L414,0L412,2Z " data-iso="IRQ"/><path d="M306,22L303,28L304,30L301,32L303,38L308,53L312,59L318,78L320,76L323,59L323,50L329,34L328,28L329,24L328,24L321,28L316,28L319,19L323,16L319,15L317,6L318,0L314,0L313,5L311,14L306,22L306,22Z " data-iso="ISR"/><path d="M329,24L328,28L329,34L323,50L323,59L320,76L320,78L319,82L334,84L346,85L355,76L360,67L361,66L377,62L388,48L363,22L409,5L412,2L414,0L359,0L359,0L357,0L330,0L331,4L330,10L331,16L329,22L329,24Z " data-iso="JOR"/><path d="M76,277L76,271L81,175L85,84L84,79L82,65L80,58L81,55L85,50L87,41L85,26L93,18L92,16L90,12L83,8L78,8L70,7L63,3L51,0L0,0L0,299L75,299L75,291L76,277Z " data-iso="LBY"/><path d="M370,187L371,185L361,179L361,181L365,183L370,187Z M412,2L409,5L363,22L388,48L377,62L361,66L360,67L355,76L346,85L334,84L319,82L316,99L316,105L313,117L315,115L323,116L326,117L332,125L336,133L340,137L343,142L347,147L349,150L353,155L360,168L364,169L366,177L370,180L376,189L379,197L378,201L387,215L394,217L396,217L406,224L411,229L424,251L422,251L427,258L428,264L426,278L431,287L430,293L434,299L450,299L450,9L443,6L440,5L417,3L412,2Z " data-iso="SAU"/><path d="M373,277L300,280L258,281L237,281L239,277L235,276L233,281L162,280L133,280L86,278L76,277L75,291L75,299L383,299L379,295L375,288L374,284L373,277Z " data-iso="SDN"/><path d="M357,0L359,0L359,0L357,0Z " data-iso="SYR"/><path d="M329,24L329,22L331,16L330,10L331,4L330,0L318,0L317,6L319,15L323,16L319,19L316,28L321,28L328,24L329,24Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M232,36L228,36L228,38L223,40L221,39L221,40L221,40L221,41L221,44L222,47L222,48L222,48L225,47L231,49L232,50L232,51L232,50L233,49L233,38L232,39L232,36L232,36L232,36Z " data-fips="EG05" data-fips-="" data-iso3="EGY" data-name="Al Gharbiyah"/><path d="M257,36L256,36L255,36L255,36L253,37L253,37L253,37L252,48L250,50L245,51L245,54L246,57L247,60L256,59L263,59L264,59L268,59L267,56L265,52L265,49L264,40L257,36Z " data-fips="EG07" data-fips-="" data-iso3="EGY" data-name="Al Isma`iliyah"/><path d="M232,50L231,49L225,47L222,48L222,48L222,49L223,53L223,54L223,57L223,57L223,57L226,60L228,60L230,61L230,61L230,61L228,56L233,51L232,51L232,50Z " data-fips="EG09" data-fips-="" data-iso3="EGY" data-name="Al Minufiyah"/><path d="M246,57L240,61L237,61L235,62L234,62L234,62L232,63L232,66L233,68L233,70L233,72L248,72L248,69L248,64L247,61L247,60L246,57Z " data-fips="EG11" data-fips-="" data-iso3="EGY" data-name="Al Qahirah"/><path d="M234,50L233,51L233,50L232,50L232,51L233,51L228,56L230,61L230,61L230,62L231,62L232,62L232,63L232,63L234,62L234,62L235,62L237,61L240,61L236,58L233,53L233,53L234,51L235,51L234,50Z " data-fips="EG12" data-fips-="" data-iso3="EGY" data-name="Al Qalyubiyah"/><path d="M251,36L245,37L240,44L238,44L235,50L235,51L234,51L233,53L233,53L236,58L240,61L246,57L245,54L245,51L250,50L252,48L253,37L253,37L252,38L252,37L251,36L251,36Z M256,36L256,34L256,34L256,34L256,36L254,36L253,36L253,37L255,36L255,36L256,36Z " data-fips="EG14" data-fips-="" data-iso3="EGY" data-name="Ash Sharqiyah"/><path d="M264,59L263,59L256,59L247,60L247,61L248,64L248,69L248,72L248,73L247,94L248,94L251,94L254,93L265,89L265,87L264,83L258,77L258,74L261,70L265,71L265,71L270,68L270,68L269,67L269,67L269,61L268,59L264,59Z " data-fips="EG15" data-fips-="" data-iso3="EGY" data-name="As Suways"/><path d="M255,31L254,31L254,31L255,31L255,31L255,31L255,31L255,31Z M252,29L252,29L251,29L251,29L253,30L252,29L252,29Z M235,25L233,26L233,35L233,36L232,36L232,36L232,39L233,38L233,49L232,50L233,50L233,51L234,50L235,51L235,50L238,44L240,44L245,37L251,36L251,35L250,33L248,34L245,32L245,32L241,35L242,32L238,29L240,27L239,27L239,27L236,26L235,25L235,25Z " data-fips="EG01" data-fips-="" data-iso3="EGY" data-name="Ad Daqahliyah"/><path d="M263,37L259,33L258,33L256,31L255,31L255,31L255,31L256,32L256,32L256,33L256,34L256,34L256,34L256,36L257,36L264,40L263,37L263,37L263,37Z " data-fips="EG19" data-fips-="" data-iso3="EGY" data-name="Bur Sa`id"/><path d="M252,29L250,28L247,25L240,27L240,27L238,29L242,32L241,35L245,32L245,32L246,29L247,25L251,29L251,29L252,29L252,29L252,29Z " data-fips="EG20" data-fips-="" data-iso3="EGY" data-name="Dumyat"/><path d="M83,125L84,125L139,127L150,106L153,103L172,98L177,95L193,80L211,69L196,59L195,57L194,39L194,39L193,39L185,43L181,43L168,37L168,36L157,36L155,35L154,32L146,32L142,28L140,28L132,26L129,24L120,23L111,20L108,20L98,22L93,21L85,26L85,31L88,42L85,50L80,57L82,65L82,69L83,71L83,76L85,84L83,125Z " data-fips="EG22" data-fips-="" data-iso3="EGY" data-name="Matruh"/><path d="M212,27L211,30L208,32L207,32L206,31L204,35L201,37L201,40L204,47L201,51L196,53L195,57L196,59L211,69L212,67L223,57L223,57L223,54L223,53L222,49L222,48L222,47L221,44L221,41L221,40L221,40L221,39L220,37L215,33L215,30L213,27L212,27Z " data-fips="EG03" data-fips-="" data-iso3="EGY" data-name="Al Buhayrah"/><path d="M227,75L226,73L221,74L210,80L199,90L209,92L221,91L223,90L228,83L229,82L227,75Z " data-fips="EG04" data-fips-="" data-iso3="EGY" data-name="Al Fayyum"/><path d="M206,31L204,31L200,35L194,39L194,39L194,39L195,57L196,53L201,51L204,47L201,40L201,37L204,35L206,31L206,31Z " data-fips="EG06" data-fips-="" data-iso3="EGY" data-name="Al Iskandariyah"/><path d="M230,61L228,60L226,60L223,57L223,57L212,67L211,69L193,80L177,95L172,98L153,103L150,106L139,127L171,128L172,124L175,121L186,116L190,113L193,109L197,99L198,97L199,90L210,80L221,74L226,73L227,75L229,82L230,82L232,83L232,83L233,85L233,85L234,87L235,88L237,90L238,91L247,94L248,73L248,72L233,72L233,70L233,68L232,66L232,63L232,63L232,62L231,62L230,62L230,61L230,61Z " data-fips="EG08" data-fips-="" data-iso3="EGY" data-name="Al Jizah"/><path d="M222,99L221,99L197,99L193,109L190,113L186,116L175,121L172,124L171,128L219,129L219,129L219,130L219,130L220,130L223,130L225,130L226,127L223,116L222,112L224,107L225,101L222,99Z " data-fips="EG10" data-fips-="" data-iso3="EGY" data-name="Al Minya"/><path d="M233,85L232,83L232,83L230,82L229,82L228,83L223,90L221,91L209,92L199,90L198,97L197,99L221,99L222,99L225,101L225,100L226,97L232,88L232,86L233,85L233,85Z " data-fips="EG18" data-fips-="" data-iso3="EGY" data-name="Bani Suwayf"/><path d="M232,23L227,23L230,25L227,25L217,29L217,28L223,24L219,26L212,27L213,27L215,30L215,33L220,37L221,39L221,40L221,39L223,40L228,38L228,36L232,36L232,36L233,36L233,35L233,26L235,25L232,23Z " data-fips="EG21" data-fips-="" data-iso3="EGY" data-name="Kafr ash Shaykh"/><path d="M268,193L268,194L268,195L268,195L267,196L267,196L269,197L271,201L272,204L274,209L273,216L273,225L271,226L267,227L270,233L264,235L263,236L262,242L266,243L269,243L270,245L268,247L265,253L260,259L256,257L247,262L243,261L242,266L240,272L233,274L232,276L234,278L235,276L238,275L239,276L237,281L239,281L247,275L248,274L253,271L254,266L260,268L264,268L270,262L271,258L278,258L285,260L283,257L278,253L281,246L280,242L280,234L276,228L275,221L279,213L276,206L276,202L273,197L268,193Z " data-fips="EG16" data-fips-="" data-iso3="EGY" data-name="Aswan"/><path d="M223,130L220,130L219,130L219,130L219,131L221,137L231,145L234,151L236,150L238,148L239,149L240,151L241,151L239,146L235,142L233,139L228,137L225,132L225,130L223,130Z " data-fips="EG17" data-fips-="" data-iso3="EGY" data-name="Asyut"/><path d="M250,170L239,157L237,155L234,151L231,145L221,137L219,131L219,130L219,129L219,129L171,128L139,127L84,125L83,125L83,130L82,147L76,277L233,281L233,281L234,278L232,276L233,274L240,272L242,266L243,261L247,262L256,257L260,259L265,253L268,247L270,245L269,243L266,243L262,242L263,236L264,235L270,233L267,227L271,226L273,225L273,216L274,209L272,204L271,201L269,197L267,196L265,195L263,192L262,185L262,183L269,174L267,170L253,173L250,170Z " data-fips="EG13" data-fips-="" data-iso3="EGY" data-name="Al Wadi at Jadid"/><path d="M267,192L266,189L267,185L272,180L273,174L273,172L269,167L264,167L259,169L258,169L257,170L254,167L253,168L250,169L250,170L253,173L267,170L269,174L262,183L262,185L263,192L265,195L267,196L267,196L268,195L268,195L268,194L268,193L267,192Z " data-fips="EG02" data-fips-="EG23" data-iso3="EGY" data-name="Qina"/><path d="M240,151L239,149L238,148L236,150L234,151L237,155L239,157L250,170L250,169L253,168L254,167L257,170L258,169L256,166L255,165L245,154L241,151L240,151Z " data-fips="EG24" data-fips-="" data-iso3="EGY" data-name="Suhaj"/><path d="M238,91L237,90L235,88L234,87L233,85L232,86L232,88L226,97L225,100L225,101L224,107L222,112L223,116L226,127L225,130L225,132L228,137L233,139L235,142L239,146L241,151L245,154L255,165L256,166L258,169L259,169L264,167L269,167L273,172L273,174L272,180L267,185L266,189L267,192L268,193L273,197L276,202L276,206L279,213L275,221L276,228L280,234L280,242L281,246L278,253L283,257L285,260L278,258L271,258L270,262L264,268L260,268L254,266L253,271L248,274L247,275L239,281L265,281L280,281L374,277L369,273L363,269L360,266L358,263L356,261L350,260L347,258L342,252L342,250L339,243L338,238L338,235L337,226L345,227L344,226L337,222L328,211L326,206L318,190L315,184L307,172L299,157L297,155L297,150L298,149L294,143L294,139L288,131L286,129L287,127L285,124L288,125L286,120L282,118L277,112L274,106L271,104L269,98L265,94L266,90L265,89L254,93L251,94L248,94L247,94L238,91Z " data-fips="EG02" data-fips-="" data-iso3="EGY" data-name="Al Bahr al Ahmar"/><path d="M270,68L265,71L265,71L267,77L267,80L268,81L270,84L275,91L279,99L279,103L280,104L287,111L291,117L300,124L304,124L305,122L308,119L307,110L311,102L312,95L314,83L317,78L318,78L308,77L297,73L291,70L276,68L270,68Z " data-fips="EG26" data-fips-="" data-iso3="EGY" data-name="Janub Sina'"/><path d="M263,37L263,37L264,40L265,49L265,52L267,56L268,59L269,61L269,67L269,67L270,68L270,68L276,68L291,70L297,73L308,77L318,78L318,78L317,76L313,64L310,55L309,54L307,47L303,38L297,32L292,34L288,35L282,35L276,37L275,34L272,36L272,36L263,37L263,37Z " data-fips="EG32" data-fips-="EG27" data-iso3="EGY" data-name="Shamal Sina'"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="30.8490863104" lon0="31.0180448942"/><bbox h="137.16" w="153.08" x="922.56" y="980.21"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M300,30L293,33L288,35L281,35L277,36L276,34L262,36L257,32L252,36L247,33L244,31L247,26L251,30L253,30L249,25L239,27L231,23L228,23L227,27L217,28L224,25L225,24L217,26L213,27L209,32L202,33L190,41L182,43L180,43L169,37L157,36L154,33L140,27L129,25L122,23L110,20L98,22L94,21L93,18L85,26L87,41L85,50L81,55L80,58L82,65L84,79L85,84L81,175L76,271L76,277L86,278L133,280L162,280L233,281L235,276L239,277L237,281L258,281L300,280L373,277L373,277L372,275L361,267L357,261L349,259L343,253L340,245L338,240L338,229L338,227L344,227L337,221L329,213L320,195L316,187L313,181L307,172L300,158L298,155L296,144L294,139L291,137L287,130L287,122L279,114L271,104L269,98L265,88L259,78L258,76L261,70L261,68L263,66L265,71L267,79L270,85L275,90L280,104L284,109L288,112L292,118L299,123L303,125L308,116L308,109L312,98L314,84L317,80L318,78L312,59L308,53L303,38L301,32L300,30L300,29L300,30Z " data-iso="EGY"/><path d="M304,30L303,28L306,22L304,25L300,29L300,30L301,32L304,30Z " data-iso="PSE"/><path d="M412,2L417,3L440,5L443,6L450,9L450,0L414,0L412,2Z " data-iso="IRQ"/><path d="M306,22L303,28L304,30L301,32L303,38L308,53L312,59L318,78L320,76L323,59L323,50L329,34L328,28L329,24L328,24L321,28L316,28L319,19L323,16L319,15L317,6L318,0L314,0L313,5L311,14L306,22L306,22Z " data-iso="ISR"/><path d="M329,24L328,28L329,34L323,50L323,59L320,76L320,78L319,82L334,84L346,85L355,76L360,67L361,66L377,62L388,48L363,22L409,5L412,2L414,0L359,0L359,0L357,0L330,0L331,4L330,10L331,16L329,22L329,24Z " data-iso="JOR"/><path d="M76,277L76,271L81,175L85,84L84,79L82,65L80,58L81,55L85,50L87,41L85,26L93,18L92,16L90,12L83,8L78,8L70,7L63,3L51,0L0,0L0,299L75,299L75,291L76,277Z " data-iso="LBY"/><path d="M370,187L371,185L361,179L361,181L365,183L370,187Z M412,2L409,5L363,22L388,48L377,62L361,66L360,67L355,76L346,85L334,84L319,82L316,99L316,105L313,117L315,115L323,116L326,117L332,125L336,133L340,137L343,142L347,147L349,150L353,155L360,168L364,169L366,177L370,180L376,189L379,197L378,201L387,215L394,217L396,217L406,224L411,229L424,251L422,251L427,258L428,264L426,278L431,287L430,293L434,299L450,299L450,9L443,6L440,5L417,3L412,2Z " data-iso="SAU"/><path d="M373,277L300,280L258,281L237,281L239,277L235,276L233,281L162,280L133,280L86,278L76,277L75,291L75,299L383,299L379,295L375,288L374,284L373,277Z " data-iso="SDN"/><path d="M357,0L359,0L359,0L357,0Z " data-iso="SYR"/><path d="M329,24L329,22L331,16L330,10L331,4L330,0L318,0L317,6L319,15L323,16L319,19L316,28L321,28L328,24L329,24Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M232,36L228,36L228,38L223,40L221,39L221,40L221,40L221,41L221,44L222,47L222,48L222,48L225,47L231,49L232,50L232,51L232,50L233,49L233,38L232,39L232,36L232,36L232,36Z " data-fips="EG05" data-fips-="" data-iso3="EGY" data-name="Al Gharbiyah"/><path d="M257,36L256,36L255,36L255,36L253,37L253,37L253,37L252,48L250,50L245,51L245,54L246,57L247,60L256,59L263,59L264,59L268,59L267,56L265,52L265,49L264,40L257,36Z " data-fips="EG07" data-fips-="" data-iso3="EGY" data-name="Al Isma`iliyah"/><path d="M232,50L231,49L225,47L222,48L222,48L222,49L223,53L223,54L223,57L223,57L223,57L226,60L228,60L230,61L230,61L230,61L228,56L233,51L232,51L232,50Z " data-fips="EG09" data-fips-="" data-iso3="EGY" data-name="Al Minufiyah"/><path d="M246,57L240,61L237,61L235,62L234,62L234,62L232,63L232,66L233,68L233,70L233,72L248,72L248,69L248,64L247,61L247,60L246,57Z " data-fips="EG11" data-fips-="" data-iso3="EGY" data-name="Al Qahirah"/><path d="M234,50L233,51L233,50L232,50L232,51L233,51L228,56L230,61L230,61L230,62L231,62L232,62L232,63L232,63L234,62L234,62L235,62L237,61L240,61L236,58L233,53L233,53L234,51L235,51L234,50Z " data-fips="EG12" data-fips-="" data-iso3="EGY" data-name="Al Qalyubiyah"/><path d="M251,36L245,37L240,44L238,44L235,50L235,51L234,51L233,53L233,53L236,58L240,61L246,57L245,54L245,51L250,50L252,48L253,37L253,37L252,38L252,37L251,36L251,36Z M256,36L256,34L256,34L256,34L256,36L254,36L253,36L253,37L255,36L255,36L256,36Z " data-fips="EG14" data-fips-="" data-iso3="EGY" data-name="Ash Sharqiyah"/><path d="M264,59L263,59L256,59L247,60L247,61L248,64L248,69L248,72L248,73L247,94L248,94L251,94L254,93L265,89L265,87L264,83L258,77L258,74L261,70L265,71L265,71L270,68L270,68L269,67L269,67L269,61L268,59L264,59Z " data-fips="EG15" data-fips-="" data-iso3="EGY" data-name="As Suways"/><path d="M255,31L254,31L254,31L255,31L255,31L255,31L255,31L255,31Z M252,29L252,29L251,29L251,29L253,30L252,29L252,29Z M235,25L233,26L233,35L233,36L232,36L232,36L232,39L233,38L233,49L232,50L233,50L233,51L234,50L235,51L235,50L238,44L240,44L245,37L251,36L251,35L250,33L248,34L245,32L245,32L241,35L242,32L238,29L240,27L239,27L239,27L236,26L235,25L235,25Z " data-fips="EG01" data-fips-="" data-iso3="EGY" data-name="Ad Daqahliyah"/><path d="M263,37L259,33L258,33L256,31L255,31L255,31L255,31L256,32L256,32L256,33L256,34L256,34L256,34L256,36L257,36L264,40L263,37L263,37L263,37Z " data-fips="EG19" data-fips-="" data-iso3="EGY" data-name="Bur Sa`id"/><path d="M252,29L250,28L247,25L240,27L240,27L238,29L242,32L241,35L245,32L245,32L246,29L247,25L251,29L251,29L252,29L252,29L252,29Z " data-fips="EG20" data-fips-="" data-iso3="EGY" data-name="Dumyat"/><path d="M83,125L84,125L139,127L150,106L153,103L172,98L177,95L193,80L211,69L196,59L195,57L194,39L194,39L193,39L185,43L181,43L168,37L168,36L157,36L155,35L154,32L146,32L142,28L140,28L132,26L129,24L120,23L111,20L108,20L98,22L93,21L85,26L85,31L88,42L85,50L80,57L82,65L82,69L83,71L83,76L85,84L83,125Z " data-fips="EG22" data-fips-="" data-iso3="EGY" data-name="Matruh"/><path d="M212,27L211,30L208,32L207,32L206,31L204,35L201,37L201,40L204,47L201,51L196,53L195,57L196,59L211,69L212,67L223,57L223,57L223,54L223,53L222,49L222,48L222,47L221,44L221,41L221,40L221,40L221,39L220,37L215,33L215,30L213,27L212,27Z " data-fips="EG03" data-fips-="" data-iso3="EGY" data-name="Al Buhayrah"/><path d="M227,75L226,73L221,74L210,80L199,90L209,92L221,91L223,90L228,83L229,82L227,75Z " data-fips="EG04" data-fips-="" data-iso3="EGY" data-name="Al Fayyum"/><path d="M206,31L204,31L200,35L194,39L194,39L194,39L195,57L196,53L201,51L204,47L201,40L201,37L204,35L206,31L206,31Z " data-fips="EG06" data-fips-="" data-iso3="EGY" data-name="Al Iskandariyah"/><path d="M230,61L228,60L226,60L223,57L223,57L212,67L211,69L193,80L177,95L172,98L153,103L150,106L139,127L171,128L172,124L175,121L186,116L190,113L193,109L197,99L198,97L199,90L210,80L221,74L226,73L227,75L229,82L230,82L232,83L232,83L233,85L233,85L234,87L235,88L237,90L238,91L247,94L248,73L248,72L233,72L233,70L233,68L232,66L232,63L232,63L232,62L231,62L230,62L230,61L230,61Z " data-fips="EG08" data-fips-="" data-iso3="EGY" data-name="Al Jizah"/><path d="M222,99L221,99L197,99L193,109L190,113L186,116L175,121L172,124L171,128L219,129L219,129L219,130L219,130L220,130L223,130L225,130L226,127L223,116L222,112L224,107L225,101L222,99Z " data-fips="EG10" data-fips-="" data-iso3="EGY" data-name="Al Minya"/><path d="M233,85L232,83L232,83L230,82L229,82L228,83L223,90L221,91L209,92L199,90L198,97L197,99L221,99L222,99L225,101L225,100L226,97L232,88L232,86L233,85L233,85Z " data-fips="EG18" data-fips-="" data-iso3="EGY" data-name="Bani Suwayf"/><path d="M232,23L227,23L230,25L227,25L217,29L217,28L223,24L219,26L212,27L213,27L215,30L215,33L220,37L221,39L221,40L221,39L223,40L228,38L228,36L232,36L232,36L233,36L233,35L233,26L235,25L232,23Z " data-fips="EG21" data-fips-="" data-iso3="EGY" data-name="Kafr ash Shaykh"/><path d="M268,193L268,194L268,195L268,195L267,196L267,196L269,197L271,201L272,204L274,209L273,216L273,225L271,226L267,227L270,233L264,235L263,236L262,242L266,243L269,243L270,245L268,247L265,253L260,259L256,257L247,262L243,261L242,266L240,272L233,274L232,276L234,278L235,276L238,275L239,276L237,281L239,281L247,275L248,274L253,271L254,266L260,268L264,268L270,262L271,258L278,258L285,260L283,257L278,253L281,246L280,242L280,234L276,228L275,221L279,213L276,206L276,202L273,197L268,193Z " data-fips="EG16" data-fips-="" data-iso3="EGY" data-name="Aswan"/><path d="M223,130L220,130L219,130L219,130L219,131L221,137L231,145L234,151L236,150L238,148L239,149L240,151L241,151L239,146L235,142L233,139L228,137L225,132L225,130L223,130Z " data-fips="EG17" data-fips-="" data-iso3="EGY" data-name="Asyut"/><path d="M250,170L239,157L237,155L234,151L231,145L221,137L219,131L219,130L219,129L219,129L171,128L139,127L84,125L83,125L83,130L82,147L76,277L233,281L233,281L234,278L232,276L233,274L240,272L242,266L243,261L247,262L256,257L260,259L265,253L268,247L270,245L269,243L266,243L262,242L263,236L264,235L270,233L267,227L271,226L273,225L273,216L274,209L272,204L271,201L269,197L267,196L265,195L263,192L262,185L262,183L269,174L267,170L253,173L250,170Z " data-fips="EG13" data-fips-="" data-iso3="EGY" data-name="Al Wadi at Jadid"/><path d="M267,192L266,189L267,185L272,180L273,174L273,172L269,167L264,167L259,169L258,169L257,170L254,167L253,168L250,169L250,170L253,173L267,170L269,174L262,183L262,185L263,192L265,195L267,196L267,196L268,195L268,195L268,194L268,193L267,192Z " data-fips="EG02" data-fips-="EG23" data-iso3="EGY" data-name="Qina"/><path d="M240,151L239,149L238,148L236,150L234,151L237,155L239,157L250,170L250,169L253,168L254,167L257,170L258,169L256,166L255,165L245,154L241,151L240,151Z " data-fips="EG24" data-fips-="" data-iso3="EGY" data-name="Suhaj"/><path d="M238,91L237,90L235,88L234,87L233,85L232,86L232,88L226,97L225,100L225,101L224,107L222,112L223,116L226,127L225,130L225,132L228,137L233,139L235,142L239,146L241,151L245,154L255,165L256,166L258,169L259,169L264,167L269,167L273,172L273,174L272,180L267,185L266,189L267,192L268,193L273,197L276,202L276,206L279,213L275,221L276,228L280,234L280,242L281,246L278,253L283,257L285,260L278,258L271,258L270,262L264,268L260,268L254,266L253,271L248,274L247,275L239,281L265,281L280,281L374,277L369,273L363,269L360,266L358,263L356,261L350,260L347,258L342,252L342,250L339,243L338,238L338,235L337,226L345,227L344,226L337,222L328,211L326,206L318,190L315,184L307,172L299,157L297,155L297,150L298,149L294,143L294,139L288,131L286,129L287,127L285,124L288,125L286,120L282,118L277,112L274,106L271,104L269,98L265,94L266,90L265,89L254,93L251,94L248,94L247,94L238,91Z " data-fips="EG02" data-fips-="" data-iso3="EGY" data-name="Al Bahr al Ahmar"/><path d="M270,68L265,71L265,71L267,77L267,80L268,81L270,84L275,91L279,99L279,103L280,104L287,111L291,117L300,124L304,124L305,122L308,119L307,110L311,102L312,95L314,83L317,78L318,78L308,77L297,73L291,70L276,68L270,68Z " data-fips="EG26" data-fips-="" data-iso3="EGY" data-name="Janub Sina'"/><path d="M263,37L263,37L264,40L265,49L265,52L267,56L268,59L269,61L269,67L269,67L270,68L270,68L276,68L291,70L297,73L308,77L318,78L318,78L317,76L313,64L310,55L309,54L307,47L303,38L297,32L292,34L288,35L282,35L276,37L275,34L272,36L272,36L263,37L263,37Z " data-fips="EG32" data-fips-="EG27" data-iso3="EGY" data-name="Shamal Sina'"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/ETH.svg b/plugins/UserCountryMap/svg/ETH.svg
index d6599ee3e3..1cdf5d134b 100644
--- a/plugins/UserCountryMap/svg/ETH.svg
+++ b/plugins/UserCountryMap/svg/ETH.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.2663152129" lon0="38.3111557051"/><bbox h="163.5" w="205.07" x="923.96" y="944.42"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M8,275L7,274L6,272L2,271L0,267L0,299L6,299L6,294L8,290L6,285L7,283L9,277L9,276L8,275Z " data-iso="COD"/><path d="M284,94L270,96L272,94L276,90L281,88L286,85L289,80L288,76L283,69L282,68L276,71L275,75L273,76L268,73L267,73L266,74L264,77L257,88L254,91L254,108L255,108L271,105L277,107L279,107L281,102L284,99L286,95L284,94Z " data-iso="DJI"/><path d="M212,0L213,3L222,4L216,0L212,0Z M137,34L138,34L148,34L152,30L160,37L167,21L170,23L175,25L178,29L181,30L187,29L193,26L196,29L203,28L208,29L230,36L238,46L244,51L252,58L257,65L263,70L264,72L266,74L267,73L268,73L273,76L275,75L276,71L282,68L282,66L280,64L279,66L275,65L274,61L269,57L266,57L263,49L250,40L246,34L239,26L231,23L227,20L218,17L215,12L214,10L210,7L209,10L209,14L203,5L201,0L142,0L138,12L135,14L137,28L137,34Z " data-iso="ERI"/><path d="M137,34L136,40L134,48L130,56L129,60L128,68L118,71L117,73L109,86L102,101L102,108L92,111L87,118L88,124L85,131L82,141L82,142L82,143L82,162L79,165L64,165L58,175L60,178L73,182L78,186L86,197L91,200L96,205L101,219L102,223L106,230L108,231L108,232L108,232L119,235L120,237L119,247L124,254L126,255L150,260L171,273L183,275L197,277L203,278L210,271L211,269L215,267L232,259L240,266L242,267L254,266L257,266L258,264L260,262L278,258L285,250L295,245L305,243L325,244L330,239L348,219L387,178L392,172L385,172L370,173L369,172L304,152L294,144L292,143L286,135L285,132L277,125L273,115L278,108L279,107L277,107L271,105L255,108L254,108L254,91L257,88L264,77L266,74L264,72L263,70L257,65L252,58L244,51L238,46L230,36L208,29L203,28L196,29L193,26L187,29L181,30L178,29L175,25L170,23L167,21L160,37L152,30L148,34L138,34L137,34Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-iso="ETH"/><path d="M257,266L254,266L242,267L240,266L232,259L215,267L211,269L210,271L203,278L197,277L183,275L171,273L150,260L126,255L124,254L119,247L120,237L119,235L108,232L108,232L104,236L88,251L83,256L79,260L82,267L89,274L88,278L89,284L91,285L92,289L97,294L99,299L237,299L237,291L245,283L254,270L257,266Z " data-iso="KEN"/><path d="M82,142L82,142L82,141L85,131L88,124L87,118L92,111L102,108L102,101L109,86L117,73L118,71L128,68L129,60L130,56L134,48L136,40L137,34L137,28L135,14L138,12L142,0L0,0L0,127L9,134L19,133L29,124L35,114L46,105L45,101L45,90L39,83L54,84L64,79L61,93L63,111L69,117L78,125L80,133L78,136L82,142L82,142Z " data-iso="SDN"/><path d="M8,275L9,274L15,269L24,271L30,269L33,273L38,275L42,271L53,269L57,267L60,270L68,270L73,265L79,260L83,256L88,251L104,236L108,232L108,231L106,230L102,223L101,219L96,205L91,200L86,197L78,186L73,182L60,178L58,175L64,165L79,165L82,162L82,143L82,142L82,142L82,142L78,136L80,133L78,125L69,117L63,111L61,93L64,79L54,84L39,83L45,90L45,101L46,105L35,114L29,124L19,133L9,134L0,127L0,267L2,271L6,272L7,274L8,275Z " data-iso="SDS"/><path d="M411,98L406,96L391,101L384,102L374,102L368,107L359,111L357,111L343,109L332,114L324,119L311,119L299,111L294,106L290,99L286,95L284,99L281,102L279,107L278,108L273,115L277,125L285,132L286,135L292,143L294,144L304,152L369,172L370,173L385,172L392,172L396,167L413,138L412,127L411,98L411,98Z " data-iso="SOL"/><path d="M411,98L412,127L413,138L396,167L392,172L387,178L348,219L330,239L325,244L305,243L295,245L285,250L278,258L260,262L258,264L257,266L254,270L245,283L237,291L237,299L350,299L351,298L370,279L384,263L394,251L400,241L409,228L417,213L418,207L421,199L424,194L432,178L434,171L440,166L443,159L446,151L450,146L450,80L445,86L437,90L427,93L421,95L414,97L411,98Z " data-iso="SOM"/><path d="M79,260L73,265L68,270L60,270L57,267L53,269L42,271L38,275L33,273L30,269L24,271L15,269L9,274L8,275L9,276L9,277L7,283L6,285L8,290L6,294L6,299L99,299L97,294L92,289L91,285L89,284L88,278L89,274L82,267L79,260Z " data-iso="UGA"/><path d="M273,0L272,2L274,8L271,11L276,14L279,27L281,34L281,39L284,42L285,56L290,65L290,68L294,67L302,70L315,65L318,66L325,65L327,61L332,59L338,53L362,49L366,47L376,44L381,40L388,35L395,36L403,35L405,33L410,27L411,25L422,19L429,16L435,15L442,11L450,8L450,0L273,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,47L134,49L131,54L128,69L126,69L120,70L117,72L109,86L109,86L112,90L115,89L119,86L124,85L131,91L133,91L134,98L137,100L136,106L133,110L132,111L134,113L133,118L134,120L145,123L148,123L149,124L154,129L159,130L163,134L175,128L179,127L181,122L186,122L189,123L188,128L184,129L187,132L188,135L197,139L202,143L202,145L198,147L200,151L198,154L199,157L202,157L203,158L208,156L209,150L210,150L210,149L212,146L211,142L212,139L211,136L214,136L216,131L214,129L217,128L218,119L217,113L217,109L218,107L218,103L215,100L215,97L212,91L209,79L209,78L208,78L204,79L204,78L200,78L197,77L196,72L198,66L194,62L192,62L186,54L185,51L180,49L178,51L170,52L167,50L164,50L163,52L158,54L146,54L137,49L136,45L135,47Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-fips="ET46" data-fips-="ET19" data-iso3="ETH" data-name="Amhara"/><path d="M136,45L137,49L146,54L158,54L163,52L164,50L167,50L170,52L178,51L180,49L185,51L186,54L192,62L194,62L198,66L196,72L197,77L200,78L204,78L204,79L208,78L209,78L209,77L211,68L208,65L209,58L208,56L208,52L210,49L209,46L208,37L207,36L208,33L207,32L212,32L213,30L213,29L211,30L210,29L203,27L199,29L196,29L193,25L189,29L181,31L177,29L174,24L170,24L167,20L160,37L154,30L152,30L149,33L148,34L142,32L142,33L136,44L136,45Z " data-fips="ET06" data-fips-="ET37|ET54" data-iso3="ETH" data-name="Tigray"/><path d="M213,30L212,32L207,32L208,33L207,36L208,37L209,46L210,49L208,52L208,56L209,58L208,65L211,68L209,77L209,78L209,79L212,91L215,97L215,100L218,103L218,107L217,109L217,113L218,119L217,128L214,129L216,131L214,136L211,136L212,139L211,142L212,146L210,149L210,150L211,149L212,149L215,156L216,155L219,153L223,146L225,144L229,143L230,143L230,141L232,135L237,131L235,129L238,114L242,108L253,107L253,107L253,101L253,96L257,88L266,74L262,68L255,63L254,59L251,56L247,53L236,43L232,37L223,34L220,31L214,30L213,30Z " data-fips="ET26" data-fips-="ET21|ET45" data-iso3="ETH" data-name="Afar"/><path d="M108,185L109,186L110,188L110,195L106,195L104,194L98,195L95,197L93,197L90,196L84,195L84,195L87,198L90,199L92,201L92,203L96,205L97,210L101,220L102,223L105,229L108,232L108,233L120,236L120,240L119,241L119,246L125,255L139,256L139,256L141,255L145,248L144,244L146,240L147,238L157,239L162,236L167,238L168,231L168,229L172,227L169,222L165,220L165,218L166,214L167,207L170,207L174,210L175,210L176,213L174,223L177,223L178,222L177,221L179,215L179,212L183,211L187,211L189,213L191,216L193,217L195,217L195,212L192,207L191,206L184,203L183,196L177,194L173,197L176,189L179,186L180,181L183,175L182,171L185,173L185,170L184,166L181,165L179,168L175,166L163,168L161,167L160,166L158,168L158,169L161,170L161,174L156,175L156,182L157,185L155,189L150,193L142,192L138,189L128,185L126,185L125,181L122,179L123,176L122,174L120,173L120,177L119,178L115,179L114,178L112,178L108,183L108,185Z " data-fips="ET54" data-fips-="ET39|ET53" data-iso3="ETH" data-name="Southern Nations, Nationalities and Peoples"/><path d="M83,162L75,166L72,164L66,165L64,164L62,168L63,169L62,171L60,172L58,176L59,178L64,180L70,181L77,185L84,194L84,195L90,196L93,197L95,197L98,195L104,194L106,195L110,195L110,188L109,186L108,185L108,186L105,187L105,185L103,184L100,179L101,174L100,174L105,171L96,169L85,161L83,161L83,162Z " data-fips="ET49" data-fips-="ET40" data-iso3="ETH" data-name="Gambela Peoples"/><path d="M148,123L148,124L147,125L142,123L139,125L137,125L138,122L130,128L129,129L128,137L128,138L130,145L127,149L123,145L121,145L114,137L109,132L101,131L99,135L91,138L90,142L89,148L82,148L83,161L83,161L85,161L96,169L105,171L100,174L101,174L100,179L103,184L105,185L105,187L108,186L108,185L108,183L112,178L114,178L115,179L119,178L120,177L120,173L122,174L123,176L122,179L125,181L126,185L128,185L138,189L142,192L150,193L155,189L157,185L156,182L156,175L161,174L161,170L158,169L158,168L160,166L161,167L163,168L175,166L179,168L181,165L184,166L185,170L185,173L182,171L183,175L180,181L179,186L176,189L173,197L177,194L183,196L184,203L191,206L192,207L195,212L195,217L193,217L191,216L189,213L187,211L183,211L179,212L179,215L177,221L178,222L177,223L174,223L176,213L175,210L174,210L170,207L167,207L166,214L165,218L165,220L169,222L172,227L168,229L168,231L167,238L162,236L157,239L147,238L146,240L144,244L145,248L141,255L139,256L139,256L143,256L149,259L169,272L174,274L178,275L184,274L190,276L194,276L194,276L200,273L209,251L209,249L213,237L215,234L219,235L227,233L230,230L235,227L234,218L234,210L239,205L240,205L247,208L251,212L253,209L258,207L261,202L264,191L257,188L256,185L258,180L257,178L257,172L263,161L265,161L271,165L272,168L273,171L277,166L279,166L276,154L273,149L270,141L267,139L267,136L266,136L266,136L262,140L260,142L253,141L253,142L252,142L248,142L243,141L236,145L232,144L235,143L230,142L230,143L229,143L225,144L223,146L219,153L216,155L215,156L212,149L211,149L210,150L209,150L208,156L203,158L202,157L199,157L198,154L200,151L198,147L202,145L202,143L197,139L188,135L187,132L184,129L188,128L189,123L186,122L181,122L179,127L175,128L163,134L159,130L154,129L149,124L148,123Z M135,141L135,141L135,141L136,142L136,142L136,142L136,142L135,143L135,145L135,144L134,145L134,145L134,145L134,145L133,143L134,141L135,141Z M188,151L188,151L189,151L189,151L190,152L190,153L190,153L190,153L190,154L190,154L190,154L189,154L189,154L188,156L188,156L188,157L187,156L187,156L187,156L186,156L186,155L186,155L185,155L185,155L185,155L185,154L185,154L184,153L184,153L184,153L184,153L184,153L184,152L185,152L185,151L185,151L186,151L187,151L187,151L187,151L187,151L187,151L188,151L188,151Z M130,155L130,156L130,156L130,156L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L129,155L128,156L128,156L127,156L127,156L127,156L126,156L126,156L126,156L126,156L125,156L125,156L125,155L125,155L125,154L125,154L125,154L126,153L126,152L128,152L128,152L128,152L129,152L129,153L129,153L129,153L129,153L130,153L130,153L130,153L130,154L130,154L130,155Z M131,153L131,153L132,153L132,153L132,154L132,154L132,154L132,154L132,154L131,154L131,154L131,154L130,154L130,154L130,153L130,153L131,153Z M265,144L265,144L265,145L264,146L264,146L264,146L265,147L265,147L265,148L264,148L264,148L263,147L263,147L263,147L262,148L262,148L262,147L262,147L261,147L261,147L260,147L260,147L260,147L260,146L260,145L261,144L262,144L262,144L262,144L263,144L263,144L264,144L264,144L265,144Z " data-fips="ET44" data-fips-="ET27" data-iso3="ETH" data-name="Addis Ababa"/><path d="M132,154L132,154L132,154L132,153L132,153L131,153L131,153L130,153L130,153L130,154L130,154L131,154L131,154L131,154L132,154L132,154L132,154Z M125,154L125,154L125,154L125,155L125,155L125,155L125,156L125,156L126,156L126,156L126,156L126,156L127,156L127,156L127,156L128,156L128,156L129,155L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L130,156L130,156L130,156L130,155L130,154L130,154L130,153L130,153L130,153L129,153L129,153L129,153L129,153L129,152L129,152L128,152L128,152L128,152L126,152L126,153L125,154Z M136,142L136,142L136,142L135,141L135,141L135,141L134,141L133,143L134,145L134,145L134,145L134,145L134,145L135,144L135,145L135,143L136,142L136,142Z M109,86L106,88L104,91L105,95L102,101L103,104L101,108L98,114L93,110L90,112L87,117L88,124L88,127L86,129L83,137L82,142L82,148L89,148L90,142L91,138L99,135L101,131L109,132L114,137L121,145L123,145L127,149L130,145L128,138L128,137L129,129L130,128L138,122L137,125L139,125L142,123L147,125L148,124L148,123L145,123L134,120L133,118L134,113L132,111L133,110L136,106L137,100L134,98L133,91L131,91L124,85L119,86L115,89L112,90L109,86L109,86Z " data-fips="ET47" data-fips-="ET43" data-iso3="ETH" data-name="Benshangul-Gumaz"/><path d="M188,151L187,151L187,151L187,151L187,151L187,151L187,151L186,151L185,151L185,151L185,152L184,152L184,153L184,153L184,153L184,153L184,153L185,154L185,154L185,155L185,155L185,155L186,155L186,155L186,155L186,156L187,156L187,156L187,156L188,157L188,156L188,156L189,154L189,154L190,154L190,154L190,154L190,153L190,153L190,153L190,152L189,151L189,151L188,151L188,151L188,151Z " data-fips="ET44" data-fips-="ET01" data-iso3="ETH" data-name="Addis Ababa"/><path d="M253,107L242,108L238,114L235,129L237,131L232,135L230,141L230,143L230,142L235,143L232,144L236,145L243,141L248,142L252,142L253,142L253,141L256,137L260,138L262,135L265,135L266,136L267,136L267,139L270,141L273,149L276,154L279,166L277,166L273,171L272,168L271,165L265,161L263,161L257,172L257,178L258,180L256,185L257,188L264,191L261,202L258,207L253,209L251,212L247,208L240,205L239,205L234,210L234,218L235,227L230,230L227,233L219,235L215,234L213,237L209,249L209,251L200,273L194,276L196,277L202,278L204,279L209,273L211,269L223,263L223,263L232,260L240,266L249,266L253,265L263,261L266,260L278,258L280,257L281,253L285,250L294,246L304,243L325,244L326,244L348,219L358,207L392,172L370,173L369,172L304,152L295,144L290,142L290,141L278,125L276,120L273,115L278,107L275,107L274,105L269,106L263,107L253,108L253,107Z " data-fips="ET48" data-fips-="ET38|ET52" data-iso3="ETH" data-name="Somali"/><path d="M265,135L262,135L260,138L256,137L253,141L253,142L253,141L260,142L262,140L266,136L266,136L265,135Z " data-fips="ET48" data-fips-="" data-iso3="ETH" data-name="Dire Dawa"/><path d="M264,144L263,144L263,144L262,144L262,144L262,144L261,144L260,145L260,146L260,147L260,147L260,147L261,147L261,147L262,147L262,147L262,148L262,148L263,147L263,147L263,147L264,148L264,148L265,148L265,147L265,147L264,146L264,146L264,146L265,145L265,144L265,144L264,144L264,144Z " data-fips="ET50" data-fips-="" data-iso3="ETH" data-name="Harari People"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.2663152129" lon0="38.3111557051"/><bbox h="163.5" w="205.07" x="923.96" y="944.42"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M8,275L7,274L6,272L2,271L0,267L0,299L6,299L6,294L8,290L6,285L7,283L9,277L9,276L8,275Z " data-iso="COD"/><path d="M284,94L270,96L272,94L276,90L281,88L286,85L289,80L288,76L283,69L282,68L276,71L275,75L273,76L268,73L267,73L266,74L264,77L257,88L254,91L254,108L255,108L271,105L277,107L279,107L281,102L284,99L286,95L284,94Z " data-iso="DJI"/><path d="M212,0L213,3L222,4L216,0L212,0Z M137,34L138,34L148,34L152,30L160,37L167,21L170,23L175,25L178,29L181,30L187,29L193,26L196,29L203,28L208,29L230,36L238,46L244,51L252,58L257,65L263,70L264,72L266,74L267,73L268,73L273,76L275,75L276,71L282,68L282,66L280,64L279,66L275,65L274,61L269,57L266,57L263,49L250,40L246,34L239,26L231,23L227,20L218,17L215,12L214,10L210,7L209,10L209,14L203,5L201,0L142,0L138,12L135,14L137,28L137,34Z " data-iso="ERI"/><path d="M137,34L136,40L134,48L130,56L129,60L128,68L118,71L117,73L109,86L102,101L102,108L92,111L87,118L88,124L85,131L82,141L82,142L82,143L82,162L79,165L64,165L58,175L60,178L73,182L78,186L86,197L91,200L96,205L101,219L102,223L106,230L108,231L108,232L108,232L119,235L120,237L119,247L124,254L126,255L150,260L171,273L183,275L197,277L203,278L210,271L211,269L215,267L232,259L240,266L242,267L254,266L257,266L258,264L260,262L278,258L285,250L295,245L305,243L325,244L330,239L348,219L387,178L392,172L385,172L370,173L369,172L304,152L294,144L292,143L286,135L285,132L277,125L273,115L278,108L279,107L277,107L271,105L255,108L254,108L254,91L257,88L264,77L266,74L264,72L263,70L257,65L252,58L244,51L238,46L230,36L208,29L203,28L196,29L193,26L187,29L181,30L178,29L175,25L170,23L167,21L160,37L152,30L148,34L138,34L137,34Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-iso="ETH"/><path d="M257,266L254,266L242,267L240,266L232,259L215,267L211,269L210,271L203,278L197,277L183,275L171,273L150,260L126,255L124,254L119,247L120,237L119,235L108,232L108,232L104,236L88,251L83,256L79,260L82,267L89,274L88,278L89,284L91,285L92,289L97,294L99,299L237,299L237,291L245,283L254,270L257,266Z " data-iso="KEN"/><path d="M82,142L82,142L82,141L85,131L88,124L87,118L92,111L102,108L102,101L109,86L117,73L118,71L128,68L129,60L130,56L134,48L136,40L137,34L137,28L135,14L138,12L142,0L0,0L0,127L9,134L19,133L29,124L35,114L46,105L45,101L45,90L39,83L54,84L64,79L61,93L63,111L69,117L78,125L80,133L78,136L82,142L82,142Z " data-iso="SDN"/><path d="M8,275L9,274L15,269L24,271L30,269L33,273L38,275L42,271L53,269L57,267L60,270L68,270L73,265L79,260L83,256L88,251L104,236L108,232L108,231L106,230L102,223L101,219L96,205L91,200L86,197L78,186L73,182L60,178L58,175L64,165L79,165L82,162L82,143L82,142L82,142L82,142L78,136L80,133L78,125L69,117L63,111L61,93L64,79L54,84L39,83L45,90L45,101L46,105L35,114L29,124L19,133L9,134L0,127L0,267L2,271L6,272L7,274L8,275Z " data-iso="SSD"/><path d="M411,98L406,96L391,101L384,102L374,102L368,107L359,111L357,111L343,109L332,114L324,119L311,119L299,111L294,106L290,99L286,95L284,99L281,102L279,107L278,108L273,115L277,125L285,132L286,135L292,143L294,144L304,152L369,172L370,173L385,172L392,172L396,167L413,138L412,127L411,98L411,98Z " data-iso="SOL"/><path d="M411,98L412,127L413,138L396,167L392,172L387,178L348,219L330,239L325,244L305,243L295,245L285,250L278,258L260,262L258,264L257,266L254,270L245,283L237,291L237,299L350,299L351,298L370,279L384,263L394,251L400,241L409,228L417,213L418,207L421,199L424,194L432,178L434,171L440,166L443,159L446,151L450,146L450,80L445,86L437,90L427,93L421,95L414,97L411,98Z " data-iso="SOM"/><path d="M79,260L73,265L68,270L60,270L57,267L53,269L42,271L38,275L33,273L30,269L24,271L15,269L9,274L8,275L9,276L9,277L7,283L6,285L8,290L6,294L6,299L99,299L97,294L92,289L91,285L89,284L88,278L89,274L82,267L79,260Z " data-iso="UGA"/><path d="M273,0L272,2L274,8L271,11L276,14L279,27L281,34L281,39L284,42L285,56L290,65L290,68L294,67L302,70L315,65L318,66L325,65L327,61L332,59L338,53L362,49L366,47L376,44L381,40L388,35L395,36L403,35L405,33L410,27L411,25L422,19L429,16L435,15L442,11L450,8L450,0L273,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,47L134,49L131,54L128,69L126,69L120,70L117,72L109,86L109,86L112,90L115,89L119,86L124,85L131,91L133,91L134,98L137,100L136,106L133,110L132,111L134,113L133,118L134,120L145,123L148,123L149,124L154,129L159,130L163,134L175,128L179,127L181,122L186,122L189,123L188,128L184,129L187,132L188,135L197,139L202,143L202,145L198,147L200,151L198,154L199,157L202,157L203,158L208,156L209,150L210,150L210,149L212,146L211,142L212,139L211,136L214,136L216,131L214,129L217,128L218,119L217,113L217,109L218,107L218,103L215,100L215,97L212,91L209,79L209,78L208,78L204,79L204,78L200,78L197,77L196,72L198,66L194,62L192,62L186,54L185,51L180,49L178,51L170,52L167,50L164,50L163,52L158,54L146,54L137,49L136,45L135,47Z M154,90L150,88L149,89L148,87L148,81L149,80L150,79L154,80L155,79L158,78L159,79L160,80L160,81L161,82L160,85L160,86L159,89L157,91L156,93L154,93L155,92L154,90Z " data-fips="ET46" data-fips-="ET19" data-iso3="ETH" data-name="Amhara"/><path d="M136,45L137,49L146,54L158,54L163,52L164,50L167,50L170,52L178,51L180,49L185,51L186,54L192,62L194,62L198,66L196,72L197,77L200,78L204,78L204,79L208,78L209,78L209,77L211,68L208,65L209,58L208,56L208,52L210,49L209,46L208,37L207,36L208,33L207,32L212,32L213,30L213,29L211,30L210,29L203,27L199,29L196,29L193,25L189,29L181,31L177,29L174,24L170,24L167,20L160,37L154,30L152,30L149,33L148,34L142,32L142,33L136,44L136,45Z " data-fips="ET06" data-fips-="ET37|ET54" data-iso3="ETH" data-name="Tigray"/><path d="M213,30L212,32L207,32L208,33L207,36L208,37L209,46L210,49L208,52L208,56L209,58L208,65L211,68L209,77L209,78L209,79L212,91L215,97L215,100L218,103L218,107L217,109L217,113L218,119L217,128L214,129L216,131L214,136L211,136L212,139L211,142L212,146L210,149L210,150L211,149L212,149L215,156L216,155L219,153L223,146L225,144L229,143L230,143L230,141L232,135L237,131L235,129L238,114L242,108L253,107L253,107L253,101L253,96L257,88L266,74L262,68L255,63L254,59L251,56L247,53L236,43L232,37L223,34L220,31L214,30L213,30Z " data-fips="ET26" data-fips-="ET21|ET45" data-iso3="ETH" data-name="Afar"/><path d="M108,185L109,186L110,188L110,195L106,195L104,194L98,195L95,197L93,197L90,196L84,195L84,195L87,198L90,199L92,201L92,203L96,205L97,210L101,220L102,223L105,229L108,232L108,233L120,236L120,240L119,241L119,246L125,255L139,256L139,256L141,255L145,248L144,244L146,240L147,238L157,239L162,236L167,238L168,231L168,229L172,227L169,222L165,220L165,218L166,214L167,207L170,207L174,210L175,210L176,213L174,223L177,223L178,222L177,221L179,215L179,212L183,211L187,211L189,213L191,216L193,217L195,217L195,212L192,207L191,206L184,203L183,196L177,194L173,197L176,189L179,186L180,181L183,175L182,171L185,173L185,170L184,166L181,165L179,168L175,166L163,168L161,167L160,166L158,168L158,169L161,170L161,174L156,175L156,182L157,185L155,189L150,193L142,192L138,189L128,185L126,185L125,181L122,179L123,176L122,174L120,173L120,177L119,178L115,179L114,178L112,178L108,183L108,185Z " data-fips="ET54" data-fips-="ET39|ET53" data-iso3="ETH" data-name="Southern Nations, Nationalities and Peoples"/><path d="M83,162L75,166L72,164L66,165L64,164L62,168L63,169L62,171L60,172L58,176L59,178L64,180L70,181L77,185L84,194L84,195L90,196L93,197L95,197L98,195L104,194L106,195L110,195L110,188L109,186L108,185L108,186L105,187L105,185L103,184L100,179L101,174L100,174L105,171L96,169L85,161L83,161L83,162Z " data-fips="ET49" data-fips-="ET40" data-iso3="ETH" data-name="Gambela Peoples"/><path d="M148,123L148,124L147,125L142,123L139,125L137,125L138,122L130,128L129,129L128,137L128,138L130,145L127,149L123,145L121,145L114,137L109,132L101,131L99,135L91,138L90,142L89,148L82,148L83,161L83,161L85,161L96,169L105,171L100,174L101,174L100,179L103,184L105,185L105,187L108,186L108,185L108,183L112,178L114,178L115,179L119,178L120,177L120,173L122,174L123,176L122,179L125,181L126,185L128,185L138,189L142,192L150,193L155,189L157,185L156,182L156,175L161,174L161,170L158,169L158,168L160,166L161,167L163,168L175,166L179,168L181,165L184,166L185,170L185,173L182,171L183,175L180,181L179,186L176,189L173,197L177,194L183,196L184,203L191,206L192,207L195,212L195,217L193,217L191,216L189,213L187,211L183,211L179,212L179,215L177,221L178,222L177,223L174,223L176,213L175,210L174,210L170,207L167,207L166,214L165,218L165,220L169,222L172,227L168,229L168,231L167,238L162,236L157,239L147,238L146,240L144,244L145,248L141,255L139,256L139,256L143,256L149,259L169,272L174,274L178,275L184,274L190,276L194,276L194,276L200,273L209,251L209,249L213,237L215,234L219,235L227,233L230,230L235,227L234,218L234,210L239,205L240,205L247,208L251,212L253,209L258,207L261,202L264,191L257,188L256,185L258,180L257,178L257,172L263,161L265,161L271,165L272,168L273,171L277,166L279,166L276,154L273,149L270,141L267,139L267,136L266,136L266,136L262,140L260,142L253,141L253,142L252,142L248,142L243,141L236,145L232,144L235,143L230,142L230,143L229,143L225,144L223,146L219,153L216,155L215,156L212,149L211,149L210,150L209,150L208,156L203,158L202,157L199,157L198,154L200,151L198,147L202,145L202,143L197,139L188,135L187,132L184,129L188,128L189,123L186,122L181,122L179,127L175,128L163,134L159,130L154,129L149,124L148,123Z M135,141L135,141L135,141L136,142L136,142L136,142L136,142L135,143L135,145L135,144L134,145L134,145L134,145L134,145L133,143L134,141L135,141Z M188,151L188,151L189,151L189,151L190,152L190,153L190,153L190,153L190,154L190,154L190,154L189,154L189,154L188,156L188,156L188,157L187,156L187,156L187,156L186,156L186,155L186,155L185,155L185,155L185,155L185,154L185,154L184,153L184,153L184,153L184,153L184,153L184,152L185,152L185,151L185,151L186,151L187,151L187,151L187,151L187,151L187,151L188,151L188,151Z M130,155L130,156L130,156L130,156L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L129,155L128,156L128,156L127,156L127,156L127,156L126,156L126,156L126,156L126,156L125,156L125,156L125,155L125,155L125,154L125,154L125,154L126,153L126,152L128,152L128,152L128,152L129,152L129,153L129,153L129,153L129,153L130,153L130,153L130,153L130,154L130,154L130,155Z M131,153L131,153L132,153L132,153L132,154L132,154L132,154L132,154L132,154L131,154L131,154L131,154L130,154L130,154L130,153L130,153L131,153Z M265,144L265,144L265,145L264,146L264,146L264,146L265,147L265,147L265,148L264,148L264,148L263,147L263,147L263,147L262,148L262,148L262,147L262,147L261,147L261,147L260,147L260,147L260,147L260,146L260,145L261,144L262,144L262,144L262,144L263,144L263,144L264,144L264,144L265,144Z " data-fips="ET44" data-fips-="ET27" data-iso3="ETH" data-name="Addis Ababa"/><path d="M132,154L132,154L132,154L132,153L132,153L131,153L131,153L130,153L130,153L130,154L130,154L131,154L131,154L131,154L132,154L132,154L132,154Z M125,154L125,154L125,154L125,155L125,155L125,155L125,156L125,156L126,156L126,156L126,156L126,156L127,156L127,156L127,156L128,156L128,156L129,155L130,156L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,157L130,156L130,156L130,156L130,156L130,155L130,154L130,154L130,153L130,153L130,153L129,153L129,153L129,153L129,153L129,152L129,152L128,152L128,152L128,152L126,152L126,153L125,154Z M136,142L136,142L136,142L135,141L135,141L135,141L134,141L133,143L134,145L134,145L134,145L134,145L134,145L135,144L135,145L135,143L136,142L136,142Z M109,86L106,88L104,91L105,95L102,101L103,104L101,108L98,114L93,110L90,112L87,117L88,124L88,127L86,129L83,137L82,142L82,148L89,148L90,142L91,138L99,135L101,131L109,132L114,137L121,145L123,145L127,149L130,145L128,138L128,137L129,129L130,128L138,122L137,125L139,125L142,123L147,125L148,124L148,123L145,123L134,120L133,118L134,113L132,111L133,110L136,106L137,100L134,98L133,91L131,91L124,85L119,86L115,89L112,90L109,86L109,86Z " data-fips="ET47" data-fips-="ET43" data-iso3="ETH" data-name="Benshangul-Gumaz"/><path d="M188,151L187,151L187,151L187,151L187,151L187,151L187,151L186,151L185,151L185,151L185,152L184,152L184,153L184,153L184,153L184,153L184,153L185,154L185,154L185,155L185,155L185,155L186,155L186,155L186,155L186,156L187,156L187,156L187,156L188,157L188,156L188,156L189,154L189,154L190,154L190,154L190,154L190,153L190,153L190,153L190,152L189,151L189,151L188,151L188,151L188,151Z " data-fips="ET44" data-fips-="ET01" data-iso3="ETH" data-name="Addis Ababa"/><path d="M253,107L242,108L238,114L235,129L237,131L232,135L230,141L230,143L230,142L235,143L232,144L236,145L243,141L248,142L252,142L253,142L253,141L256,137L260,138L262,135L265,135L266,136L267,136L267,139L270,141L273,149L276,154L279,166L277,166L273,171L272,168L271,165L265,161L263,161L257,172L257,178L258,180L256,185L257,188L264,191L261,202L258,207L253,209L251,212L247,208L240,205L239,205L234,210L234,218L235,227L230,230L227,233L219,235L215,234L213,237L209,249L209,251L200,273L194,276L196,277L202,278L204,279L209,273L211,269L223,263L223,263L232,260L240,266L249,266L253,265L263,261L266,260L278,258L280,257L281,253L285,250L294,246L304,243L325,244L326,244L348,219L358,207L392,172L370,173L369,172L304,152L295,144L290,142L290,141L278,125L276,120L273,115L278,107L275,107L274,105L269,106L263,107L253,108L253,107Z " data-fips="ET48" data-fips-="ET38|ET52" data-iso3="ETH" data-name="Somali"/><path d="M265,135L262,135L260,138L256,137L253,141L253,142L253,141L260,142L262,140L266,136L266,136L265,135Z " data-fips="ET48" data-fips-="" data-iso3="ETH" data-name="Dire Dawa"/><path d="M264,144L263,144L263,144L262,144L262,144L262,144L261,144L260,145L260,146L260,147L260,147L260,147L261,147L261,147L262,147L262,147L262,148L262,148L263,147L263,147L263,147L264,148L264,148L265,148L265,147L265,147L264,146L264,146L264,146L265,145L265,144L265,144L264,144L264,144Z " data-fips="ET50" data-fips-="" data-iso3="ETH" data-name="Harari People"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/EU.svg b/plugins/UserCountryMap/svg/EU.svg
index 95e46c6694..bed2b60bfc 100644
--- a/plugins/UserCountryMap/svg/EU.svg
+++ b/plugins/UserCountryMap/svg/EU.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 500 367" height="367px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 500 367" width="500px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="367.363973732" padding="0" w="500"><proj id="laea" lat0="50.5" lon0="14.0"/><bbox h="461.97" w="630.48" x="684.76" y="753.17"/><llbbox lat0="33.0" lat1="68.0" lon0="-17.0" lon1="45.0"/></view></views></metadata><g id="countries"><path d="M293.5,271.0L291.3,270.6L290.7,270.5L288.9,278.0L289.8,278.1L289.9,288.5L290.5,291.6L295.1,297.7L295.2,298.6L298.0,297.5L297.4,296.1L299.8,294.3L301.7,290.4L301.5,287.7L301.5,287.0L301.5,286.8L297.2,280.8L297.7,277.4L297.8,277.3L297.9,276.9L297.2,274.4L295.9,273.2L294.0,271.2L293.7,271.0L293.5,271.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M161.8,265.9L161.9,265.1L161.0,264.7L160.2,264.7L159.9,264.9L159.8,265.3L160.8,266.4L161.6,266.1L161.8,266.1L161.8,265.9Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M471.0,239.3L470.8,239.5L466.1,242.3L461.4,245.2L461.1,245.5L461.4,245.8L468.3,254.0L470.6,252.9L474.6,254.2L475.0,254.5L475.7,254.1L476.6,253.2L480.5,254.4L482.5,252.9L486.7,257.4L487.2,258.0L487.6,257.9L488.5,257.1L489.7,256.6L489.3,255.7L485.2,251.2L480.2,249.5L475.7,243.5L476.6,242.0L472.1,240.8L471.3,239.7L471.0,239.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M268.9,213.2L268.6,212.4L256.2,210.0L254.6,213.0L250.3,213.7L249.0,212.2L248.8,212.1L248.7,212.3L246.7,213.9L243.5,224.7L238.2,222.3L232.2,224.9L230.1,225.1L226.8,223.5L225.1,226.0L220.7,223.3L220.5,223.4L220.7,223.5L221.1,224.0L221.0,224.7L220.4,225.8L220.4,226.0L220.5,226.7L220.6,227.0L220.7,227.8L220.6,227.9L220.9,228.0L224.5,230.1L225.7,228.9L226.4,229.8L226.3,230.1L226.5,230.2L230.4,230.4L237.8,228.4L239.2,232.2L246.6,233.7L248.0,234.0L248.3,234.1L258.2,232.8L261.8,232.1L263.6,230.7L264.0,230.5L265.0,229.4L266.1,225.5L270.2,219.6L270.6,219.1L270.1,218.8L268.6,215.5L268.5,215.0L269.0,213.5L269.1,213.4L268.9,213.2Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M475.0,254.5L475.2,254.7L475.6,254.9L475.8,255.0L482.4,258.8L485.8,258.3L487.2,258.0L486.7,257.4L482.5,252.9L480.5,254.4L476.6,253.2L475.7,254.1L475.0,254.5Z M492.2,223.3L490.1,231.3L485.8,232.2L480.5,229.3L478.9,229.4L478.2,229.6L478.1,230.0L478.1,232.7L482.0,234.3L481.9,236.6L477.5,237.5L473.3,236.8L471.9,237.5L471.0,239.3L471.3,239.7L472.1,240.8L476.6,242.0L475.7,243.5L480.2,249.5L485.2,251.2L489.3,255.7L489.7,256.6L490.2,256.4L497.0,244.7L500.0,246.0L500.0,228.6L494.7,224.4L493.1,223.5L492.2,223.3Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M198.9,189.6L199.7,189.4L200.1,190.0L199.5,189.9L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L182.9,182.7L184.6,182.1L185.4,182.0L189.4,183.8L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.6Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M310.8,252.8L310.6,253.0L310.6,260.5L311.7,261.0L312.2,265.9L310.6,266.5L310.8,271.6L310.2,271.8L311.5,273.1L315.6,277.0L315.4,278.1L315.5,280.6L315.4,280.8L316.2,280.8L325.9,277.6L328.9,278.8L333.4,279.1L338.7,277.0L338.7,273.5L339.6,273.6L339.5,273.4L343.8,269.9L347.5,270.0L351.3,269.1L351.0,268.4L346.7,265.0L348.3,262.3L348.7,257.5L349.8,255.2L352.6,253.6L352.3,251.3L348.5,251.2L347.0,249.8L339.6,249.6L337.2,250.6L331.0,255.7L314.8,255.9L312.7,256.6L311.3,253.2L310.8,252.8Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M282.0,271.7L282.1,271.7L281.8,267.8L284.5,263.9L286.6,261.9L286.8,261.9L287.2,261.4L289.2,256.8L285.8,252.7L284.9,249.0L284.6,249.0L284.2,249.1L282.1,247.1L270.1,245.8L264.9,248.0L262.3,247.0L262.0,251.0L264.7,253.3L265.5,256.3L277.5,269.2L281.3,271.5L282.0,271.7Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M326.3,132.7L322.6,136.8L321.2,136.8L319.1,138.7L319.0,138.8L319.1,139.2L320.1,143.2L315.9,147.6L315.5,152.8L311.6,156.8L304.8,158.3L304.3,158.1L305.4,161.3L307.8,166.7L308.1,170.2L304.8,174.6L307.4,175.8L307.6,180.6L308.1,181.5L308.2,181.4L316.3,176.3L328.9,175.9L329.9,177.1L338.0,176.3L340.5,175.0L342.4,176.7L347.3,175.0L350.1,175.9L349.6,171.1L354.2,167.0L355.3,166.8L355.2,166.6L350.8,156.9L354.6,157.0L357.3,152.7L351.6,150.7L349.8,147.9L347.5,146.6L345.7,143.4L343.6,142.6L342.4,135.0L337.2,133.5L334.5,135.6L333.4,133.3L327.4,133.4L326.5,132.7L326.3,132.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M219.4,222.6L215.4,221.3L212.7,222.0L208.5,222.1L208.0,221.8L207.2,222.2L203.4,224.6L199.5,228.5L196.6,234.9L200.1,232.4L202.6,237.3L202.7,237.7L202.9,237.9L207.8,238.2L211.2,234.3L212.6,233.8L214.9,237.2L219.3,234.0L222.3,234.8L226.0,231.4L226.3,230.1L226.4,229.8L225.7,228.9L224.5,230.1L220.9,228.0L220.6,227.9L220.1,227.9L220.0,227.9L220.0,227.5L220.0,226.8L220.4,225.8L221.0,224.7L221.1,224.0L220.7,223.5L220.5,223.4L219.4,222.6Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M408.6,324.4L411.2,318.8L408.9,321.0L404.5,323.5L400.4,324.0L399.5,326.5L399.0,326.5L404.6,325.4L406.8,326.1L409.3,325.0L408.6,324.4Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M398.5,326.5L396.8,328.3L398.3,331.3L399.9,331.5L409.5,325.1L409.3,325.0L406.8,326.1L404.6,325.4L399.0,326.5L398.5,326.5Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M254.9,191.8L251.7,190.0L251.2,191.7L245.3,194.4L243.4,196.1L241.0,196.2L239.2,198.2L242.5,206.6L248.5,211.7L248.8,212.1L249.0,212.2L250.3,213.7L254.6,213.0L256.2,210.0L268.6,212.4L268.9,213.2L269.1,213.4L269.2,212.6L274.6,209.9L276.1,208.5L280.4,203.9L280.6,203.9L280.6,203.6L278.4,200.2L275.7,199.5L272.2,197.0L268.5,195.7L267.1,198.7L262.8,193.8L257.9,191.4L255.5,191.7L255.0,191.7L254.9,191.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M250.2,160.7L249.0,159.8L250.3,162.4L251.0,162.3L251.2,162.3L251.1,161.8L251.2,161.5L250.2,160.7Z M220.1,152.2L221.4,155.5L219.4,156.5L221.0,157.5L220.8,160.0L223.1,162.0L219.1,161.1L218.3,163.1L211.2,162.4L210.1,165.8L210.4,166.2L209.0,171.4L206.7,173.6L208.4,174.5L206.4,179.3L201.5,180.2L202.7,183.1L200.3,187.8L201.2,188.6L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.6L200.6,197.1L201.6,202.4L201.5,202.9L201.8,202.9L203.7,206.0L208.2,206.5L212.4,209.5L207.7,221.6L208.0,221.8L208.5,222.1L212.7,222.0L215.4,221.3L219.4,222.6L220.5,223.4L220.7,223.3L225.1,226.0L226.8,223.5L230.1,225.1L232.2,224.9L238.2,222.3L243.5,224.7L246.7,213.9L248.7,212.3L248.8,212.1L248.5,211.7L242.5,206.6L239.2,198.2L241.0,196.2L243.4,196.1L245.3,194.4L251.2,191.7L251.7,190.0L254.9,191.8L255.0,191.7L255.0,191.6L256.2,187.8L253.6,182.2L254.5,179.8L251.5,172.9L251.5,163.7L251.4,163.7L244.5,157.0L241.9,156.4L235.1,161.3L233.3,158.0L228.1,155.7L226.6,155.8L226.1,152.5L226.0,152.3L222.9,151.9L221.4,151.3L220.1,151.2L220.1,152.2Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M231.5,144.9L227.0,147.2L231.1,150.4L232.1,149.6L231.5,144.9Z M242.1,143.6L242.4,141.2L236.1,142.5L234.3,147.8L236.9,149.3L238.0,153.3L239.0,153.0L240.3,145.9L242.1,143.6Z M220.1,151.2L221.4,151.3L222.9,151.9L226.0,152.3L225.9,151.3L225.6,145.8L228.0,143.5L227.5,142.5L231.2,139.2L233.0,136.1L230.0,135.0L230.3,131.3L231.8,127.0L228.8,125.6L225.8,129.3L221.5,129.7L219.3,133.0L222.0,133.5L224.8,130.9L221.6,135.2L218.6,134.4L217.7,144.2L218.8,145.1L220.1,150.3L220.1,151.2Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M203.9,325.8L196.8,323.5L197.0,324.7L191.8,323.9L191.2,323.0L187.7,324.8L185.0,325.2L177.5,323.4L169.9,322.4L167.8,323.1L160.3,324.0L158.4,323.6L147.5,323.5L140.5,326.0L139.5,327.4L135.7,327.1L131.5,328.3L121.9,332.1L120.4,331.6L122.5,339.3L121.6,349.5L123.4,361.8L101.8,361.3L100.6,365.4L202.3,365.4L196.8,355.1L197.5,352.4L202.4,348.5L204.2,343.6L204.1,336.6L205.3,331.2L204.3,329.9L207.4,325.8L203.9,325.8Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M419.4,360.9L418.9,360.2L418.7,360.0L418.6,360.2L414.8,362.9L412.4,363.5L406.9,365.4L422.1,365.4L421.4,364.2L420.5,362.8L419.4,360.9Z M401.0,365.4L400.1,362.8L391.1,365.4L401.0,365.4Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M168.5,293.9L165.9,292.8L162.5,294.7L168.8,297.9L170.8,294.5L168.5,293.9Z M87.0,254.1L91.4,253.5L92.9,256.6L99.1,257.6L103.1,263.8L97.5,266.8L97.7,268.1L94.7,274.8L95.0,276.9L92.9,278.9L90.5,278.3L91.2,284.0L90.8,287.0L88.3,290.1L88.4,294.7L85.0,298.0L84.8,302.0L86.6,302.2L91.1,306.1L92.2,312.6L94.4,315.6L98.4,315.2L102.0,313.4L104.0,313.9L106.8,312.4L118.9,315.3L125.8,314.4L127.4,311.9L131.5,309.5L136.3,309.8L140.2,302.5L142.9,301.5L144.8,299.5L143.5,298.6L144.8,289.1L148.7,285.5L152.1,281.1L156.1,279.0L164.6,276.8L170.0,274.6L172.5,269.1L172.4,268.4L167.7,268.6L166.4,267.9L162.8,266.7L161.8,266.1L161.6,266.1L160.8,266.4L159.8,265.3L159.9,264.9L159.5,263.9L148.1,260.5L146.0,260.3L141.4,256.5L138.7,252.8L138.5,252.8L134.8,252.7L130.0,251.2L124.5,248.6L119.9,248.4L111.4,243.8L104.1,242.4L90.1,240.8L87.6,241.7L88.4,248.2L86.4,254.1L87.0,254.1Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M293.8,113.4L291.3,119.8L293.6,117.2L297.6,114.6L293.8,113.4Z M295.1,111.2L294.8,109.6L290.6,110.6L293.3,112.8L295.1,111.2Z M303.5,119.5L307.2,117.0L311.0,118.4L319.5,120.3L319.6,120.2L319.6,120.0L320.1,117.4L317.7,108.6L320.0,101.8L319.1,100.8L319.1,101.0L315.9,101.8L306.7,101.6L306.5,102.7L299.9,105.2L297.4,107.3L298.6,113.2L303.1,114.5L303.5,119.1L303.5,119.5Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M273.4,14.0L274.4,14.4L283.7,21.5L284.2,21.5L287.0,31.5L288.6,33.8L288.1,38.1L290.8,43.3L291.1,43.2L295.6,45.1L296.3,49.0L294.0,52.7L293.3,55.6L286.6,68.3L283.3,69.7L282.2,73.8L285.3,88.3L284.9,90.5L287.5,94.8L291.4,96.6L292.2,99.8L293.2,97.9L294.3,101.6L296.2,99.7L300.4,98.5L308.0,94.4L307.4,93.2L315.8,91.1L316.0,91.0L321.2,82.4L326.3,70.9L325.2,62.3L319.2,58.9L317.8,52.4L314.2,46.5L313.1,37.0L308.0,29.9L307.7,28.8L309.5,22.6L308.5,20.8L303.4,17.6L302.3,9.7L302.5,9.5L302.1,9.2L302.7,5.0L301.6,3.3L296.5,0.5L291.8,4.2L291.0,6.2L291.2,12.7L289.3,16.3L285.6,14.8L282.5,16.4L276.6,11.4L273.5,13.6L273.4,14.0Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M217.6,269.3L211.9,271.4L210.7,274.6L212.6,281.6L215.2,282.3L217.8,275.6L217.6,269.3Z M179.5,184.2L176.1,184.4L173.0,191.2L163.4,194.9L160.5,198.4L154.2,194.1L150.7,192.5L151.2,203.1L147.6,202.9L144.9,201.7L143.1,202.4L140.4,198.7L130.5,199.3L132.0,203.4L130.0,203.7L131.9,207.0L132.9,206.9L139.4,210.9L140.9,211.2L141.8,214.4L145.2,215.1L143.6,218.7L147.1,225.1L148.6,225.8L147.3,231.8L147.6,233.4L144.9,241.5L146.0,241.5L141.2,251.7L139.9,252.7L138.7,252.8L141.4,256.5L146.0,260.3L148.1,260.5L159.5,263.9L159.9,264.9L160.2,264.7L161.0,264.7L161.9,265.1L161.8,265.9L161.8,266.1L162.8,266.7L166.4,267.9L167.7,268.6L172.4,268.4L172.3,268.1L171.7,264.3L173.7,261.1L179.8,258.0L184.2,260.7L186.7,261.1L193.8,264.8L197.1,263.9L202.4,259.5L203.3,259.2L203.6,258.8L203.7,259.0L203.7,259.1L204.1,258.9L205.2,255.1L203.6,255.4L200.9,253.6L199.3,245.7L202.9,242.6L201.1,238.6L202.1,238.2L202.7,237.7L202.6,237.3L200.1,232.4L196.6,234.9L199.5,228.5L203.4,224.6L207.2,222.2L208.0,221.8L207.7,221.6L212.4,209.5L208.2,206.5L203.7,206.0L201.8,202.9L201.5,202.9L201.1,202.7L200.1,202.5L199.8,202.7L198.3,202.1L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L179.5,184.2Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M420.0,359.9L419.9,359.3L420.5,356.9L419.9,358.0L418.7,360.0L418.9,360.2L419.4,360.9L420.0,359.9Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M133.4,133.3L128.5,135.8L127.2,137.3L127.4,140.4L133.7,142.7L135.9,144.3L136.4,144.7L140.3,142.6L141.1,140.3L139.5,133.8L137.7,133.0L133.5,133.7L133.4,133.3Z M145.8,112.2L142.5,112.2L145.2,116.7L147.2,115.8L145.6,114.4L145.8,112.2Z M148.0,104.1L142.9,104.9L145.9,107.0L148.0,104.1Z M163.5,106.7L164.1,105.7L151.0,108.0L151.7,109.8L148.2,111.3L148.0,115.6L144.3,121.0L148.4,120.7L146.9,122.6L145.3,127.9L148.4,128.9L144.6,137.6L144.2,139.7L147.0,140.5L153.3,140.0L151.5,143.6L152.2,147.2L154.6,148.3L152.0,154.3L153.3,156.7L145.4,155.7L141.1,158.8L144.7,158.6L142.5,164.5L135.5,166.7L136.9,169.6L141.7,170.5L141.4,171.4L145.8,174.3L139.0,176.3L132.4,181.2L129.4,182.1L131.7,184.4L140.8,184.7L142.7,182.0L146.6,181.2L151.6,183.5L155.9,181.5L159.4,183.5L168.5,184.1L173.1,182.2L173.7,180.3L169.4,179.3L168.6,178.2L171.7,175.5L173.7,175.5L176.2,172.8L177.7,168.9L177.5,167.1L173.7,164.5L171.5,163.9L169.6,165.2L168.4,164.0L170.7,161.9L168.0,156.0L169.8,155.9L169.3,151.3L167.5,147.8L165.1,145.8L164.4,139.6L162.4,132.7L160.3,131.0L157.7,131.1L157.4,129.8L160.7,128.2L160.4,126.4L164.0,123.4L167.9,118.0L167.7,116.8L158.9,114.2L156.1,114.3L163.4,107.5L163.5,106.7Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M478.0,229.5L472.6,229.2L471.4,226.4L464.8,226.3L462.4,227.4L459.5,230.6L457.9,230.7L450.5,228.3L441.6,230.9L434.5,230.3L430.4,233.0L432.1,233.5L439.9,235.7L442.1,235.8L447.4,244.6L446.7,246.9L449.1,246.8L453.4,245.1L454.4,243.1L461.1,245.3L461.1,245.5L461.4,245.2L466.1,242.3L470.8,239.5L471.0,239.3L471.9,237.5L473.3,236.8L477.5,237.5L481.9,236.6L482.0,234.3L478.1,232.7L478.1,230.0L478.2,229.6L478.0,229.5Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M328.7,335.9L326.4,336.2L327.8,339.0L336.0,339.3L336.5,340.6L347.7,338.3L344.0,335.8L341.8,336.4L331.4,336.3L328.7,335.9Z M321.6,303.3L318.8,304.5L321.5,305.5L324.0,308.1L327.0,308.2L328.6,310.7L329.7,310.1L322.2,304.3L321.6,303.3Z M343.7,296.5L340.0,297.5L345.2,299.6L343.7,296.5Z M339.6,273.6L338.7,273.5L338.7,277.0L333.4,279.1L328.9,278.8L325.9,277.6L316.2,280.8L315.4,280.8L315.0,280.8L307.4,285.4L302.5,286.8L301.5,287.0L301.5,287.7L301.7,290.4L299.8,294.3L297.4,296.1L298.0,297.5L295.2,298.6L296.0,299.2L301.6,304.9L305.2,311.1L311.1,309.8L320.7,311.5L318.9,313.4L311.1,310.7L305.3,315.2L309.8,320.0L309.3,323.0L312.1,326.1L313.3,323.1L319.5,325.8L320.4,322.5L319.0,319.9L322.0,318.7L322.9,316.6L321.4,316.4L319.9,314.1L321.0,313.2L325.2,313.4L327.6,315.1L327.2,310.6L325.5,309.0L315.5,304.7L318.0,303.9L317.0,300.9L320.7,301.3L314.3,293.6L314.1,289.1L319.7,292.5L322.4,289.8L326.7,290.1L322.2,285.7L325.7,284.9L326.6,283.5L331.8,282.0L338.7,283.1L339.0,283.5L340.9,280.5L340.4,278.2L340.3,273.7L339.6,273.6Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M282.6,272.9L282.3,272.5L282.0,272.1L282.0,271.7L281.3,271.5L277.5,269.2L276.7,269.2L273.0,267.6L281.2,272.1L282.6,272.9Z M266.9,234.0L266.3,233.8L261.1,237.1L261.1,240.6L258.7,241.7L258.5,244.5L247.1,243.8L246.7,244.2L248.2,249.0L249.8,250.5L251.8,246.1L253.8,246.0L256.3,249.1L256.8,252.7L258.9,254.8L258.3,256.9L267.0,262.8L270.6,264.2L275.3,268.1L265.5,256.3L264.7,253.3L262.0,251.0L262.3,247.0L264.9,248.0L270.1,245.8L282.1,247.1L284.2,249.1L284.6,249.0L284.5,248.7L286.2,244.9L284.3,243.8L283.3,238.9L283.3,238.7L283.3,238.7L280.2,240.5L275.9,240.5L267.3,234.1L266.9,234.0Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M302.5,212.9L300.0,213.7L292.9,212.3L291.1,215.0L288.4,216.8L282.0,218.1L281.0,220.7L274.7,221.2L270.7,219.1L270.6,219.1L270.2,219.6L266.1,225.5L265.0,229.4L264.0,230.5L265.2,230.5L265.6,231.8L266.8,233.8L266.9,234.0L267.3,234.1L275.9,240.5L280.2,240.5L283.3,238.7L283.3,238.7L283.5,238.7L284.9,238.1L286.9,236.9L292.0,236.2L292.2,236.3L292.5,236.1L297.5,234.5L301.6,225.3L302.6,221.6L307.8,217.0L307.9,216.7L307.7,216.6L305.3,214.5L304.1,214.1L303.2,212.7L302.6,212.8L302.5,212.9Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M133.7,132.9L127.9,131.0L125.4,134.0L126.2,137.1L123.5,139.0L119.8,137.1L115.1,137.0L117.0,140.6L117.1,148.4L112.3,151.7L112.5,152.9L107.0,155.3L106.2,158.5L110.6,159.2L108.1,162.4L111.2,163.3L117.3,162.8L117.4,161.3L121.9,161.8L123.1,160.9L130.3,161.5L129.8,160.4L134.2,154.0L134.8,146.1L136.1,144.7L135.9,144.3L133.7,142.7L127.4,140.4L127.2,137.3L128.5,135.8L133.4,133.3L133.7,132.9Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M489.7,256.6L488.5,257.1L487.6,257.9L487.2,258.0L485.8,258.3L482.4,258.8L475.8,255.0L475.6,254.9L475.3,255.0L473.6,254.5L473.1,258.6L471.1,259.5L476.2,267.7L477.6,268.2L477.5,272.9L478.3,272.7L483.8,277.9L483.9,278.1L483.9,278.1L492.4,286.5L495.2,287.1L498.5,285.8L500.0,290.9L500.0,248.9L500.0,246.8L500.0,246.0L497.0,244.7L490.2,256.4L489.7,256.6Z M500.0,293.1L498.9,298.9L497.8,299.3L499.4,302.5L500.0,293.1Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M483.9,278.1L483.5,278.0L476.9,280.1L468.6,282.0L467.3,285.0L466.7,285.4L466.7,285.6L464.1,291.8L461.6,293.6L463.8,301.9L463.8,305.5L465.1,310.1L462.6,315.9L452.3,327.9L450.4,329.9L451.6,331.8L454.9,337.4L457.4,339.1L456.6,340.6L458.4,340.4L482.6,342.2L484.7,343.0L500.0,348.5L499.4,302.5L497.8,299.3L498.9,298.9L500.0,293.1L500.0,290.9L498.5,285.8L495.2,287.1L492.4,286.5L483.9,278.1L483.9,278.1Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M136.8,17.8L134.6,14.1L133.3,16.6L125.2,12.8L122.0,13.2L121.2,14.7L119.1,11.1L116.2,13.7L112.6,15.7L113.1,11.2L115.1,10.6L111.4,3.1L107.9,4.1L104.5,7.3L105.1,9.4L108.0,9.9L111.0,13.2L108.7,16.4L104.0,14.6L102.5,15.3L105.7,20.8L102.4,24.3L99.6,25.1L104.2,27.4L107.3,32.6L112.5,37.0L115.8,37.2L123.2,36.6L132.4,35.4L137.8,31.5L138.9,31.5L140.7,27.5L138.9,20.7L136.8,17.8Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M428.6,355.7L428.2,355.8L424.5,358.1L424.6,353.2L423.1,350.4L423.3,347.3L426.8,347.0L427.4,346.9L427.0,344.7L427.2,344.0L428.1,343.3L428.5,343.1L428.5,342.7L428.3,339.6L428.5,339.1L427.5,337.0L427.5,336.4L427.3,336.6L425.3,340.2L424.7,340.8L422.3,341.4L422.3,342.5L421.8,350.4L421.4,353.5L420.5,356.8L420.5,356.9L419.9,359.3L420.0,359.9L419.4,360.9L420.5,362.8L421.4,364.2L422.1,365.4L428.4,365.4L429.2,359.0L428.8,358.3L428.7,357.2L428.6,355.7Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M262.2,314.7L259.9,314.7L252.2,316.8L247.5,317.0L240.2,315.1L238.0,319.1L238.5,320.1L243.5,322.0L248.4,325.4L251.1,325.7L254.0,328.6L257.9,329.6L260.2,326.5L258.6,323.0L259.6,319.0L262.2,314.7Z M217.7,288.1L215.3,284.8L209.8,287.9L207.4,287.1L206.9,288.4L208.6,294.8L207.6,303.7L209.2,306.6L212.1,305.6L212.5,303.8L216.8,302.9L217.4,294.0L218.8,291.9L217.7,288.1Z M226.3,230.1L226.0,231.4L222.3,234.8L219.3,234.0L214.9,237.2L212.6,233.8L211.2,234.3L207.8,238.2L202.9,237.9L202.7,237.7L202.1,238.2L201.1,238.6L202.9,242.6L199.3,245.7L200.9,253.6L203.6,255.4L205.2,255.1L204.1,258.9L205.8,258.7L213.5,253.3L217.1,254.5L223.5,259.4L225.1,268.1L231.9,274.3L240.0,283.2L243.3,285.4L245.3,285.1L249.0,286.6L250.6,289.8L252.3,289.7L256.2,291.4L257.1,295.2L262.7,297.5L266.9,307.6L266.8,309.4L263.4,317.4L265.9,317.3L269.6,309.7L272.5,307.4L273.6,303.1L269.0,298.6L270.0,295.9L272.6,292.1L275.4,293.7L278.9,294.1L282.7,298.4L283.4,294.4L279.4,290.4L268.8,285.3L264.0,281.6L265.8,278.9L258.5,278.7L253.9,275.7L251.3,273.2L247.8,264.6L245.0,261.7L240.8,258.6L238.2,254.3L237.8,251.4L238.9,248.4L238.2,244.4L243.4,242.6L244.6,241.3L248.5,242.8L248.1,243.1L247.3,239.3L245.9,236.0L247.8,234.6L248.0,234.0L246.6,233.7L239.2,232.2L237.8,228.4L230.4,230.4L226.5,230.2L226.3,230.1Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M456.6,340.6L457.4,339.1L454.9,337.4L451.6,331.8L450.4,329.9L448.8,331.9L437.7,344.7L434.8,345.1L429.4,343.1L428.5,343.1L428.1,343.3L427.2,344.0L427.0,344.7L427.4,346.9L427.9,348.3L428.1,350.8L428.8,352.8L428.5,354.9L428.6,355.7L428.7,357.2L428.8,358.3L429.2,359.0L428.4,365.4L447.5,365.4L449.1,361.3L451.3,358.9L440.7,352.1L455.7,342.1L456.6,340.6Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M500.0,179.1L494.7,182.6L494.2,187.2L495.0,188.7L499.2,189.5L494.7,190.9L491.5,193.8L492.3,195.3L496.4,194.9L500.0,198.2L500.0,179.1Z M477.2,180.6L480.7,175.9L482.0,172.4L486.0,167.7L492.9,166.1L495.9,163.6L500.0,168.3L500.0,114.2L493.6,120.8L492.4,123.2L484.7,123.4L487.1,126.6L481.3,124.0L471.5,125.4L469.1,124.6L464.0,128.3L461.7,128.7L455.8,145.1L458.5,151.3L457.8,152.2L450.6,149.3L450.2,149.7L449.8,157.7L450.2,159.6L452.9,163.4L452.8,168.6L453.8,169.9L459.5,173.9L465.4,171.9L471.2,175.7L474.2,178.3L471.8,179.2L472.7,180.8L477.5,180.9L477.2,180.6Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M304.5,272.7L300.3,265.1L297.2,264.4L296.3,267.8L295.5,268.2L294.6,268.5L293.4,269.0L293.3,269.3L293.7,270.9L293.7,271.0L294.0,271.2L295.9,273.2L297.2,274.4L297.9,276.9L297.8,277.3L297.9,277.4L299.2,275.2L304.7,273.0L304.7,273.0L304.5,272.7Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M427.8,336.0L427.6,334.0L430.4,331.3L431.3,327.3L427.9,323.7L425.6,324.8L425.8,325.6L423.9,329.2L424.1,331.3L422.5,340.5L422.3,341.4L424.7,340.8L425.3,340.2L427.3,336.6L427.5,336.4L427.8,336.0Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M229.4,363.3L229.4,363.5L229.0,365.4L229.0,365.4L233.8,365.4L231.9,364.2L230.6,363.9L229.4,363.3Z M325.7,365.4L325.5,364.7L317.7,362.6L313.2,362.9L311.5,364.4L307.9,365.4L325.7,365.4Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M220.7,227.8L220.6,227.0L220.5,226.7L220.4,226.0L220.4,225.8L220.0,226.8L220.0,227.5L220.0,227.9L220.1,227.9L220.6,227.9L220.7,227.8Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M288.3,146.7L288.6,146.7L289.0,146.0L289.2,144.6L288.8,145.5L288.3,146.7Z M288.5,139.5L288.7,141.5L289.9,146.0L290.2,146.7L290.2,146.7L299.5,149.9L299.1,152.0L299.5,154.2L299.7,154.6L300.0,154.2L303.9,156.2L304.3,157.9L304.3,158.1L304.8,158.3L311.6,156.8L315.5,152.8L315.9,147.6L320.1,143.2L319.1,139.2L319.0,138.8L318.7,138.8L313.2,135.4L299.6,134.8L293.6,135.2L288.4,139.0L288.5,139.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L198.3,202.1L199.8,202.7L200.1,202.5L201.1,202.7L201.5,202.9L201.6,202.4L200.6,197.1L200.7,196.6L200.8,196.3L200.7,196.3Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M319.5,120.3L311.0,118.4L307.2,117.0L303.5,119.5L303.5,120.3L302.7,128.1L299.2,127.8L295.2,123.3L290.4,124.1L289.3,126.6L288.0,137.2L288.4,139.0L293.6,135.2L299.6,134.8L313.2,135.4L318.7,138.8L319.0,138.8L319.1,138.7L321.2,136.8L322.6,136.8L326.3,132.7L326.5,132.7L326.5,132.2L322.5,125.1L322.7,123.2L320.2,120.1L319.6,120.2L319.5,120.3Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M118.8,331.1L114.1,328.1L112.9,328.6L101.7,326.3L97.7,321.2L96.1,318.4L92.9,318.3L87.4,327.0L82.8,332.2L75.4,335.1L68.9,335.9L59.6,341.2L57.6,345.6L54.1,348.3L50.0,357.1L48.4,365.4L100.6,365.4L101.8,361.3L123.4,361.8L121.6,349.5L122.5,339.3L120.4,331.6L118.8,331.1Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M203.7,259.1L203.7,259.0L203.6,258.8L203.3,259.2L203.7,259.1Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M347.0,235.0L349.5,230.8L351.6,225.1L355.1,223.8L355.5,220.3L353.1,219.2L351.9,216.0L350.6,215.4L348.1,210.0L343.6,209.6L339.0,207.3L331.6,209.8L331.6,210.2L332.2,210.0L335.5,212.5L337.2,215.3L343.1,220.8L344.0,222.5L345.1,230.5L346.3,234.8L346.7,235.3L347.0,235.0Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M310.0,271.7L305.9,272.7L305.1,273.0L304.7,273.0L304.7,273.0L299.2,275.2L297.9,277.4L297.8,277.3L297.7,277.4L297.2,280.8L301.5,286.8L301.5,287.0L302.5,286.8L307.4,285.4L315.0,280.8L315.4,280.8L315.5,280.6L315.4,278.1L315.6,277.0L311.5,273.1L310.2,271.8L310.0,271.7Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M286.6,261.9L284.5,263.9L281.8,267.8L282.1,271.7L282.0,271.7L282.0,272.1L282.3,272.5L282.6,272.9L282.9,273.0L283.5,273.4L285.4,274.5L287.7,277.3L288.9,278.0L290.7,270.5L291.3,270.6L293.5,271.0L293.7,271.0L293.7,270.9L293.3,269.3L293.4,269.0L294.6,268.5L295.5,268.2L295.5,267.9L291.2,265.7L290.4,265.3L286.8,262.0L286.8,261.9L286.6,261.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M189.9,182.8L189.4,182.4L188.6,182.7L185.9,181.9L185.4,182.0L189.4,183.8L189.9,182.8Z M198.9,189.7L199.2,189.9L199.5,189.9L200.7,190.1L201.2,188.6L200.3,187.8L202.7,183.1L201.5,180.2L206.4,179.3L208.4,174.5L206.7,173.6L209.0,171.4L210.4,166.2L209.6,166.0L202.8,164.5L197.6,168.0L188.3,182.1L190.2,182.4L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.7Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M256.4,19.6L256.6,12.7L254.0,20.8L255.2,22.0L257.4,20.5L256.4,19.6Z M262.1,9.4L260.5,13.9L264.0,11.7L262.1,9.4Z M267.7,4.5L267.2,2.8L264.6,8.9L268.2,6.8L267.7,4.5Z M236.9,111.7L238.5,112.0L238.5,106.4L242.6,101.5L243.0,97.2L242.0,93.8L243.8,92.4L244.7,89.4L241.4,85.8L242.2,81.0L242.1,73.3L241.2,70.5L244.3,64.1L246.6,63.0L249.8,63.6L250.6,61.2L248.5,58.1L251.5,52.4L252.6,46.4L252.2,43.1L255.9,41.4L257.3,36.9L259.3,33.1L260.3,25.9L261.7,24.5L264.5,25.0L265.8,19.1L271.5,18.9L271.6,14.3L272.9,14.0L273.4,14.0L273.5,13.6L276.6,11.4L282.5,16.4L285.6,14.8L289.3,16.3L291.2,12.7L291.0,6.2L291.8,4.2L296.5,0.5L301.6,3.3L302.7,5.0L302.1,9.2L302.5,9.5L303.0,9.2L303.3,6.6L307.4,3.3L307.0,0.9L306.5,0.9L301.8,0.0L281.9,0.0L281.2,2.7L276.9,1.6L272.5,5.6L273.3,9.3L271.4,5.3L269.6,10.5L269.6,7.1L267.8,7.6L266.1,10.7L267.0,11.8L263.1,14.1L260.4,18.2L261.3,21.3L258.7,21.2L253.0,26.9L256.1,31.3L252.2,32.1L250.1,34.0L246.3,40.2L245.9,44.2L242.3,50.5L239.6,54.1L240.1,55.7L237.1,57.9L232.9,62.5L230.7,66.0L234.0,67.5L236.7,65.7L236.7,64.2L239.0,63.5L235.5,67.7L232.5,69.2L231.2,66.8L227.5,66.4L225.5,67.3L226.1,69.5L224.1,70.8L218.9,72.3L217.6,74.7L222.2,74.9L219.7,75.9L215.6,75.4L216.3,77.4L209.5,79.1L209.2,80.3L215.2,83.2L208.5,81.5L209.6,85.7L207.8,86.5L209.0,89.3L219.5,89.8L217.1,90.4L207.9,89.6L207.2,93.0L207.7,98.0L209.6,99.1L207.0,99.5L206.3,103.4L212.1,97.2L209.8,101.1L207.1,103.5L205.7,107.4L209.9,107.2L207.2,113.5L207.7,114.5L213.8,120.1L221.9,118.1L228.9,111.4L232.2,109.2L236.9,111.4L236.9,111.7Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M281.5,155.6L278.3,156.7L276.0,155.2L275.0,153.0L273.0,152.3L264.5,155.4L263.5,156.6L251.4,161.7L251.2,161.5L251.1,161.8L251.2,162.3L252.0,162.4L253.2,162.8L252.8,164.3L251.5,163.7L251.5,172.9L254.5,179.8L253.6,182.2L256.2,187.8L255.0,191.6L255.0,191.7L255.5,191.7L257.9,191.4L262.8,193.8L267.1,198.7L268.5,195.7L272.2,197.0L275.7,199.5L278.4,200.2L280.6,203.6L280.6,203.9L281.3,204.0L282.7,204.8L284.6,203.0L288.6,206.5L290.4,204.4L298.4,203.4L304.0,206.0L304.5,206.0L304.7,206.0L306.5,205.9L304.9,200.7L310.3,192.5L311.8,191.9L312.0,187.3L308.6,182.1L308.1,181.5L307.6,180.6L307.4,175.8L304.8,174.6L308.1,170.2L307.8,166.7L305.4,161.3L304.3,158.1L304.3,157.9L303.9,156.2L300.0,154.2L299.7,154.6L299.6,154.7L296.4,155.0L281.8,155.4L281.5,155.6Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M86.0,254.9L85.6,261.8L81.8,269.8L76.3,276.9L73.5,282.8L74.9,285.2L78.5,287.5L76.9,289.5L74.9,296.5L72.5,299.9L75.8,299.9L80.4,302.5L84.1,301.9L84.8,302.0L85.0,298.0L88.4,294.7L88.3,290.1L90.8,287.0L91.2,284.0L90.5,278.3L92.9,278.9L95.0,276.9L94.7,274.8L97.7,268.1L97.5,266.8L103.1,263.8L99.1,257.6L92.9,256.6L91.4,253.5L87.0,254.1L86.0,254.9Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M346.3,234.8L345.1,230.5L344.0,222.5L343.1,220.8L337.2,215.3L335.5,212.5L332.2,210.0L331.6,210.2L331.3,210.3L329.1,213.2L322.9,215.9L321.3,217.2L318.3,215.3L312.7,215.6L308.1,216.5L307.9,216.7L307.8,217.0L302.6,221.6L301.6,225.3L297.5,234.5L292.5,236.1L292.2,236.3L292.7,236.9L297.6,243.1L299.0,243.7L303.7,249.2L306.3,250.3L309.9,248.9L309.5,251.6L310.7,252.7L310.8,252.8L311.3,253.2L312.7,256.6L314.8,255.9L331.0,255.7L337.2,250.6L339.6,249.6L347.0,249.8L348.5,251.2L352.3,251.3L352.2,250.7L352.7,240.6L356.9,239.4L357.1,235.8L357.1,235.2L352.5,235.5L348.6,236.6L347.6,236.2L346.7,235.3L346.3,234.8Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M288.6,146.7L288.3,146.7L288.1,147.3L285.8,150.2L283.1,153.6L282.6,154.5L281.8,155.4L296.4,155.0L299.6,154.7L299.7,154.6L299.5,154.2L299.1,152.0L299.5,149.9L290.2,146.7L290.3,148.3L286.9,149.8L288.2,147.7L288.6,146.7Z M500.0,0.0L372.3,0.0L373.6,3.6L371.3,7.3L365.8,6.1L364.4,0.0L357.0,0.0L359.5,8.4L361.9,9.0L366.1,18.8L362.8,17.0L357.2,17.4L352.5,30.7L357.7,35.9L352.6,38.3L348.0,38.3L345.3,36.9L342.6,37.2L342.0,39.8L345.5,43.2L348.6,43.1L351.1,46.9L349.9,47.9L344.1,48.4L340.3,46.1L336.6,45.4L332.2,38.2L331.6,32.7L326.2,30.6L322.3,27.4L319.5,24.0L321.6,24.1L329.4,27.2L333.3,27.6L342.1,27.4L346.1,26.6L350.5,22.5L352.3,15.3L347.9,8.6L341.8,7.3L333.2,4.0L325.3,1.6L313.7,2.1L311.6,0.8L314.4,0.0L309.9,0.0L307.7,0.9L307.0,0.9L307.4,3.3L303.3,6.6L303.0,9.2L302.5,9.5L302.3,9.7L303.4,17.6L308.5,20.8L309.5,22.6L307.7,28.8L308.0,29.9L313.1,37.0L314.2,46.5L317.8,52.4L319.2,58.9L325.2,62.3L326.3,70.9L321.2,82.4L316.0,91.0L317.7,90.3L322.7,93.1L325.8,92.3L328.5,94.6L323.5,94.8L322.6,96.9L318.8,98.0L319.2,100.1L319.1,100.8L320.0,101.8L317.7,108.6L320.1,117.4L319.6,120.0L319.6,120.2L320.2,120.1L322.7,123.2L322.5,125.1L326.5,132.2L326.5,132.7L327.4,133.4L333.4,133.3L334.5,135.6L337.2,133.5L342.4,135.0L343.6,142.6L345.7,143.4L347.5,146.6L349.8,147.9L351.6,150.7L357.3,152.7L354.6,157.0L350.8,156.9L355.2,166.6L355.3,166.8L355.4,166.8L357.5,166.8L358.4,164.3L366.0,161.5L371.3,165.8L371.8,171.1L373.4,170.8L382.8,177.1L385.2,175.7L387.8,176.2L398.0,176.6L398.9,174.9L409.4,176.2L411.3,175.8L412.3,179.0L410.7,181.7L411.7,184.9L414.7,187.9L409.2,194.4L406.8,198.2L407.7,202.7L409.2,201.3L413.3,198.9L413.6,201.4L410.0,204.8L410.8,206.1L406.9,208.8L412.5,211.5L408.6,217.3L409.2,219.4L403.1,223.9L408.2,225.2L409.0,226.1L412.5,225.9L415.5,227.8L419.4,227.8L429.5,232.8L430.4,233.0L434.5,230.3L441.6,230.9L450.5,228.3L457.9,230.7L459.5,230.6L462.4,227.4L464.8,226.3L471.4,226.4L472.6,229.2L478.0,229.5L478.2,229.6L478.9,229.4L480.5,229.3L485.8,232.2L490.1,231.3L492.2,223.3L491.4,223.0L480.4,216.0L477.8,208.5L478.3,211.3L475.1,206.9L470.4,205.6L470.4,192.7L473.1,190.0L477.8,181.3L477.5,180.9L472.7,180.8L471.8,179.2L474.2,178.3L471.2,175.7L465.4,171.9L459.5,173.9L453.8,169.9L452.8,168.6L452.9,163.4L450.2,159.6L449.8,157.7L450.2,149.7L450.6,149.3L457.8,152.2L458.5,151.3L455.8,145.1L461.7,128.7L464.0,128.3L469.1,124.6L471.5,125.4L481.3,124.0L487.1,126.6L484.7,123.4L492.4,123.2L493.6,120.8L500.0,114.2L500.0,78.4L500.0,74.9L500.0,0.0Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M456.6,340.6L455.7,342.1L440.7,352.1L451.3,358.9L449.1,361.3L447.5,365.4L500.0,365.4L500.0,348.5L484.7,343.0L482.6,342.2L458.4,340.4L456.6,340.6Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M283.3,238.7L283.3,238.9L284.3,243.8L286.2,244.9L284.5,248.7L284.6,249.0L284.9,249.0L285.8,252.7L289.2,256.8L287.2,261.4L286.8,261.9L286.8,262.0L290.4,265.3L291.2,265.7L295.5,267.9L295.5,268.2L296.3,267.8L297.2,264.4L300.3,265.1L304.5,272.7L304.7,273.0L305.1,273.0L305.9,272.7L310.0,271.7L310.2,271.8L310.8,271.6L310.6,266.5L312.2,265.9L311.7,261.0L310.6,260.5L310.6,253.0L310.8,252.8L310.7,252.7L309.5,251.6L309.9,248.9L306.3,250.3L303.7,249.2L299.0,243.7L297.6,243.1L292.7,236.9L292.2,236.3L292.0,236.2L286.9,236.9L284.9,238.1L283.5,238.7L283.3,238.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M304.0,206.0L298.4,203.4L290.4,204.4L288.6,206.5L284.6,203.0L282.7,204.8L281.3,204.0L280.6,203.9L280.4,203.9L276.1,208.5L274.6,209.9L269.2,212.6L269.1,213.4L269.0,213.5L268.5,215.0L268.6,215.5L270.1,218.8L270.6,219.1L270.7,219.1L274.7,221.2L281.0,220.7L282.0,218.1L288.4,216.8L291.1,215.0L292.9,212.3L300.0,213.7L302.5,212.9L302.6,212.8L302.5,211.2L303.5,209.4L303.7,208.1L304.4,206.4L304.5,206.0L304.0,206.0Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M266.8,233.8L265.6,231.8L265.2,230.5L264.0,230.5L263.6,230.7L261.8,232.1L258.2,232.8L248.3,234.1L248.0,234.0L247.8,234.6L245.9,236.0L247.3,239.3L248.1,243.1L247.5,243.6L247.1,243.8L258.5,244.5L258.7,241.7L261.1,240.6L261.1,237.1L266.3,233.8L266.9,234.0L266.8,233.8Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M276.4,122.7L271.7,125.8L272.3,129.9L274.8,128.6L276.4,122.7Z M273.4,14.0L272.9,14.0L271.6,14.3L271.5,18.9L265.8,19.1L264.5,25.0L261.7,24.5L260.3,25.9L259.3,33.1L257.3,36.9L255.9,41.4L252.2,43.1L252.6,46.4L251.5,52.4L248.5,58.1L250.6,61.2L249.8,63.6L246.6,63.0L244.3,64.1L241.2,70.5L242.1,73.3L242.2,81.0L241.4,85.8L244.7,89.4L243.8,92.4L242.0,93.8L243.0,97.2L242.6,101.5L238.5,106.4L238.5,112.0L236.9,111.7L236.4,111.2L235.7,112.8L236.0,117.2L238.1,122.1L238.2,124.6L239.8,127.3L241.6,132.6L244.2,136.5L243.0,139.2L241.9,138.6L244.1,146.6L246.2,147.9L251.0,147.4L251.9,146.2L251.4,142.6L257.2,140.0L260.4,139.8L263.4,130.9L263.8,127.4L263.3,123.7L263.6,117.6L262.6,115.9L265.2,115.4L273.0,108.4L272.7,107.8L266.5,109.3L265.8,108.5L260.7,107.8L266.8,107.1L269.8,108.3L274.1,104.4L273.4,101.0L269.3,97.1L265.6,95.4L264.8,85.5L266.1,85.8L265.4,77.9L269.9,73.8L270.7,71.1L277.0,65.8L281.8,57.6L280.9,48.5L283.6,43.9L289.8,43.7L290.8,43.3L288.1,38.1L288.6,33.8L287.0,31.5L284.2,21.5L283.7,21.5L274.4,14.4L273.4,14.0Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M466.0,284.5L453.1,291.6L450.4,294.4L444.1,298.1L436.7,298.3L431.7,302.5L425.3,303.1L425.5,306.3L426.8,308.2L425.2,309.0L424.1,313.1L421.9,312.9L421.6,313.6L421.7,316.4L423.1,317.5L424.5,322.9L425.6,324.8L427.9,323.7L431.3,327.3L430.4,331.3L427.6,334.0L427.8,336.0L427.5,336.4L427.5,337.0L428.5,339.1L428.3,339.6L428.5,342.7L428.5,343.1L429.4,343.1L434.8,345.1L437.7,344.7L448.8,331.9L450.4,329.9L452.3,327.9L462.6,315.9L465.1,310.1L463.8,305.5L463.8,301.9L461.6,293.6L464.1,291.8L466.7,285.6L466.7,285.4L466.0,284.5Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M228.5,362.8L225.0,358.8L223.0,359.8L220.9,358.3L219.1,351.6L226.8,343.3L226.0,339.5L222.2,335.4L222.5,332.6L227.4,327.5L226.1,325.6L221.2,327.3L216.3,322.4L212.0,323.6L209.4,325.4L207.4,325.8L204.3,329.9L205.3,331.2L204.1,336.6L204.2,343.6L202.4,348.5L197.5,352.4L196.8,355.1L202.3,365.4L229.0,365.4L229.0,365.4L229.4,363.5L229.4,363.3L228.5,362.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M421.9,312.9L424.1,313.1L425.2,309.0L426.8,308.2L425.5,306.3L425.3,303.1L431.7,302.5L436.7,298.3L444.1,298.1L450.4,294.4L453.1,291.6L466.0,284.5L466.7,285.4L467.3,285.0L468.6,282.0L476.9,280.1L483.5,278.0L483.9,278.1L483.8,277.9L478.3,272.7L477.5,272.9L477.6,268.2L476.2,267.7L471.1,259.5L473.1,258.6L473.6,254.5L475.3,255.0L475.6,254.9L475.2,254.7L475.0,254.5L474.6,254.2L470.6,252.9L468.3,254.0L461.4,245.8L461.1,245.5L461.1,245.3L454.4,243.1L453.4,245.1L449.1,246.8L446.7,246.9L446.3,248.0L442.4,252.8L436.7,256.1L433.7,255.9L427.0,260.1L417.1,260.6L414.6,259.6L413.0,261.1L408.7,258.1L405.3,259.6L401.7,258.0L401.5,256.7L386.4,262.1L383.8,263.7L373.0,273.5L369.4,273.1L366.4,274.2L362.0,274.4L360.4,276.0L363.0,278.3L366.7,278.3L360.4,280.6L361.2,282.9L355.9,283.8L351.7,283.8L350.1,285.7L348.5,284.6L344.6,285.8L341.0,290.4L341.3,295.6L346.5,293.8L348.0,303.4L344.5,304.0L346.2,307.6L347.4,307.1L351.9,308.5L351.8,312.2L355.4,315.9L353.6,318.1L361.0,316.6L355.4,320.4L359.8,320.0L367.2,318.2L373.7,322.4L379.7,317.4L379.8,314.1L385.3,313.5L388.9,314.5L395.8,318.0L397.9,318.1L404.5,315.0L408.2,309.8L414.8,307.7L420.7,303.2L421.5,303.5L420.6,308.3L422.2,312.0L421.9,312.9Z M339.6,273.6L340.3,273.7L340.4,278.2L340.9,280.5L339.0,283.5L339.2,283.9L344.6,283.6L344.7,284.8L348.9,280.7L349.2,279.3L354.8,277.3L359.7,277.0L354.6,273.5L351.3,270.2L351.3,269.1L347.5,270.0L343.8,269.9L339.5,273.4L339.6,273.6Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M355.3,166.8L354.2,167.0L349.6,171.1L350.1,175.9L347.3,175.0L342.4,176.7L340.5,175.0L338.0,176.3L329.9,177.1L328.9,175.9L316.3,176.3L308.2,181.4L308.1,181.5L308.6,182.1L312.0,187.3L311.8,191.9L310.3,192.5L304.9,200.7L306.5,205.9L304.7,206.0L304.5,206.0L304.4,206.4L303.7,208.1L303.5,209.4L302.5,211.2L302.6,212.8L303.2,212.7L304.1,214.1L305.3,214.5L307.7,216.6L307.9,216.7L308.1,216.5L312.7,215.6L318.3,215.3L321.3,217.2L322.9,215.9L329.1,213.2L331.3,210.3L331.6,210.2L331.6,209.8L339.0,207.3L343.6,209.6L348.1,210.0L350.6,215.4L351.9,216.0L353.1,219.2L355.5,220.3L355.1,223.8L351.6,225.1L349.5,230.8L347.0,235.0L346.7,235.3L347.6,236.2L348.6,236.6L352.5,235.5L357.1,235.2L357.1,234.3L356.0,230.4L359.3,228.6L361.4,224.1L361.7,221.2L368.5,218.6L366.5,213.4L370.3,218.7L366.7,220.0L369.9,220.5L370.4,222.1L373.7,223.0L378.2,220.9L381.8,222.3L375.5,229.5L383.1,230.6L383.8,235.9L388.2,236.0L390.1,232.5L394.0,230.5L396.4,226.6L401.9,225.5L400.2,222.0L395.8,224.8L391.3,222.2L390.7,214.8L394.0,211.9L399.9,209.2L403.6,204.3L407.6,202.9L407.7,202.7L406.8,198.2L409.2,194.4L414.7,187.9L411.7,184.9L410.7,181.7L412.3,179.0L411.3,175.8L409.4,176.2L398.9,174.9L398.0,176.6L387.8,176.2L385.2,175.7L382.8,177.1L373.4,170.8L371.8,171.1L371.3,165.8L366.0,161.5L358.4,164.3L357.5,166.8L355.4,166.8L355.3,166.8Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M426.8,347.0L423.3,347.3L423.1,350.4L424.6,353.2L424.5,358.1L428.2,355.8L428.6,355.7L428.5,354.9L428.8,352.8L428.1,350.8L427.9,348.3L427.4,346.9L426.8,347.0Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="367.363973732" padding="0" w="500"><proj id="laea" lat0="50.5" lon0="14.0"/><bbox h="461.97" w="630.48" x="684.76" y="753.17"/><llbbox lat0="33.0" lat1="68.0" lon0="-17.0" lon1="45.0"/></view></views></metadata><g id="countries"><path d="M293.5,271.0L291.3,270.6L290.7,270.5L288.9,278.0L289.8,278.1L289.9,288.5L290.5,291.6L295.1,297.7L295.2,298.6L298.0,297.5L297.4,296.1L299.8,294.3L301.7,290.4L301.5,287.7L301.5,287.0L301.5,286.8L297.2,280.8L297.7,277.4L297.8,277.3L297.9,276.9L297.2,274.4L295.9,273.2L294.0,271.2L293.7,271.0L293.5,271.0Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M161.8,265.9L161.9,265.1L161.0,264.7L160.2,264.7L159.9,264.9L159.8,265.3L160.8,266.4L161.6,266.1L161.8,266.1L161.8,265.9Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M471.0,239.3L470.8,239.5L466.1,242.3L461.4,245.2L461.1,245.5L461.4,245.8L468.3,254.0L470.6,252.9L474.6,254.2L475.0,254.5L475.7,254.1L476.6,253.2L480.5,254.4L482.5,252.9L486.7,257.4L487.2,258.0L487.6,257.9L488.5,257.1L489.7,256.6L489.3,255.7L485.2,251.2L480.2,249.5L475.7,243.5L476.6,242.0L472.1,240.8L471.3,239.7L471.0,239.3Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M268.9,213.2L268.6,212.4L256.2,210.0L254.6,213.0L250.3,213.7L249.0,212.2L248.8,212.1L248.7,212.3L246.7,213.9L243.5,224.7L238.2,222.3L232.2,224.9L230.1,225.1L226.8,223.5L225.1,226.0L220.7,223.3L220.5,223.4L220.7,223.5L221.1,224.0L221.0,224.7L220.4,225.8L220.4,226.0L220.5,226.7L220.6,227.0L220.7,227.8L220.6,227.9L220.9,228.0L224.5,230.1L225.7,228.9L226.4,229.8L226.3,230.1L226.5,230.2L230.4,230.4L237.8,228.4L239.2,232.2L246.6,233.7L248.0,234.0L248.3,234.1L258.2,232.8L261.8,232.1L263.6,230.7L264.0,230.5L265.0,229.4L266.1,225.5L270.2,219.6L270.6,219.1L270.1,218.8L268.6,215.5L268.5,215.0L269.0,213.5L269.1,213.4L268.9,213.2Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M475.0,254.5L475.2,254.7L475.6,254.9L475.8,255.0L482.4,258.8L485.8,258.3L487.2,258.0L486.7,257.4L482.5,252.9L480.5,254.4L476.6,253.2L475.7,254.1L475.0,254.5Z M492.2,223.3L490.1,231.3L485.8,232.2L480.5,229.3L478.9,229.4L478.2,229.6L478.1,230.0L478.1,232.7L482.0,234.3L481.9,236.6L477.5,237.5L473.3,236.8L471.9,237.5L471.0,239.3L471.3,239.7L472.1,240.8L476.6,242.0L475.7,243.5L480.2,249.5L485.2,251.2L489.3,255.7L489.7,256.6L490.2,256.4L497.0,244.7L500.0,246.0L500.0,228.6L494.7,224.4L493.1,223.5L492.2,223.3Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M198.9,189.6L199.7,189.4L200.1,190.0L199.5,189.9L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L182.9,182.7L184.6,182.1L185.4,182.0L189.4,183.8L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.6Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M310.8,252.8L310.6,253.0L310.6,260.5L311.7,261.0L312.2,265.9L310.6,266.5L310.8,271.6L310.2,271.8L311.5,273.1L315.6,277.0L315.4,278.1L315.5,280.6L315.4,280.8L316.2,280.8L325.9,277.6L328.9,278.8L333.4,279.1L338.7,277.0L338.7,273.5L339.6,273.6L339.5,273.4L343.8,269.9L347.5,270.0L351.3,269.1L351.0,268.4L346.7,265.0L348.3,262.3L348.7,257.5L349.8,255.2L352.6,253.6L352.3,251.3L348.5,251.2L347.0,249.8L339.6,249.6L337.2,250.6L331.0,255.7L314.8,255.9L312.7,256.6L311.3,253.2L310.8,252.8Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M282.0,271.7L282.1,271.7L281.8,267.8L284.5,263.9L286.6,261.9L286.8,261.9L287.2,261.4L289.2,256.8L285.8,252.7L284.9,249.0L284.6,249.0L284.2,249.1L282.1,247.1L270.1,245.8L264.9,248.0L262.3,247.0L262.0,251.0L264.7,253.3L265.5,256.3L277.5,269.2L281.3,271.5L282.0,271.7Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M326.3,132.7L322.6,136.8L321.2,136.8L319.1,138.7L319.0,138.8L319.1,139.2L320.1,143.2L315.9,147.6L315.5,152.8L311.6,156.8L304.8,158.3L304.3,158.1L305.4,161.3L307.8,166.7L308.1,170.2L304.8,174.6L307.4,175.8L307.6,180.6L308.1,181.5L308.2,181.4L316.3,176.3L328.9,175.9L329.9,177.1L338.0,176.3L340.5,175.0L342.4,176.7L347.3,175.0L350.1,175.9L349.6,171.1L354.2,167.0L355.3,166.8L355.2,166.6L350.8,156.9L354.6,157.0L357.3,152.7L351.6,150.7L349.8,147.9L347.5,146.6L345.7,143.4L343.6,142.6L342.4,135.0L337.2,133.5L334.5,135.6L333.4,133.3L327.4,133.4L326.5,132.7L326.3,132.7Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M219.4,222.6L215.4,221.3L212.7,222.0L208.5,222.1L208.0,221.8L207.2,222.2L203.4,224.6L199.5,228.5L196.6,234.9L200.1,232.4L202.6,237.3L202.7,237.7L202.9,237.9L207.8,238.2L211.2,234.3L212.6,233.8L214.9,237.2L219.3,234.0L222.3,234.8L226.0,231.4L226.3,230.1L226.4,229.8L225.7,228.9L224.5,230.1L220.9,228.0L220.6,227.9L220.1,227.9L220.0,227.9L220.0,227.5L220.0,226.8L220.4,225.8L221.0,224.7L221.1,224.0L220.7,223.5L220.5,223.4L219.4,222.6Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M408.6,324.4L411.2,318.8L408.9,321.0L404.5,323.5L400.4,324.0L399.5,326.5L399.0,326.5L404.6,325.4L406.8,326.1L409.3,325.0L408.6,324.4Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M398.5,326.5L396.8,328.3L398.3,331.3L399.9,331.5L409.5,325.1L409.3,325.0L406.8,326.1L404.6,325.4L399.0,326.5L398.5,326.5Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M254.9,191.8L251.7,190.0L251.2,191.7L245.3,194.4L243.4,196.1L241.0,196.2L239.2,198.2L242.5,206.6L248.5,211.7L248.8,212.1L249.0,212.2L250.3,213.7L254.6,213.0L256.2,210.0L268.6,212.4L268.9,213.2L269.1,213.4L269.2,212.6L274.6,209.9L276.1,208.5L280.4,203.9L280.6,203.9L280.6,203.6L278.4,200.2L275.7,199.5L272.2,197.0L268.5,195.7L267.1,198.7L262.8,193.8L257.9,191.4L255.5,191.7L255.0,191.7L254.9,191.8Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M250.2,160.7L249.0,159.8L250.3,162.4L251.0,162.3L251.2,162.3L251.1,161.8L251.2,161.5L250.2,160.7Z M220.1,152.2L221.4,155.5L219.4,156.5L221.0,157.5L220.8,160.0L223.1,162.0L219.1,161.1L218.3,163.1L211.2,162.4L210.1,165.8L210.4,166.2L209.0,171.4L206.7,173.6L208.4,174.5L206.4,179.3L201.5,180.2L202.7,183.1L200.3,187.8L201.2,188.6L200.7,190.1L200.7,190.3L202.0,191.8L200.8,196.1L200.8,196.3L200.7,196.6L200.6,197.1L201.6,202.4L201.5,202.9L201.8,202.9L203.7,206.0L208.2,206.5L212.4,209.5L207.7,221.6L208.0,221.8L208.5,222.1L212.7,222.0L215.4,221.3L219.4,222.6L220.5,223.4L220.7,223.3L225.1,226.0L226.8,223.5L230.1,225.1L232.2,224.9L238.2,222.3L243.5,224.7L246.7,213.9L248.7,212.3L248.8,212.1L248.5,211.7L242.5,206.6L239.2,198.2L241.0,196.2L243.4,196.1L245.3,194.4L251.2,191.7L251.7,190.0L254.9,191.8L255.0,191.7L255.0,191.6L256.2,187.8L253.6,182.2L254.5,179.8L251.5,172.9L251.5,163.7L251.4,163.7L244.5,157.0L241.9,156.4L235.1,161.3L233.3,158.0L228.1,155.7L226.6,155.8L226.1,152.5L226.0,152.3L222.9,151.9L221.4,151.3L220.1,151.2L220.1,152.2Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M231.5,144.9L227.0,147.2L231.1,150.4L232.1,149.6L231.5,144.9Z M242.1,143.6L242.4,141.2L236.1,142.5L234.3,147.8L236.9,149.3L238.0,153.3L239.0,153.0L240.3,145.9L242.1,143.6Z M220.1,151.2L221.4,151.3L222.9,151.9L226.0,152.3L225.9,151.3L225.6,145.8L228.0,143.5L227.5,142.5L231.2,139.2L233.0,136.1L230.0,135.0L230.3,131.3L231.8,127.0L228.8,125.6L225.8,129.3L221.5,129.7L219.3,133.0L222.0,133.5L224.8,130.9L221.6,135.2L218.6,134.4L217.7,144.2L218.8,145.1L220.1,150.3L220.1,151.2Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M203.9,325.8L196.8,323.5L197.0,324.7L191.8,323.9L191.2,323.0L187.7,324.8L185.0,325.2L177.5,323.4L169.9,322.4L167.8,323.1L160.3,324.0L158.4,323.6L147.5,323.5L140.5,326.0L139.5,327.4L135.7,327.1L131.5,328.3L121.9,332.1L120.4,331.6L122.5,339.3L121.6,349.5L123.4,361.8L101.8,361.3L100.6,365.4L202.3,365.4L196.8,355.1L197.5,352.4L202.4,348.5L204.2,343.6L204.1,336.6L205.3,331.2L204.3,329.9L207.4,325.8L203.9,325.8Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M419.4,360.9L418.9,360.2L418.7,360.0L418.6,360.2L414.8,362.9L412.4,363.5L406.9,365.4L422.1,365.4L421.4,364.2L420.5,362.8L419.4,360.9Z M401.0,365.4L400.1,362.8L391.1,365.4L401.0,365.4Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M168.5,293.9L165.9,292.8L162.5,294.7L168.8,297.9L170.8,294.5L168.5,293.9Z M87.0,254.1L91.4,253.5L92.9,256.6L99.1,257.6L103.1,263.8L97.5,266.8L97.7,268.1L94.7,274.8L95.0,276.9L92.9,278.9L90.5,278.3L91.2,284.0L90.8,287.0L88.3,290.1L88.4,294.7L85.0,298.0L84.8,302.0L86.6,302.2L91.1,306.1L92.2,312.6L94.4,315.6L98.4,315.2L102.0,313.4L104.0,313.9L106.8,312.4L118.9,315.3L125.8,314.4L127.4,311.9L131.5,309.5L136.3,309.8L140.2,302.5L142.9,301.5L144.8,299.5L143.5,298.6L144.8,289.1L148.7,285.5L152.1,281.1L156.1,279.0L164.6,276.8L170.0,274.6L172.5,269.1L172.4,268.4L167.7,268.6L166.4,267.9L162.8,266.7L161.8,266.1L161.6,266.1L160.8,266.4L159.8,265.3L159.9,264.9L159.5,263.9L148.1,260.5L146.0,260.3L141.4,256.5L138.7,252.8L138.5,252.8L134.8,252.7L130.0,251.2L124.5,248.6L119.9,248.4L111.4,243.8L104.1,242.4L90.1,240.8L87.6,241.7L88.4,248.2L86.4,254.1L87.0,254.1Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M293.8,113.4L291.3,119.8L293.6,117.2L297.6,114.6L293.8,113.4Z M295.1,111.2L294.8,109.6L290.6,110.6L293.3,112.8L295.1,111.2Z M303.5,119.5L307.2,117.0L311.0,118.4L319.5,120.3L319.6,120.2L319.6,120.0L320.1,117.4L317.7,108.6L320.0,101.8L319.1,100.8L319.1,101.0L315.9,101.8L306.7,101.6L306.5,102.7L299.9,105.2L297.4,107.3L298.6,113.2L303.1,114.5L303.5,119.1L303.5,119.5Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M273.4,14.0L274.4,14.4L283.7,21.5L284.2,21.5L287.0,31.5L288.6,33.8L288.1,38.1L290.8,43.3L291.1,43.2L295.6,45.1L296.3,49.0L294.0,52.7L293.3,55.6L286.6,68.3L283.3,69.7L282.2,73.8L285.3,88.3L284.9,90.5L287.5,94.8L291.4,96.6L292.2,99.8L293.2,97.9L294.3,101.6L296.2,99.7L300.4,98.5L308.0,94.4L307.4,93.2L315.8,91.1L316.0,91.0L321.2,82.4L326.3,70.9L325.2,62.3L319.2,58.9L317.8,52.4L314.2,46.5L313.1,37.0L308.0,29.9L307.7,28.8L309.5,22.6L308.5,20.8L303.4,17.6L302.3,9.7L302.5,9.5L302.1,9.2L302.7,5.0L301.6,3.3L296.5,0.5L291.8,4.2L291.0,6.2L291.2,12.7L289.3,16.3L285.6,14.8L282.5,16.4L276.6,11.4L273.5,13.6L273.4,14.0Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M217.6,269.3L211.9,271.4L210.7,274.6L212.6,281.6L215.2,282.3L217.8,275.6L217.6,269.3Z M179.5,184.2L176.1,184.4L173.0,191.2L163.4,194.9L160.5,198.4L154.2,194.1L150.7,192.5L151.2,203.1L147.6,202.9L144.9,201.7L143.1,202.4L140.4,198.7L130.5,199.3L132.0,203.4L130.0,203.7L131.9,207.0L132.9,206.9L139.4,210.9L140.9,211.2L141.8,214.4L145.2,215.1L143.6,218.7L147.1,225.1L148.6,225.8L147.3,231.8L147.6,233.4L144.9,241.5L146.0,241.5L141.2,251.7L139.9,252.7L138.7,252.8L141.4,256.5L146.0,260.3L148.1,260.5L159.5,263.9L159.9,264.9L160.2,264.7L161.0,264.7L161.9,265.1L161.8,265.9L161.8,266.1L162.8,266.7L166.4,267.9L167.7,268.6L172.4,268.4L172.3,268.1L171.7,264.3L173.7,261.1L179.8,258.0L184.2,260.7L186.7,261.1L193.8,264.8L197.1,263.9L202.4,259.5L203.3,259.2L203.6,258.8L203.7,259.0L203.7,259.1L204.1,258.9L205.2,255.1L203.6,255.4L200.9,253.6L199.3,245.7L202.9,242.6L201.1,238.6L202.1,238.2L202.7,237.7L202.6,237.3L200.1,232.4L196.6,234.9L199.5,228.5L203.4,224.6L207.2,222.2L208.0,221.8L207.7,221.6L212.4,209.5L208.2,206.5L203.7,206.0L201.8,202.9L201.5,202.9L201.1,202.7L200.1,202.5L199.8,202.7L198.3,202.1L198.1,201.7L197.6,201.7L192.3,196.9L193.0,195.3L188.5,196.4L183.9,190.4L180.0,183.9L179.5,184.2Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M420.0,359.9L419.9,359.3L420.5,356.9L419.9,358.0L418.7,360.0L418.9,360.2L419.4,360.9L420.0,359.9Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M133.4,133.3L128.5,135.8L127.2,137.3L127.4,140.4L133.7,142.7L135.9,144.3L136.4,144.7L140.3,142.6L141.1,140.3L139.5,133.8L137.7,133.0L133.5,133.7L133.4,133.3Z M145.8,112.2L142.5,112.2L145.2,116.7L147.2,115.8L145.6,114.4L145.8,112.2Z M148.0,104.1L142.9,104.9L145.9,107.0L148.0,104.1Z M163.5,106.7L164.1,105.7L151.0,108.0L151.7,109.8L148.2,111.3L148.0,115.6L144.3,121.0L148.4,120.7L146.9,122.6L145.3,127.9L148.4,128.9L144.6,137.6L144.2,139.7L147.0,140.5L153.3,140.0L151.5,143.6L152.2,147.2L154.6,148.3L152.0,154.3L153.3,156.7L145.4,155.7L141.1,158.8L144.7,158.6L142.5,164.5L135.5,166.7L136.9,169.6L141.7,170.5L141.4,171.4L145.8,174.3L139.0,176.3L132.4,181.2L129.4,182.1L131.7,184.4L140.8,184.7L142.7,182.0L146.6,181.2L151.6,183.5L155.9,181.5L159.4,183.5L168.5,184.1L173.1,182.2L173.7,180.3L169.4,179.3L168.6,178.2L171.7,175.5L173.7,175.5L176.2,172.8L177.7,168.9L177.5,167.1L173.7,164.5L171.5,163.9L169.6,165.2L168.4,164.0L170.7,161.9L168.0,156.0L169.8,155.9L169.3,151.3L167.5,147.8L165.1,145.8L164.4,139.6L162.4,132.7L160.3,131.0L157.7,131.1L157.4,129.8L160.7,128.2L160.4,126.4L164.0,123.4L167.9,118.0L167.7,116.8L158.9,114.2L156.1,114.3L163.4,107.5L163.5,106.7Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M478.0,229.5L472.6,229.2L471.4,226.4L464.8,226.3L462.4,227.4L459.5,230.6L457.9,230.7L450.5,228.3L441.6,230.9L434.5,230.3L430.4,233.0L432.1,233.5L439.9,235.7L442.1,235.8L447.4,244.6L446.7,246.9L449.1,246.8L453.4,245.1L454.4,243.1L461.1,245.3L461.1,245.5L461.4,245.2L466.1,242.3L470.8,239.5L471.0,239.3L471.9,237.5L473.3,236.8L477.5,237.5L481.9,236.6L482.0,234.3L478.1,232.7L478.1,230.0L478.2,229.6L478.0,229.5Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M328.7,335.9L326.4,336.2L327.8,339.0L336.0,339.3L336.5,340.6L347.7,338.3L344.0,335.8L341.8,336.4L331.4,336.3L328.7,335.9Z M321.6,303.3L318.8,304.5L321.5,305.5L324.0,308.1L327.0,308.2L328.6,310.7L329.7,310.1L322.2,304.3L321.6,303.3Z M343.7,296.5L340.0,297.5L345.2,299.6L343.7,296.5Z M339.6,273.6L338.7,273.5L338.7,277.0L333.4,279.1L328.9,278.8L325.9,277.6L316.2,280.8L315.4,280.8L315.0,280.8L307.4,285.4L302.5,286.8L301.5,287.0L301.5,287.7L301.7,290.4L299.8,294.3L297.4,296.1L298.0,297.5L295.2,298.6L296.0,299.2L301.6,304.9L305.2,311.1L311.1,309.8L320.7,311.5L318.9,313.4L311.1,310.7L305.3,315.2L309.8,320.0L309.3,323.0L312.1,326.1L313.3,323.1L319.5,325.8L320.4,322.5L319.0,319.9L322.0,318.7L322.9,316.6L321.4,316.4L319.9,314.1L321.0,313.2L325.2,313.4L327.6,315.1L327.2,310.6L325.5,309.0L315.5,304.7L318.0,303.9L317.0,300.9L320.7,301.3L314.3,293.6L314.1,289.1L319.7,292.5L322.4,289.8L326.7,290.1L322.2,285.7L325.7,284.9L326.6,283.5L331.8,282.0L338.7,283.1L339.0,283.5L340.9,280.5L340.4,278.2L340.3,273.7L339.6,273.6Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M282.6,272.9L282.3,272.5L282.0,272.1L282.0,271.7L281.3,271.5L277.5,269.2L276.7,269.2L273.0,267.6L281.2,272.1L282.6,272.9Z M266.9,234.0L266.3,233.8L261.1,237.1L261.1,240.6L258.7,241.7L258.5,244.5L247.1,243.8L246.7,244.2L248.2,249.0L249.8,250.5L251.8,246.1L253.8,246.0L256.3,249.1L256.8,252.7L258.9,254.8L258.3,256.9L267.0,262.8L270.6,264.2L275.3,268.1L265.5,256.3L264.7,253.3L262.0,251.0L262.3,247.0L264.9,248.0L270.1,245.8L282.1,247.1L284.2,249.1L284.6,249.0L284.5,248.7L286.2,244.9L284.3,243.8L283.3,238.9L283.3,238.7L283.3,238.7L280.2,240.5L275.9,240.5L267.3,234.1L266.9,234.0Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M302.5,212.9L300.0,213.7L292.9,212.3L291.1,215.0L288.4,216.8L282.0,218.1L281.0,220.7L274.7,221.2L270.7,219.1L270.6,219.1L270.2,219.6L266.1,225.5L265.0,229.4L264.0,230.5L265.2,230.5L265.6,231.8L266.8,233.8L266.9,234.0L267.3,234.1L275.9,240.5L280.2,240.5L283.3,238.7L283.3,238.7L283.5,238.7L284.9,238.1L286.9,236.9L292.0,236.2L292.2,236.3L292.5,236.1L297.5,234.5L301.6,225.3L302.6,221.6L307.8,217.0L307.9,216.7L307.7,216.6L305.3,214.5L304.1,214.1L303.2,212.7L302.6,212.8L302.5,212.9Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M133.7,132.9L127.9,131.0L125.4,134.0L126.2,137.1L123.5,139.0L119.8,137.1L115.1,137.0L117.0,140.6L117.1,148.4L112.3,151.7L112.5,152.9L107.0,155.3L106.2,158.5L110.6,159.2L108.1,162.4L111.2,163.3L117.3,162.8L117.4,161.3L121.9,161.8L123.1,160.9L130.3,161.5L129.8,160.4L134.2,154.0L134.8,146.1L136.1,144.7L135.9,144.3L133.7,142.7L127.4,140.4L127.2,137.3L128.5,135.8L133.4,133.3L133.7,132.9Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M489.7,256.6L488.5,257.1L487.6,257.9L487.2,258.0L485.8,258.3L482.4,258.8L475.8,255.0L475.6,254.9L475.3,255.0L473.6,254.5L473.1,258.6L471.1,259.5L476.2,267.7L477.6,268.2L477.5,272.9L478.3,272.7L483.8,277.9L483.9,278.1L483.9,278.1L492.4,286.5L495.2,287.1L498.5,285.8L500.0,290.9L500.0,248.9L500.0,246.8L500.0,246.0L497.0,244.7L490.2,256.4L489.7,256.6Z M500.0,293.1L498.9,298.9L497.8,299.3L499.4,302.5L500.0,293.1Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M483.9,278.1L483.5,278.0L476.9,280.1L468.6,282.0L467.3,285.0L466.7,285.4L466.7,285.6L464.1,291.8L461.6,293.6L463.8,301.9L463.8,305.5L465.1,310.1L462.6,315.9L452.3,327.9L450.4,329.9L451.6,331.8L454.9,337.4L457.4,339.1L456.6,340.6L458.4,340.4L482.6,342.2L484.7,343.0L500.0,348.5L499.4,302.5L497.8,299.3L498.9,298.9L500.0,293.1L500.0,290.9L498.5,285.8L495.2,287.1L492.4,286.5L483.9,278.1L483.9,278.1Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M136.8,17.8L134.6,14.1L133.3,16.6L125.2,12.8L122.0,13.2L121.2,14.7L119.1,11.1L116.2,13.7L112.6,15.7L113.1,11.2L115.1,10.6L111.4,3.1L107.9,4.1L104.5,7.3L105.1,9.4L108.0,9.9L111.0,13.2L108.7,16.4L104.0,14.6L102.5,15.3L105.7,20.8L102.4,24.3L99.6,25.1L104.2,27.4L107.3,32.6L112.5,37.0L115.8,37.2L123.2,36.6L132.4,35.4L137.8,31.5L138.9,31.5L140.7,27.5L138.9,20.7L136.8,17.8Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M428.6,355.7L428.2,355.8L424.5,358.1L424.6,353.2L423.1,350.4L423.3,347.3L426.8,347.0L427.4,346.9L427.0,344.7L427.2,344.0L428.1,343.3L428.5,343.1L428.5,342.7L428.3,339.6L428.5,339.1L427.5,337.0L427.5,336.4L427.3,336.6L425.3,340.2L424.7,340.8L422.3,341.4L422.3,342.5L421.8,350.4L421.4,353.5L420.5,356.8L420.5,356.9L419.9,359.3L420.0,359.9L419.4,360.9L420.5,362.8L421.4,364.2L422.1,365.4L428.4,365.4L429.2,359.0L428.8,358.3L428.7,357.2L428.6,355.7Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M262.2,314.7L259.9,314.7L252.2,316.8L247.5,317.0L240.2,315.1L238.0,319.1L238.5,320.1L243.5,322.0L248.4,325.4L251.1,325.7L254.0,328.6L257.9,329.6L260.2,326.5L258.6,323.0L259.6,319.0L262.2,314.7Z M217.7,288.1L215.3,284.8L209.8,287.9L207.4,287.1L206.9,288.4L208.6,294.8L207.6,303.7L209.2,306.6L212.1,305.6L212.5,303.8L216.8,302.9L217.4,294.0L218.8,291.9L217.7,288.1Z M226.3,230.1L226.0,231.4L222.3,234.8L219.3,234.0L214.9,237.2L212.6,233.8L211.2,234.3L207.8,238.2L202.9,237.9L202.7,237.7L202.1,238.2L201.1,238.6L202.9,242.6L199.3,245.7L200.9,253.6L203.6,255.4L205.2,255.1L204.1,258.9L205.8,258.7L213.5,253.3L217.1,254.5L223.5,259.4L225.1,268.1L231.9,274.3L240.0,283.2L243.3,285.4L245.3,285.1L249.0,286.6L250.6,289.8L252.3,289.7L256.2,291.4L257.1,295.2L262.7,297.5L266.9,307.6L266.8,309.4L263.4,317.4L265.9,317.3L269.6,309.7L272.5,307.4L273.6,303.1L269.0,298.6L270.0,295.9L272.6,292.1L275.4,293.7L278.9,294.1L282.7,298.4L283.4,294.4L279.4,290.4L268.8,285.3L264.0,281.6L265.8,278.9L258.5,278.7L253.9,275.7L251.3,273.2L247.8,264.6L245.0,261.7L240.8,258.6L238.2,254.3L237.8,251.4L238.9,248.4L238.2,244.4L243.4,242.6L244.6,241.3L248.5,242.8L248.1,243.1L247.3,239.3L245.9,236.0L247.8,234.6L248.0,234.0L246.6,233.7L239.2,232.2L237.8,228.4L230.4,230.4L226.5,230.2L226.3,230.1Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M456.6,340.6L457.4,339.1L454.9,337.4L451.6,331.8L450.4,329.9L448.8,331.9L437.7,344.7L434.8,345.1L429.4,343.1L428.5,343.1L428.1,343.3L427.2,344.0L427.0,344.7L427.4,346.9L427.9,348.3L428.1,350.8L428.8,352.8L428.5,354.9L428.6,355.7L428.7,357.2L428.8,358.3L429.2,359.0L428.4,365.4L447.5,365.4L449.1,361.3L451.3,358.9L440.7,352.1L455.7,342.1L456.6,340.6Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M500.0,179.1L494.7,182.6L494.2,187.2L495.0,188.7L499.2,189.5L494.7,190.9L491.5,193.8L492.3,195.3L496.4,194.9L500.0,198.2L500.0,179.1Z M477.2,180.6L480.7,175.9L482.0,172.4L486.0,167.7L492.9,166.1L495.9,163.6L500.0,168.3L500.0,114.2L493.6,120.8L492.4,123.2L484.7,123.4L487.1,126.6L481.3,124.0L471.5,125.4L469.1,124.6L464.0,128.3L461.7,128.7L455.8,145.1L458.5,151.3L457.8,152.2L450.6,149.3L450.2,149.7L449.8,157.7L450.2,159.6L452.9,163.4L452.8,168.6L453.8,169.9L459.5,173.9L465.4,171.9L471.2,175.7L474.2,178.3L471.8,179.2L472.7,180.8L477.5,180.9L477.2,180.6Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M304.5,272.7L300.3,265.1L297.2,264.4L296.3,267.8L295.5,268.2L294.6,268.5L293.4,269.0L293.3,269.3L293.7,270.9L293.7,271.0L294.0,271.2L295.9,273.2L297.2,274.4L297.9,276.9L297.8,277.3L297.9,277.4L299.2,275.2L304.7,273.0L304.7,273.0L304.5,272.7Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M427.8,336.0L427.6,334.0L430.4,331.3L431.3,327.3L427.9,323.7L425.6,324.8L425.8,325.6L423.9,329.2L424.1,331.3L422.5,340.5L422.3,341.4L424.7,340.8L425.3,340.2L427.3,336.6L427.5,336.4L427.8,336.0Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M229.4,363.3L229.4,363.5L229.0,365.4L229.0,365.4L233.8,365.4L231.9,364.2L230.6,363.9L229.4,363.3Z M325.7,365.4L325.5,364.7L317.7,362.6L313.2,362.9L311.5,364.4L307.9,365.4L325.7,365.4Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M220.7,227.8L220.6,227.0L220.5,226.7L220.4,226.0L220.4,225.8L220.0,226.8L220.0,227.5L220.0,227.9L220.1,227.9L220.6,227.9L220.7,227.8Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M288.3,146.7L288.6,146.7L289.0,146.0L289.2,144.6L288.8,145.5L288.3,146.7Z M288.5,139.5L288.7,141.5L289.9,146.0L290.2,146.7L290.2,146.7L299.5,149.9L299.1,152.0L299.5,154.2L299.7,154.6L300.0,154.2L303.9,156.2L304.3,157.9L304.3,158.1L304.8,158.3L311.6,156.8L315.5,152.8L315.9,147.6L320.1,143.2L319.1,139.2L319.0,138.8L318.7,138.8L313.2,135.4L299.6,134.8L293.6,135.2L288.4,139.0L288.5,139.5Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M200.7,196.3L199.2,196.5L198.0,199.1L198.3,201.6L198.1,201.7L198.3,202.1L199.8,202.7L200.1,202.5L201.1,202.7L201.5,202.9L201.6,202.4L200.6,197.1L200.7,196.6L200.8,196.3L200.7,196.3Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M319.5,120.3L311.0,118.4L307.2,117.0L303.5,119.5L303.5,120.3L302.7,128.1L299.2,127.8L295.2,123.3L290.4,124.1L289.3,126.6L288.0,137.2L288.4,139.0L293.6,135.2L299.6,134.8L313.2,135.4L318.7,138.8L319.0,138.8L319.1,138.7L321.2,136.8L322.6,136.8L326.3,132.7L326.5,132.7L326.5,132.2L322.5,125.1L322.7,123.2L320.2,120.1L319.6,120.2L319.5,120.3Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M118.8,331.1L114.1,328.1L112.9,328.6L101.7,326.3L97.7,321.2L96.1,318.4L92.9,318.3L87.4,327.0L82.8,332.2L75.4,335.1L68.9,335.9L59.6,341.2L57.6,345.6L54.1,348.3L50.0,357.1L48.4,365.4L100.6,365.4L101.8,361.3L123.4,361.8L121.6,349.5L122.5,339.3L120.4,331.6L118.8,331.1Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M203.7,259.1L203.7,259.0L203.6,258.8L203.3,259.2L203.7,259.1Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M347.0,235.0L349.5,230.8L351.6,225.1L355.1,223.8L355.5,220.3L353.1,219.2L351.9,216.0L350.6,215.4L348.1,210.0L343.6,209.6L339.0,207.3L331.6,209.8L331.6,210.2L332.2,210.0L335.5,212.5L337.2,215.3L343.1,220.8L344.0,222.5L345.1,230.5L346.3,234.8L346.7,235.3L347.0,235.0Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M310.0,271.7L305.9,272.7L305.1,273.0L304.7,273.0L304.7,273.0L299.2,275.2L297.9,277.4L297.8,277.3L297.7,277.4L297.2,280.8L301.5,286.8L301.5,287.0L302.5,286.8L307.4,285.4L315.0,280.8L315.4,280.8L315.5,280.6L315.4,278.1L315.6,277.0L311.5,273.1L310.2,271.8L310.0,271.7Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M286.6,261.9L284.5,263.9L281.8,267.8L282.1,271.7L282.0,271.7L282.0,272.1L282.3,272.5L282.6,272.9L282.9,273.0L283.5,273.4L285.4,274.5L287.7,277.3L288.9,278.0L290.7,270.5L291.3,270.6L293.5,271.0L293.7,271.0L293.7,270.9L293.3,269.3L293.4,269.0L294.6,268.5L295.5,268.2L295.5,267.9L291.2,265.7L290.4,265.3L286.8,262.0L286.8,261.9L286.6,261.9Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M189.9,182.8L189.4,182.4L188.6,182.7L185.9,181.9L185.4,182.0L189.4,183.8L189.9,182.8Z M198.9,189.7L199.2,189.9L199.5,189.9L200.7,190.1L201.2,188.6L200.3,187.8L202.7,183.1L201.5,180.2L206.4,179.3L208.4,174.5L206.7,173.6L209.0,171.4L210.4,166.2L209.6,166.0L202.8,164.5L197.6,168.0L188.3,182.1L190.2,182.4L195.6,182.5L196.5,184.4L200.1,186.4L198.9,189.7L198.9,189.7Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M256.4,19.6L256.6,12.7L254.0,20.8L255.2,22.0L257.4,20.5L256.4,19.6Z M262.1,9.4L260.5,13.9L264.0,11.7L262.1,9.4Z M267.7,4.5L267.2,2.8L264.6,8.9L268.2,6.8L267.7,4.5Z M236.9,111.7L238.5,112.0L238.5,106.4L242.6,101.5L243.0,97.2L242.0,93.8L243.8,92.4L244.7,89.4L241.4,85.8L242.2,81.0L242.1,73.3L241.2,70.5L244.3,64.1L246.6,63.0L249.8,63.6L250.6,61.2L248.5,58.1L251.5,52.4L252.6,46.4L252.2,43.1L255.9,41.4L257.3,36.9L259.3,33.1L260.3,25.9L261.7,24.5L264.5,25.0L265.8,19.1L271.5,18.9L271.6,14.3L272.9,14.0L273.4,14.0L273.5,13.6L276.6,11.4L282.5,16.4L285.6,14.8L289.3,16.3L291.2,12.7L291.0,6.2L291.8,4.2L296.5,0.5L301.6,3.3L302.7,5.0L302.1,9.2L302.5,9.5L303.0,9.2L303.3,6.6L307.4,3.3L307.0,0.9L306.5,0.9L301.8,0.0L281.9,0.0L281.2,2.7L276.9,1.6L272.5,5.6L273.3,9.3L271.4,5.3L269.6,10.5L269.6,7.1L267.8,7.6L266.1,10.7L267.0,11.8L263.1,14.1L260.4,18.2L261.3,21.3L258.7,21.2L253.0,26.9L256.1,31.3L252.2,32.1L250.1,34.0L246.3,40.2L245.9,44.2L242.3,50.5L239.6,54.1L240.1,55.7L237.1,57.9L232.9,62.5L230.7,66.0L234.0,67.5L236.7,65.7L236.7,64.2L239.0,63.5L235.5,67.7L232.5,69.2L231.2,66.8L227.5,66.4L225.5,67.3L226.1,69.5L224.1,70.8L218.9,72.3L217.6,74.7L222.2,74.9L219.7,75.9L215.6,75.4L216.3,77.4L209.5,79.1L209.2,80.3L215.2,83.2L208.5,81.5L209.6,85.7L207.8,86.5L209.0,89.3L219.5,89.8L217.1,90.4L207.9,89.6L207.2,93.0L207.7,98.0L209.6,99.1L207.0,99.5L206.3,103.4L212.1,97.2L209.8,101.1L207.1,103.5L205.7,107.4L209.9,107.2L207.2,113.5L207.7,114.5L213.8,120.1L221.9,118.1L228.9,111.4L232.2,109.2L236.9,111.4L236.9,111.7Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M281.5,155.6L278.3,156.7L276.0,155.2L275.0,153.0L273.0,152.3L264.5,155.4L263.5,156.6L251.4,161.7L251.2,161.5L251.1,161.8L251.2,162.3L252.0,162.4L253.2,162.8L252.8,164.3L251.5,163.7L251.5,172.9L254.5,179.8L253.6,182.2L256.2,187.8L255.0,191.6L255.0,191.7L255.5,191.7L257.9,191.4L262.8,193.8L267.1,198.7L268.5,195.7L272.2,197.0L275.7,199.5L278.4,200.2L280.6,203.6L280.6,203.9L281.3,204.0L282.7,204.8L284.6,203.0L288.6,206.5L290.4,204.4L298.4,203.4L304.0,206.0L304.5,206.0L304.7,206.0L306.5,205.9L304.9,200.7L310.3,192.5L311.8,191.9L312.0,187.3L308.6,182.1L308.1,181.5L307.6,180.6L307.4,175.8L304.8,174.6L308.1,170.2L307.8,166.7L305.4,161.3L304.3,158.1L304.3,157.9L303.9,156.2L300.0,154.2L299.7,154.6L299.6,154.7L296.4,155.0L281.8,155.4L281.5,155.6Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M86.0,254.9L85.6,261.8L81.8,269.8L76.3,276.9L73.5,282.8L74.9,285.2L78.5,287.5L76.9,289.5L74.9,296.5L72.5,299.9L75.8,299.9L80.4,302.5L84.1,301.9L84.8,302.0L85.0,298.0L88.4,294.7L88.3,290.1L90.8,287.0L91.2,284.0L90.5,278.3L92.9,278.9L95.0,276.9L94.7,274.8L97.7,268.1L97.5,266.8L103.1,263.8L99.1,257.6L92.9,256.6L91.4,253.5L87.0,254.1L86.0,254.9Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M346.3,234.8L345.1,230.5L344.0,222.5L343.1,220.8L337.2,215.3L335.5,212.5L332.2,210.0L331.6,210.2L331.3,210.3L329.1,213.2L322.9,215.9L321.3,217.2L318.3,215.3L312.7,215.6L308.1,216.5L307.9,216.7L307.8,217.0L302.6,221.6L301.6,225.3L297.5,234.5L292.5,236.1L292.2,236.3L292.7,236.9L297.6,243.1L299.0,243.7L303.7,249.2L306.3,250.3L309.9,248.9L309.5,251.6L310.7,252.7L310.8,252.8L311.3,253.2L312.7,256.6L314.8,255.9L331.0,255.7L337.2,250.6L339.6,249.6L347.0,249.8L348.5,251.2L352.3,251.3L352.2,250.7L352.7,240.6L356.9,239.4L357.1,235.8L357.1,235.2L352.5,235.5L348.6,236.6L347.6,236.2L346.7,235.3L346.3,234.8Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M288.6,146.7L288.3,146.7L288.1,147.3L285.8,150.2L283.1,153.6L282.6,154.5L281.8,155.4L296.4,155.0L299.6,154.7L299.7,154.6L299.5,154.2L299.1,152.0L299.5,149.9L290.2,146.7L290.3,148.3L286.9,149.8L288.2,147.7L288.6,146.7Z M500.0,0.0L372.3,0.0L373.6,3.6L371.3,7.3L365.8,6.1L364.4,0.0L357.0,0.0L359.5,8.4L361.9,9.0L366.1,18.8L362.8,17.0L357.2,17.4L352.5,30.7L357.7,35.9L352.6,38.3L348.0,38.3L345.3,36.9L342.6,37.2L342.0,39.8L345.5,43.2L348.6,43.1L351.1,46.9L349.9,47.9L344.1,48.4L340.3,46.1L336.6,45.4L332.2,38.2L331.6,32.7L326.2,30.6L322.3,27.4L319.5,24.0L321.6,24.1L329.4,27.2L333.3,27.6L342.1,27.4L346.1,26.6L350.5,22.5L352.3,15.3L347.9,8.6L341.8,7.3L333.2,4.0L325.3,1.6L313.7,2.1L311.6,0.8L314.4,0.0L309.9,0.0L307.7,0.9L307.0,0.9L307.4,3.3L303.3,6.6L303.0,9.2L302.5,9.5L302.3,9.7L303.4,17.6L308.5,20.8L309.5,22.6L307.7,28.8L308.0,29.9L313.1,37.0L314.2,46.5L317.8,52.4L319.2,58.9L325.2,62.3L326.3,70.9L321.2,82.4L316.0,91.0L317.7,90.3L322.7,93.1L325.8,92.3L328.5,94.6L323.5,94.8L322.6,96.9L318.8,98.0L319.2,100.1L319.1,100.8L320.0,101.8L317.7,108.6L320.1,117.4L319.6,120.0L319.6,120.2L320.2,120.1L322.7,123.2L322.5,125.1L326.5,132.2L326.5,132.7L327.4,133.4L333.4,133.3L334.5,135.6L337.2,133.5L342.4,135.0L343.6,142.6L345.7,143.4L347.5,146.6L349.8,147.9L351.6,150.7L357.3,152.7L354.6,157.0L350.8,156.9L355.2,166.6L355.3,166.8L355.4,166.8L357.5,166.8L358.4,164.3L366.0,161.5L371.3,165.8L371.8,171.1L373.4,170.8L382.8,177.1L385.2,175.7L387.8,176.2L398.0,176.6L398.9,174.9L409.4,176.2L411.3,175.8L412.3,179.0L410.7,181.7L411.7,184.9L414.7,187.9L409.2,194.4L406.8,198.2L407.7,202.7L409.2,201.3L413.3,198.9L413.6,201.4L410.0,204.8L410.8,206.1L406.9,208.8L412.5,211.5L408.6,217.3L409.2,219.4L403.1,223.9L408.2,225.2L409.0,226.1L412.5,225.9L415.5,227.8L419.4,227.8L429.5,232.8L430.4,233.0L434.5,230.3L441.6,230.9L450.5,228.3L457.9,230.7L459.5,230.6L462.4,227.4L464.8,226.3L471.4,226.4L472.6,229.2L478.0,229.5L478.2,229.6L478.9,229.4L480.5,229.3L485.8,232.2L490.1,231.3L492.2,223.3L491.4,223.0L480.4,216.0L477.8,208.5L478.3,211.3L475.1,206.9L470.4,205.6L470.4,192.7L473.1,190.0L477.8,181.3L477.5,180.9L472.7,180.8L471.8,179.2L474.2,178.3L471.2,175.7L465.4,171.9L459.5,173.9L453.8,169.9L452.8,168.6L452.9,163.4L450.2,159.6L449.8,157.7L450.2,149.7L450.6,149.3L457.8,152.2L458.5,151.3L455.8,145.1L461.7,128.7L464.0,128.3L469.1,124.6L471.5,125.4L481.3,124.0L487.1,126.6L484.7,123.4L492.4,123.2L493.6,120.8L500.0,114.2L500.0,78.4L500.0,74.9L500.0,0.0Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M456.6,340.6L455.7,342.1L440.7,352.1L451.3,358.9L449.1,361.3L447.5,365.4L500.0,365.4L500.0,348.5L484.7,343.0L482.6,342.2L458.4,340.4L456.6,340.6Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M283.3,238.7L283.3,238.9L284.3,243.8L286.2,244.9L284.5,248.7L284.6,249.0L284.9,249.0L285.8,252.7L289.2,256.8L287.2,261.4L286.8,261.9L286.8,262.0L290.4,265.3L291.2,265.7L295.5,267.9L295.5,268.2L296.3,267.8L297.2,264.4L300.3,265.1L304.5,272.7L304.7,273.0L305.1,273.0L305.9,272.7L310.0,271.7L310.2,271.8L310.8,271.6L310.6,266.5L312.2,265.9L311.7,261.0L310.6,260.5L310.6,253.0L310.8,252.8L310.7,252.7L309.5,251.6L309.9,248.9L306.3,250.3L303.7,249.2L299.0,243.7L297.6,243.1L292.7,236.9L292.2,236.3L292.0,236.2L286.9,236.9L284.9,238.1L283.5,238.7L283.3,238.7Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M304.0,206.0L298.4,203.4L290.4,204.4L288.6,206.5L284.6,203.0L282.7,204.8L281.3,204.0L280.6,203.9L280.4,203.9L276.1,208.5L274.6,209.9L269.2,212.6L269.1,213.4L269.0,213.5L268.5,215.0L268.6,215.5L270.1,218.8L270.6,219.1L270.7,219.1L274.7,221.2L281.0,220.7L282.0,218.1L288.4,216.8L291.1,215.0L292.9,212.3L300.0,213.7L302.5,212.9L302.6,212.8L302.5,211.2L303.5,209.4L303.7,208.1L304.4,206.4L304.5,206.0L304.0,206.0Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M266.8,233.8L265.6,231.8L265.2,230.5L264.0,230.5L263.6,230.7L261.8,232.1L258.2,232.8L248.3,234.1L248.0,234.0L247.8,234.6L245.9,236.0L247.3,239.3L248.1,243.1L247.5,243.6L247.1,243.8L258.5,244.5L258.7,241.7L261.1,240.6L261.1,237.1L266.3,233.8L266.9,234.0L266.8,233.8Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M276.4,122.7L271.7,125.8L272.3,129.9L274.8,128.6L276.4,122.7Z M273.4,14.0L272.9,14.0L271.6,14.3L271.5,18.9L265.8,19.1L264.5,25.0L261.7,24.5L260.3,25.9L259.3,33.1L257.3,36.9L255.9,41.4L252.2,43.1L252.6,46.4L251.5,52.4L248.5,58.1L250.6,61.2L249.8,63.6L246.6,63.0L244.3,64.1L241.2,70.5L242.1,73.3L242.2,81.0L241.4,85.8L244.7,89.4L243.8,92.4L242.0,93.8L243.0,97.2L242.6,101.5L238.5,106.4L238.5,112.0L236.9,111.7L236.4,111.2L235.7,112.8L236.0,117.2L238.1,122.1L238.2,124.6L239.8,127.3L241.6,132.6L244.2,136.5L243.0,139.2L241.9,138.6L244.1,146.6L246.2,147.9L251.0,147.4L251.9,146.2L251.4,142.6L257.2,140.0L260.4,139.8L263.4,130.9L263.8,127.4L263.3,123.7L263.6,117.6L262.6,115.9L265.2,115.4L273.0,108.4L272.7,107.8L266.5,109.3L265.8,108.5L260.7,107.8L266.8,107.1L269.8,108.3L274.1,104.4L273.4,101.0L269.3,97.1L265.6,95.4L264.8,85.5L266.1,85.8L265.4,77.9L269.9,73.8L270.7,71.1L277.0,65.8L281.8,57.6L280.9,48.5L283.6,43.9L289.8,43.7L290.8,43.3L288.1,38.1L288.6,33.8L287.0,31.5L284.2,21.5L283.7,21.5L274.4,14.4L273.4,14.0Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M466.0,284.5L453.1,291.6L450.4,294.4L444.1,298.1L436.7,298.3L431.7,302.5L425.3,303.1L425.5,306.3L426.8,308.2L425.2,309.0L424.1,313.1L421.9,312.9L421.6,313.6L421.7,316.4L423.1,317.5L424.5,322.9L425.6,324.8L427.9,323.7L431.3,327.3L430.4,331.3L427.6,334.0L427.8,336.0L427.5,336.4L427.5,337.0L428.5,339.1L428.3,339.6L428.5,342.7L428.5,343.1L429.4,343.1L434.8,345.1L437.7,344.7L448.8,331.9L450.4,329.9L452.3,327.9L462.6,315.9L465.1,310.1L463.8,305.5L463.8,301.9L461.6,293.6L464.1,291.8L466.7,285.6L466.7,285.4L466.0,284.5Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M228.5,362.8L225.0,358.8L223.0,359.8L220.9,358.3L219.1,351.6L226.8,343.3L226.0,339.5L222.2,335.4L222.5,332.6L227.4,327.5L226.1,325.6L221.2,327.3L216.3,322.4L212.0,323.6L209.4,325.4L207.4,325.8L204.3,329.9L205.3,331.2L204.1,336.6L204.2,343.6L202.4,348.5L197.5,352.4L196.8,355.1L202.3,365.4L229.0,365.4L229.0,365.4L229.4,363.5L229.4,363.3L228.5,362.8Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M421.9,312.9L424.1,313.1L425.2,309.0L426.8,308.2L425.5,306.3L425.3,303.1L431.7,302.5L436.7,298.3L444.1,298.1L450.4,294.4L453.1,291.6L466.0,284.5L466.7,285.4L467.3,285.0L468.6,282.0L476.9,280.1L483.5,278.0L483.9,278.1L483.8,277.9L478.3,272.7L477.5,272.9L477.6,268.2L476.2,267.7L471.1,259.5L473.1,258.6L473.6,254.5L475.3,255.0L475.6,254.9L475.2,254.7L475.0,254.5L474.6,254.2L470.6,252.9L468.3,254.0L461.4,245.8L461.1,245.5L461.1,245.3L454.4,243.1L453.4,245.1L449.1,246.8L446.7,246.9L446.3,248.0L442.4,252.8L436.7,256.1L433.7,255.9L427.0,260.1L417.1,260.6L414.6,259.6L413.0,261.1L408.7,258.1L405.3,259.6L401.7,258.0L401.5,256.7L386.4,262.1L383.8,263.7L373.0,273.5L369.4,273.1L366.4,274.2L362.0,274.4L360.4,276.0L363.0,278.3L366.7,278.3L360.4,280.6L361.2,282.9L355.9,283.8L351.7,283.8L350.1,285.7L348.5,284.6L344.6,285.8L341.0,290.4L341.3,295.6L346.5,293.8L348.0,303.4L344.5,304.0L346.2,307.6L347.4,307.1L351.9,308.5L351.8,312.2L355.4,315.9L353.6,318.1L361.0,316.6L355.4,320.4L359.8,320.0L367.2,318.2L373.7,322.4L379.7,317.4L379.8,314.1L385.3,313.5L388.9,314.5L395.8,318.0L397.9,318.1L404.5,315.0L408.2,309.8L414.8,307.7L420.7,303.2L421.5,303.5L420.6,308.3L422.2,312.0L421.9,312.9Z M339.6,273.6L340.3,273.7L340.4,278.2L340.9,280.5L339.0,283.5L339.2,283.9L344.6,283.6L344.7,284.8L348.9,280.7L349.2,279.3L354.8,277.3L359.7,277.0L354.6,273.5L351.3,270.2L351.3,269.1L347.5,270.0L343.8,269.9L339.5,273.4L339.6,273.6Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M355.3,166.8L354.2,167.0L349.6,171.1L350.1,175.9L347.3,175.0L342.4,176.7L340.5,175.0L338.0,176.3L329.9,177.1L328.9,175.9L316.3,176.3L308.2,181.4L308.1,181.5L308.6,182.1L312.0,187.3L311.8,191.9L310.3,192.5L304.9,200.7L306.5,205.9L304.7,206.0L304.5,206.0L304.4,206.4L303.7,208.1L303.5,209.4L302.5,211.2L302.6,212.8L303.2,212.7L304.1,214.1L305.3,214.5L307.7,216.6L307.9,216.7L308.1,216.5L312.7,215.6L318.3,215.3L321.3,217.2L322.9,215.9L329.1,213.2L331.3,210.3L331.6,210.2L331.6,209.8L339.0,207.3L343.6,209.6L348.1,210.0L350.6,215.4L351.9,216.0L353.1,219.2L355.5,220.3L355.1,223.8L351.6,225.1L349.5,230.8L347.0,235.0L346.7,235.3L347.6,236.2L348.6,236.6L352.5,235.5L357.1,235.2L357.1,234.3L356.0,230.4L359.3,228.6L361.4,224.1L361.7,221.2L368.5,218.6L366.5,213.4L370.3,218.7L366.7,220.0L369.9,220.5L370.4,222.1L373.7,223.0L378.2,220.9L381.8,222.3L375.5,229.5L383.1,230.6L383.8,235.9L388.2,236.0L390.1,232.5L394.0,230.5L396.4,226.6L401.9,225.5L400.2,222.0L395.8,224.8L391.3,222.2L390.7,214.8L394.0,211.9L399.9,209.2L403.6,204.3L407.6,202.9L407.7,202.7L406.8,198.2L409.2,194.4L414.7,187.9L411.7,184.9L410.7,181.7L412.3,179.0L411.3,175.8L409.4,176.2L398.9,174.9L398.0,176.6L387.8,176.2L385.2,175.7L382.8,177.1L373.4,170.8L371.8,171.1L371.3,165.8L366.0,161.5L358.4,164.3L357.5,166.8L355.4,166.8L355.3,166.8Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M426.8,347.0L423.3,347.3L423.1,350.4L424.6,353.2L424.5,358.1L428.2,355.8L428.6,355.7L428.5,354.9L428.8,352.8L428.1,350.8L427.9,348.3L427.4,346.9L426.8,347.0Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/IRQ.svg b/plugins/UserCountryMap/svg/IRQ.svg
index c6617a68f5..deeeb41b72 100644
--- a/plugins/UserCountryMap/svg/IRQ.svg
+++ b/plugins/UserCountryMap/svg/IRQ.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="37.0341222191" lon0="43.0157152588"/><bbox h="114.27" w="115.44" x="950.1" y="989.6"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M238,0L245,5L245,14L248,16L250,23L250,23L250,24L253,34L256,38L257,45L267,60L269,60L273,62L275,65L287,65L290,66L284,70L283,72L283,78L286,81L287,85L287,87L281,91L275,98L274,106L271,106L269,111L272,115L272,119L270,123L270,127L278,137L280,136L282,140L289,149L288,153L288,157L301,161L316,172L321,172L325,176L328,182L337,193L333,206L334,219L343,219L344,236L354,243L356,249L359,251L361,251L363,249L370,245L369,237L372,235L371,233L375,233L378,235L373,239L384,244L388,247L399,241L402,241L405,250L412,257L416,261L419,265L420,271L421,273L427,276L427,282L431,284L433,286L434,293L438,299L450,299L450,26L442,29L431,30L414,28L409,26L398,20L393,16L387,8L383,7L367,6L362,4L358,0L238,0Z " data-iso="IRN"/><path d="M249,23L244,23L237,29L236,29L234,19L230,18L226,21L217,20L207,16L203,18L198,17L195,20L190,24L188,25L188,25L187,26L178,37L173,41L163,44L161,45L159,54L158,58L161,69L161,72L157,83L156,99L151,111L149,112L143,114L98,139L90,143L92,150L97,172L95,172L96,178L102,176L103,180L99,184L105,185L132,191L135,192L165,211L178,219L192,231L216,251L252,280L253,280L299,283L304,282L308,276L314,267L318,258L320,252L325,249L330,248L337,249L344,251L344,250L348,249L354,252L357,252L359,251L356,249L354,243L344,236L343,219L334,219L333,206L337,193L328,182L325,176L321,172L316,172L301,161L288,157L288,153L289,149L282,140L280,136L278,137L270,127L270,123L272,119L272,115L269,111L271,106L274,106L275,98L281,91L287,87L287,85L286,81L283,78L283,72L284,70L290,66L287,65L275,65L273,62L269,60L267,60L257,45L256,38L253,34L250,24L250,23L249,23Z " data-iso="IRQ"/><path d="M1,169L2,162L3,160L7,159L8,159L9,157L12,152L11,147L12,146L12,138L12,136L11,137L3,142L1,146L0,146L0,169L1,169Z " data-iso="ISR"/><path d="M99,184L103,180L102,176L96,178L95,172L97,172L92,150L90,143L83,147L70,154L35,174L23,171L20,167L15,166L11,160L8,159L7,159L3,160L2,162L1,169L1,174L0,179L0,179L0,272L8,273L21,264L28,254L29,253L49,250L64,235L38,201L45,199L94,187L99,184Z " data-iso="JOR"/><path d="M352,262L354,257L351,252L349,252L347,257L349,261L352,262Z M344,251L337,249L330,248L325,249L320,252L318,258L314,267L308,276L304,282L309,282L330,284L332,289L334,295L337,298L359,297L357,294L353,286L351,283L347,271L345,271L341,271L337,271L344,263L349,264L348,263L343,252L344,251Z " data-iso="KWT"/><path d="M12,136L13,135L15,133L15,129L19,124L26,124L24,122L33,112L31,105L29,98L26,97L18,98L18,101L13,104L8,110L7,117L4,121L0,129L0,146L1,146L3,142L11,137L12,136Z " data-iso="LBN"/><path d="M359,297L337,298L334,295L332,289L330,284L309,282L304,282L299,283L253,280L252,280L216,251L192,231L178,219L165,211L135,192L132,191L105,185L99,184L94,187L45,199L38,201L64,235L49,250L29,253L28,254L21,264L8,273L0,272L0,299L360,299L359,297Z " data-iso="SAU"/><path d="M186,21L180,22L172,24L166,25L155,25L152,24L145,24L138,27L127,33L110,37L103,37L93,35L86,30L80,28L73,31L60,36L51,35L48,31L40,29L40,30L36,40L39,48L33,48L32,49L31,54L27,56L25,60L19,56L17,58L14,67L18,72L18,79L16,84L16,91L18,98L26,97L29,98L31,105L33,112L24,122L26,124L19,124L15,129L15,133L13,135L12,136L12,138L12,146L11,147L12,152L9,157L8,159L11,160L15,166L20,167L23,171L35,174L70,154L83,147L90,143L98,139L143,114L149,112L151,111L156,99L157,83L161,72L161,69L158,58L159,54L161,45L163,44L173,41L178,37L187,26L188,25L188,25L186,21Z " data-iso="SYR"/><path d="M19,56L25,60L27,56L31,54L32,49L33,48L39,48L36,40L40,30L40,29L48,31L51,35L60,36L73,31L80,28L86,30L93,35L103,37L110,37L127,33L138,27L145,24L152,24L155,25L166,25L172,24L180,22L186,21L188,25L190,24L195,20L198,17L203,18L207,16L217,20L226,21L230,18L234,19L236,29L237,29L244,23L249,23L250,23L250,23L248,16L245,14L245,5L238,0L0,0L0,31L7,34L11,34L14,30L25,25L27,27L28,33L19,41L17,44L20,54L19,56Z " data-iso="TUR"/><path d="M1,169L0,169L0,179L0,179L1,174L1,169Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M188,26L189,28L191,29L194,35L196,35L200,38L204,36L209,35L212,30L216,32L222,33L221,29L221,27L225,28L225,28L226,27L231,23L232,21L232,18L231,18L227,21L216,20L208,16L197,17L194,22L188,26L188,26Z " data-fips="IZ08" data-fips-="" data-iso3="IRQ" data-name="Dihok"/><path d="M247,64L244,65L241,65L232,68L229,66L224,70L224,75L220,76L219,78L215,79L214,78L213,78L211,79L214,82L215,85L214,85L217,89L228,96L234,98L239,102L241,96L245,92L245,88L245,88L247,87L250,84L250,80L251,79L248,67L247,64L247,64Z " data-fips="IZ13" data-fips-="" data-iso3="IRQ" data-name="At-Ta'mim"/><path d="M232,18L232,21L231,23L226,27L225,28L227,29L234,33L236,34L238,37L234,41L226,44L226,45L218,57L217,59L213,62L214,63L212,69L213,70L213,70L214,76L214,78L214,78L215,79L219,78L220,76L224,75L224,70L229,66L232,68L241,65L244,65L247,64L247,64L247,64L250,64L256,64L250,59L246,55L248,54L246,52L244,48L247,46L248,46L256,43L256,43L257,38L256,36L251,34L253,31L253,28L251,27L250,23L246,22L238,28L238,29L235,26L236,21L232,18L232,18Z " data-fips="IZ11" data-fips-="" data-iso3="IRQ" data-name="Arbil"/><path d="M187,27L174,40L173,41L162,44L159,50L158,59L161,65L161,71L160,75L156,87L156,87L160,88L167,89L179,94L183,94L185,94L191,94L191,91L194,90L205,90L205,88L201,79L202,77L205,75L213,70L213,70L212,69L214,63L213,62L217,59L218,57L226,45L226,44L234,41L238,37L236,34L234,33L227,29L225,28L225,28L221,27L221,29L222,33L216,32L212,30L209,35L204,36L200,38L196,35L194,35L191,29L189,28L188,26L187,27Z " data-fips="IZ15" data-fips-="" data-iso3="IRQ" data-name="Ninawa"/><path d="M214,78L214,76L213,70L213,70L213,70L205,75L202,77L201,79L205,88L205,90L194,90L191,91L191,94L191,94L191,101L192,106L199,111L202,109L203,115L206,123L208,125L216,133L233,138L234,142L236,143L238,143L239,141L242,139L242,130L243,127L239,125L240,121L244,116L244,114L244,106L246,107L249,106L250,104L255,98L256,97L256,94L256,93L252,91L248,91L245,88L245,88L245,92L241,96L239,102L234,98L228,96L217,89L214,85L215,85L214,82L211,79L213,78L214,78L214,78Z " data-fips="IZ18" data-fips-="" data-iso3="IRQ" data-name="Sala ad-Din"/><path d="M240,179L238,180L236,180L223,184L226,187L225,190L221,192L217,193L211,201L210,205L205,220L198,236L200,238L200,238L227,260L234,249L239,234L241,230L247,225L250,220L252,208L246,206L243,203L247,201L246,195L245,191L248,186L249,184L247,184L245,182L242,185L240,183L241,180L240,178L240,179Z " data-fips="IZ17" data-fips-="" data-iso3="IRQ" data-name="An-Najaf"/><path d="M230,163L223,164L211,171L211,173L217,180L222,183L223,184L236,180L238,180L240,179L240,178L240,178L237,170L238,165L236,164L235,164L230,163Z " data-fips="IZ12" data-fips-="IZ06" data-iso3="IRQ" data-name="Karbala'"/><path d="M239,145L239,145L239,145L237,148L237,149L239,151L239,151L239,151L240,151L240,151L245,151L245,150L246,146L244,145L240,143L240,145L239,145Z " data-fips="IZ07" data-fips-="" data-iso3="IRQ" data-name="Baghdad"/><path d="M333,211L320,212L318,213L318,215L319,218L319,225L318,230L318,233L313,233L304,236L304,238L305,243L308,246L309,249L307,262L307,270L305,273L305,281L309,276L315,264L317,259L322,251L326,249L335,248L350,250L356,252L359,252L357,250L355,243L349,240L347,236L344,236L343,219L334,219L333,211Z " data-fips="IZ02" data-fips-="" data-iso3="IRQ" data-name="Al-Basrah"/><path d="M252,208L250,220L247,225L241,230L239,234L234,249L227,260L252,280L253,280L299,283L304,282L305,281L305,273L307,270L307,262L309,249L308,246L305,243L304,238L304,236L303,236L298,229L293,228L280,226L279,222L280,218L281,218L280,214L282,210L281,205L282,201L281,200L281,200L265,198L260,200L262,202L259,210L259,213L257,212L252,208Z " data-fips="IZ03" data-fips-="" data-iso3="IRQ" data-name="Al-Muthannia"/><path d="M264,176L259,180L254,182L252,185L250,184L249,184L248,186L245,191L246,195L247,201L243,203L246,206L252,208L257,212L259,213L259,210L262,202L260,200L265,198L281,200L281,200L280,196L279,192L279,192L279,191L279,190L277,187L278,187L274,185L270,181L269,178L266,177L264,176L264,176Z " data-fips="IZ04" data-fips-="" data-iso3="IRQ" data-name="Al-Qadisiyah"/><path d="M313,215L309,215L307,212L306,209L304,207L303,203L299,198L296,189L295,188L288,188L286,189L286,189L282,190L279,190L279,191L279,192L279,192L280,196L281,200L282,201L281,205L282,210L280,214L281,218L280,218L279,222L280,226L293,228L298,229L303,236L304,236L313,233L318,233L318,230L319,225L319,218L318,215L313,215Z " data-fips="IZ09" data-fips-="" data-iso3="IRQ" data-name="Dhi-Qar"/><path d="M302,161L300,163L298,174L303,184L302,188L298,188L295,188L296,189L299,198L303,203L304,207L306,209L307,212L309,215L313,215L318,215L318,213L320,212L333,211L333,206L337,194L332,186L327,182L324,174L320,172L317,173L315,171L302,161L302,161Z " data-fips="IZ14" data-fips-="" data-iso3="IRQ" data-name="Maysan"/><path d="M284,140L283,143L277,147L275,150L271,154L261,152L254,151L246,157L246,157L245,157L247,163L250,163L257,166L260,173L264,176L264,176L266,177L269,178L270,181L274,185L278,187L277,187L279,190L282,190L286,189L286,189L288,188L295,188L298,188L302,188L303,184L298,174L300,163L302,161L299,160L293,157L288,158L287,152L288,152L290,150L290,148L286,144L284,140L284,140Z " data-fips="IZ16" data-fips-="" data-iso3="IRQ" data-name="Wasit"/><path d="M256,43L248,46L247,46L244,48L246,52L248,54L246,55L250,59L256,64L250,64L247,64L247,64L248,67L251,79L250,80L250,84L247,87L245,88L248,91L252,91L256,93L256,94L256,97L258,98L262,100L262,107L264,107L269,103L271,97L273,95L276,88L278,91L278,95L278,95L280,93L281,90L287,88L287,84L286,81L282,77L283,70L289,68L291,66L290,65L287,66L285,64L278,66L276,66L271,61L268,59L265,61L265,56L263,51L264,51L262,46L258,47L256,43L256,43Z " data-fips="IZ05" data-fips-="" data-iso3="IRQ" data-name="As-Sulaymaniyah"/><path d="M256,97L255,98L250,104L249,106L246,107L244,106L244,114L244,116L240,121L239,125L243,127L242,130L242,139L239,141L238,143L239,145L239,145L240,145L240,143L244,145L246,146L245,150L245,152L245,153L246,155L246,156L246,157L246,157L254,151L261,152L271,154L275,150L277,147L283,143L284,140L284,140L281,140L280,136L277,136L273,131L271,126L268,125L272,120L270,109L271,106L275,102L274,102L278,95L278,95L278,91L276,88L273,95L271,97L269,103L264,107L262,107L262,100L258,98L256,97Z " data-fips="IZ10" data-fips-="" data-iso3="IRQ" data-name="Diyala"/><path d="M156,93L149,112L143,114L90,143L97,172L95,172L102,178L103,180L99,184L132,191L178,219L190,229L198,236L205,220L210,205L211,201L217,193L221,192L225,190L226,187L223,184L222,183L217,180L211,173L211,171L223,164L230,163L235,164L235,161L233,159L232,154L226,152L231,151L238,152L239,151L239,151L237,149L237,148L239,145L239,145L239,145L239,145L238,143L236,143L234,142L233,138L216,133L208,125L206,123L203,115L202,109L199,111L192,106L191,101L191,94L191,94L185,94L183,94L179,94L167,89L160,88L156,87L156,93Z " data-fips="IZ01" data-fips-="" data-iso3="IRQ" data-name="Al-Anbar"/><path d="M238,152L231,151L226,152L232,154L233,159L235,161L235,164L236,164L238,165L237,170L240,178L240,178L241,180L240,183L242,185L245,182L247,184L249,184L250,184L252,185L254,182L259,180L264,176L264,176L264,176L260,173L257,166L250,163L247,163L245,157L246,157L246,156L246,155L245,153L245,152L245,151L240,151L240,151L239,151L239,151L238,152Z " data-fips="IZ06" data-fips-="" data-iso3="IRQ" data-name="Babil"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="37.0341222191" lon0="43.0157152588"/><bbox h="114.27" w="115.44" x="950.1" y="989.6"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M238,0L245,5L245,14L248,16L250,23L250,23L250,24L253,34L256,38L257,45L267,60L269,60L273,62L275,65L287,65L290,66L284,70L283,72L283,78L286,81L287,85L287,87L281,91L275,98L274,106L271,106L269,111L272,115L272,119L270,123L270,127L278,137L280,136L282,140L289,149L288,153L288,157L301,161L316,172L321,172L325,176L328,182L337,193L333,206L334,219L343,219L344,236L354,243L356,249L359,251L361,251L363,249L370,245L369,237L372,235L371,233L375,233L378,235L373,239L384,244L388,247L399,241L402,241L405,250L412,257L416,261L419,265L420,271L421,273L427,276L427,282L431,284L433,286L434,293L438,299L450,299L450,26L442,29L431,30L414,28L409,26L398,20L393,16L387,8L383,7L367,6L362,4L358,0L238,0Z " data-iso="IRN"/><path d="M249,23L244,23L237,29L236,29L234,19L230,18L226,21L217,20L207,16L203,18L198,17L195,20L190,24L188,25L188,25L187,26L178,37L173,41L163,44L161,45L159,54L158,58L161,69L161,72L157,83L156,99L151,111L149,112L143,114L98,139L90,143L92,150L97,172L95,172L96,178L102,176L103,180L99,184L105,185L132,191L135,192L165,211L178,219L192,231L216,251L252,280L253,280L299,283L304,282L308,276L314,267L318,258L320,252L325,249L330,248L337,249L344,251L344,250L348,249L354,252L357,252L359,251L356,249L354,243L344,236L343,219L334,219L333,206L337,193L328,182L325,176L321,172L316,172L301,161L288,157L288,153L289,149L282,140L280,136L278,137L270,127L270,123L272,119L272,115L269,111L271,106L274,106L275,98L281,91L287,87L287,85L286,81L283,78L283,72L284,70L290,66L287,65L275,65L273,62L269,60L267,60L257,45L256,38L253,34L250,24L250,23L249,23Z " data-iso="IRQ"/><path d="M1,169L2,162L3,160L7,159L8,159L9,157L12,152L11,147L12,146L12,138L12,136L11,137L3,142L1,146L0,146L0,169L1,169Z " data-iso="ISR"/><path d="M99,184L103,180L102,176L96,178L95,172L97,172L92,150L90,143L83,147L70,154L35,174L23,171L20,167L15,166L11,160L8,159L7,159L3,160L2,162L1,169L1,174L0,179L0,179L0,272L8,273L21,264L28,254L29,253L49,250L64,235L38,201L45,199L94,187L99,184Z " data-iso="JOR"/><path d="M352,262L354,257L351,252L349,252L347,257L349,261L352,262Z M344,251L337,249L330,248L325,249L320,252L318,258L314,267L308,276L304,282L309,282L330,284L332,289L334,295L337,298L359,297L357,294L353,286L351,283L347,271L345,271L341,271L337,271L344,263L349,264L348,263L343,252L344,251Z " data-iso="KWT"/><path d="M12,136L13,135L15,133L15,129L19,124L26,124L24,122L33,112L31,105L29,98L26,97L18,98L18,101L13,104L8,110L7,117L4,121L0,129L0,146L1,146L3,142L11,137L12,136Z " data-iso="LBN"/><path d="M359,297L337,298L334,295L332,289L330,284L309,282L304,282L299,283L253,280L252,280L216,251L192,231L178,219L165,211L135,192L132,191L105,185L99,184L94,187L45,199L38,201L64,235L49,250L29,253L28,254L21,264L8,273L0,272L0,299L360,299L359,297Z " data-iso="SAU"/><path d="M186,21L180,22L172,24L166,25L155,25L152,24L145,24L138,27L127,33L110,37L103,37L93,35L86,30L80,28L73,31L60,36L51,35L48,31L40,29L40,30L36,40L39,48L33,48L32,49L31,54L27,56L25,60L19,56L17,58L14,67L18,72L18,79L16,84L16,91L18,98L26,97L29,98L31,105L33,112L24,122L26,124L19,124L15,129L15,133L13,135L12,136L12,138L12,146L11,147L12,152L9,157L8,159L11,160L15,166L20,167L23,171L35,174L70,154L83,147L90,143L98,139L143,114L149,112L151,111L156,99L157,83L161,72L161,69L158,58L159,54L161,45L163,44L173,41L178,37L187,26L188,25L188,25L186,21Z " data-iso="SYR"/><path d="M19,56L25,60L27,56L31,54L32,49L33,48L39,48L36,40L40,30L40,29L48,31L51,35L60,36L73,31L80,28L86,30L93,35L103,37L110,37L127,33L138,27L145,24L152,24L155,25L166,25L172,24L180,22L186,21L188,25L190,24L195,20L198,17L203,18L207,16L217,20L226,21L230,18L234,19L236,29L237,29L244,23L249,23L250,23L250,23L248,16L245,14L245,5L238,0L0,0L0,31L7,34L11,34L14,30L25,25L27,27L28,33L19,41L17,44L20,54L19,56Z " data-iso="TUR"/><path d="M1,169L0,169L0,179L0,179L1,174L1,169Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M188,26L189,28L191,29L194,35L196,35L200,38L204,36L209,35L212,30L216,32L222,33L221,29L221,27L225,28L225,28L226,27L231,23L232,21L232,18L231,18L227,21L216,20L208,16L197,17L194,22L188,26L188,26Z " data-fips="IZ08" data-fips-="" data-iso3="IRQ" data-name="Dihok"/><path d="M247,64L244,65L241,65L232,68L229,66L224,70L224,75L220,76L219,78L215,79L214,78L213,78L211,79L214,82L215,85L214,85L217,89L228,96L234,98L239,102L241,96L245,92L245,88L245,88L247,87L250,84L250,80L251,79L248,67L247,64L247,64Z " data-fips="IZ13" data-fips-="" data-iso3="IRQ" data-name="At-Ta'mim"/><path d="M232,18L232,21L231,23L226,27L225,28L227,29L234,33L236,34L238,37L234,41L226,44L226,45L218,57L217,59L213,62L214,63L212,69L213,70L213,70L214,76L214,78L214,78L215,79L219,78L220,76L224,75L224,70L229,66L232,68L241,65L244,65L247,64L247,64L247,64L250,64L256,64L250,59L246,55L248,54L246,52L244,48L247,46L248,46L256,43L256,43L257,38L256,36L251,34L253,31L253,28L251,27L250,23L246,22L238,28L238,29L235,26L236,21L232,18L232,18Z " data-fips="IZ11" data-fips-="" data-iso3="IRQ" data-name="Arbil"/><path d="M187,27L174,40L173,41L162,44L159,50L158,59L161,65L161,71L160,75L156,87L156,87L160,88L167,89L179,94L183,94L185,94L191,94L191,91L194,90L205,90L205,88L201,79L202,77L205,75L213,70L213,70L212,69L214,63L213,62L217,59L218,57L226,45L226,44L234,41L238,37L236,34L234,33L227,29L225,28L225,28L221,27L221,29L222,33L216,32L212,30L209,35L204,36L200,38L196,35L194,35L191,29L189,28L188,26L187,27Z " data-fips="IZ15" data-fips-="" data-iso3="IRQ" data-name="Ninawa"/><path d="M214,78L214,76L213,70L213,70L213,70L205,75L202,77L201,79L205,88L205,90L194,90L191,91L191,94L191,94L191,101L192,106L199,111L202,109L203,115L206,123L208,125L216,133L233,138L234,142L236,143L238,143L239,141L242,139L242,130L243,127L239,125L240,121L244,116L244,114L244,106L246,107L249,106L250,104L255,98L256,97L256,94L256,93L252,91L248,91L245,88L245,88L245,92L241,96L239,102L234,98L228,96L217,89L214,85L215,85L214,82L211,79L213,78L214,78L214,78Z " data-fips="IZ18" data-fips-="" data-iso3="IRQ" data-name="Sala ad-Din"/><path d="M240,179L238,180L236,180L223,184L226,187L225,190L221,192L217,193L211,201L210,205L205,220L198,236L200,238L200,238L227,260L234,249L239,234L241,230L247,225L250,220L252,208L246,206L243,203L247,201L246,195L245,191L248,186L249,184L247,184L245,182L242,185L240,183L241,180L240,178L240,179Z " data-fips="IZ17" data-fips-="" data-iso3="IRQ" data-name="An-Najaf"/><path d="M230,163L223,164L211,171L211,173L217,180L222,183L223,184L236,180L238,180L240,179L240,178L240,178L237,170L238,165L236,164L235,164L230,163Z " data-fips="IZ12" data-fips-="IZ06" data-iso3="IRQ" data-name="Karbala'"/><path d="M239,145L239,145L239,145L237,148L237,149L239,151L239,151L239,151L240,151L240,151L245,151L245,150L246,146L244,145L240,143L240,145L239,145Z " data-fips="IZ07" data-fips-="" data-iso3="IRQ" data-name="Baghdad"/><path d="M333,211L320,212L318,213L318,215L319,218L319,225L318,230L318,233L313,233L304,236L304,238L305,243L308,246L309,249L307,262L307,270L305,273L305,281L309,276L315,264L317,259L322,251L326,249L335,248L350,250L356,252L359,252L357,250L355,243L349,240L347,236L344,236L343,219L334,219L333,211Z " data-fips="IZ02" data-fips-="" data-iso3="IRQ" data-name="Al-Basrah"/><path d="M252,208L250,220L247,225L241,230L239,234L234,249L227,260L252,280L253,280L299,283L304,282L305,281L305,273L307,270L307,262L309,249L308,246L305,243L304,238L304,236L303,236L298,229L293,228L280,226L279,222L280,218L281,218L280,214L282,210L281,205L282,201L281,200L281,200L265,198L260,200L262,202L259,210L259,213L257,212L252,208Z " data-fips="IZ03" data-fips-="" data-iso3="IRQ" data-name="Al-Muthannia"/><path d="M264,176L259,180L254,182L252,185L250,184L249,184L248,186L245,191L246,195L247,201L243,203L246,206L252,208L257,212L259,213L259,210L262,202L260,200L265,198L281,200L281,200L280,196L279,192L279,192L279,191L279,190L277,187L278,187L274,185L270,181L269,178L266,177L264,176L264,176Z " data-fips="IZ04" data-fips-="" data-iso3="IRQ" data-name="Al-Qadisiyah"/><path d="M313,215L309,215L307,212L306,209L304,207L303,203L299,198L296,189L295,188L288,188L286,189L286,189L282,190L279,190L279,191L279,192L279,192L280,196L281,200L282,201L281,205L282,210L280,214L281,218L280,218L279,222L280,226L293,228L298,229L303,236L304,236L313,233L318,233L318,230L319,225L319,218L318,215L313,215Z " data-fips="IZ09" data-fips-="" data-iso3="IRQ" data-name="Dhi-Qar"/><path d="M302,161L300,163L298,174L303,184L302,188L298,188L295,188L296,189L299,198L303,203L304,207L306,209L307,212L309,215L313,215L318,215L318,213L320,212L333,211L333,206L337,194L332,186L327,182L324,174L320,172L317,173L315,171L302,161L302,161Z " data-fips="IZ14" data-fips-="" data-iso3="IRQ" data-name="Maysan"/><path d="M284,140L283,143L277,147L275,150L271,154L261,152L254,151L246,157L246,157L245,157L247,163L250,163L257,166L260,173L264,176L264,176L266,177L269,178L270,181L274,185L278,187L277,187L279,190L282,190L286,189L286,189L288,188L295,188L298,188L302,188L303,184L298,174L300,163L302,161L299,160L293,157L288,158L287,152L288,152L290,150L290,148L286,144L284,140L284,140Z " data-fips="IZ16" data-fips-="" data-iso3="IRQ" data-name="Wasit"/><path d="M256,43L248,46L247,46L244,48L246,52L248,54L246,55L250,59L256,64L250,64L247,64L247,64L248,67L251,79L250,80L250,84L247,87L245,88L248,91L252,91L256,93L256,94L256,97L258,98L262,100L262,107L264,107L269,103L271,97L273,95L276,88L278,91L278,95L278,95L280,93L281,90L287,88L287,84L286,81L282,77L283,70L289,68L291,66L290,65L287,66L285,64L278,66L276,66L271,61L268,59L265,61L265,56L263,51L264,51L262,46L258,47L256,43L256,43Z " data-fips="IZ05" data-fips-="" data-iso3="IRQ" data-name="As-Sulaymaniyah"/><path d="M256,97L255,98L250,104L249,106L246,107L244,106L244,114L244,116L240,121L239,125L243,127L242,130L242,139L239,141L238,143L239,145L239,145L240,145L240,143L244,145L246,146L245,150L245,152L245,153L246,155L246,156L246,157L246,157L254,151L261,152L271,154L275,150L277,147L283,143L284,140L284,140L281,140L280,136L277,136L273,131L271,126L268,125L272,120L270,109L271,106L275,102L274,102L278,95L278,95L278,91L276,88L273,95L271,97L269,103L264,107L262,107L262,100L258,98L256,97Z " data-fips="IZ10" data-fips-="" data-iso3="IRQ" data-name="Diyala"/><path d="M156,93L149,112L143,114L90,143L97,172L95,172L102,178L103,180L99,184L132,191L178,219L190,229L198,236L205,220L210,205L211,201L217,193L221,192L225,190L226,187L223,184L222,183L217,180L211,173L211,171L223,164L230,163L235,164L235,161L233,159L232,154L226,152L231,151L238,152L239,151L239,151L237,149L237,148L239,145L239,145L239,145L239,145L238,143L236,143L234,142L233,138L216,133L208,125L206,123L203,115L202,109L199,111L192,106L191,101L191,94L191,94L185,94L183,94L179,94L167,89L160,88L156,87L156,93Z " data-fips="IZ01" data-fips-="" data-iso3="IRQ" data-name="Al-Anbar"/><path d="M238,152L231,151L226,152L232,154L233,159L235,161L235,164L236,164L238,165L237,170L240,178L240,178L241,180L240,183L242,185L245,182L247,184L249,184L250,184L252,185L254,182L259,180L264,176L264,176L264,176L260,173L257,166L250,163L247,163L245,157L246,157L246,156L246,155L245,153L245,152L245,151L240,151L240,151L239,151L239,151L238,152Z " data-fips="IZ06" data-fips-="" data-iso3="IRQ" data-name="Babil"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/ISR.svg b/plugins/UserCountryMap/svg/ISR.svg
index 509040a5e4..056cf07bfb 100644
--- a/plugins/UserCountryMap/svg/ISR.svg
+++ b/plugins/UserCountryMap/svg/ISR.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 563" height="563px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 563" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="563.5" padding="0.06" w="450"><proj id="laea" lat0="30.6838638372" lon0="34.8541779513"/><bbox h="50.44" w="19.16" x="992.57" y="965.33"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M207,552L203,540L193,506L187,482L178,454L163,419L161,410L158,398L148,366L139,343L129,314L126,302L124,298L121,301L89,317L61,324L27,323L6,330L0,321L0,562L198,562L200,558L207,552Z " data-iso="EGY"/><path d="M142,302L142,293L163,270L162,268L157,262L146,276L124,298L126,302L129,314L142,302Z " data-iso="GAZ"/><path d="M310,97L317,86L323,74L319,68L318,62L318,55L322,49L320,41L316,33L314,29L314,22L315,16L317,8L314,10L308,17L302,22L290,30L287,34L284,30L279,33L275,51L265,57L253,57L244,55L230,56L227,72L219,92L209,121L195,178L181,220L158,261L157,262L162,268L163,270L142,293L142,302L129,314L139,343L148,366L158,398L161,410L163,419L178,454L187,482L193,506L203,540L207,552L215,541L221,509L225,494L226,483L235,460L234,453L236,427L235,422L239,408L246,387L253,370L256,362L263,345L270,324L265,311L268,298L268,298L271,277L266,276L251,284L230,292L207,294L204,292L203,288L210,269L212,260L222,250L236,242L242,239L241,236L233,230L224,227L216,230L213,229L213,227L215,224L217,217L216,206L215,193L213,183L218,167L219,159L225,142L240,132L253,135L260,135L263,137L265,143L274,150L282,151L284,120L284,117L289,111L303,105L309,104L310,97Z " data-iso="ISR"/><path d="M450,145L429,160L390,154L377,151L367,141L359,136L341,131L329,113L321,107L309,104L303,105L289,111L284,117L284,120L282,151L284,172L280,191L280,207L283,237L276,250L273,265L271,277L268,298L268,298L265,311L270,324L263,345L256,362L253,370L246,387L239,408L235,422L236,427L234,453L235,460L226,483L225,494L221,509L215,541L216,551L214,562L379,562L395,548L421,501L427,496L450,491L450,275L448,273L450,272L450,145Z " data-iso="JOR"/><path d="M230,56L244,55L253,57L265,57L275,51L279,33L284,30L287,34L290,30L302,22L308,17L314,10L317,8L323,3L323,0L255,0L247,14L241,32L236,46L230,56Z " data-iso="LBN"/><path d="M450,562L450,491L427,496L421,501L395,548L379,562L450,562Z M450,272L448,273L450,275L450,272Z " data-iso="SAU"/><path d="M317,8L315,16L314,22L314,29L316,33L320,41L322,49L318,55L318,62L319,68L323,74L317,86L310,97L309,104L321,107L329,113L341,131L359,136L367,141L377,151L390,154L429,160L450,145L450,0L323,0L323,3L317,8Z " data-iso="SYR"/><path d="M274,150L265,143L263,137L260,135L253,135L240,132L225,142L219,159L218,167L213,183L215,193L216,206L217,217L215,224L213,227L213,229L216,230L224,227L233,230L241,236L242,239L236,242L222,250L212,260L210,269L203,288L204,292L207,294L230,292L251,284L266,276L271,277L273,265L276,250L283,237L280,207L280,191L284,172L282,151L274,150Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M172,237L172,238L161,256L158,260L157,262L161,265L163,268L163,271L157,276L144,288L141,293L142,300L142,303L138,307L132,312L139,343L157,390L159,401L160,407L160,409L163,414L162,420L163,425L169,431L171,433L186,477L188,488L197,515L200,530L200,539L201,542L204,548L206,550L208,550L212,544L214,534L217,528L218,520L219,517L224,502L225,499L225,490L226,486L229,475L234,468L236,463L236,459L233,450L233,446L234,444L235,437L237,432L235,421L237,415L237,412L242,395L249,381L251,373L256,367L256,358L258,354L262,350L264,347L263,343L264,339L270,328L270,324L269,320L265,311L265,307L268,301L268,298L267,297L269,293L271,287L272,284L264,275L257,279L244,290L237,293L223,293L216,294L210,295L206,295L204,293L202,288L204,283L209,275L211,263L213,259L203,251L203,240L201,238L198,234L194,237L193,237L190,232L185,232L183,235L180,235L182,231L180,229L184,228L184,224L183,222L179,223L172,237Z " data-fips="IS01" data-fips-="" data-iso3="ISR" data-name="HaDarom"/><path d="M226,86L221,92L213,91L212,93L211,106L209,117L207,127L207,128L203,146L203,149L210,149L216,149L219,152L222,153L223,146L225,142L242,131L242,131L236,128L232,132L231,132L225,131L221,122L224,121L222,118L230,113L230,109L233,109L234,105L234,103L236,99L234,90L230,88L230,85L227,82L226,86Z " data-fips="IS04" data-fips-="" data-iso3="ISR" data-name="Haifa"/><path d="M199,167L195,179L202,183L202,187L200,194L202,196L204,202L196,205L189,205L187,203L184,212L182,215L179,223L183,222L184,224L184,228L180,229L182,231L180,235L183,235L185,232L190,232L193,237L194,237L198,234L205,232L207,231L210,228L212,227L213,225L219,222L217,218L215,212L216,200L214,187L212,181L213,177L218,173L219,168L218,167L217,161L218,159L220,158L221,155L222,153L219,152L216,149L210,149L203,149L199,167Z " data-fips="IS02" data-fips-="" data-iso3="ISR" data-name="HaMerkaz"/><path d="M227,82L230,85L230,88L234,90L236,99L234,103L234,105L233,109L230,109L230,113L222,118L224,121L221,122L225,131L231,132L232,132L236,128L242,131L244,131L247,134L249,135L256,135L260,135L263,137L264,140L265,148L268,149L283,152L282,145L283,144L285,137L283,134L283,129L285,128L284,126L284,120L283,117L289,111L285,106L285,106L287,106L287,106L291,102L291,100L291,100L291,99L291,99L292,99L292,99L291,85L287,82L287,78L285,68L284,66L290,58L291,51L292,43L292,34L290,34L289,34L289,34L289,34L288,35L288,35L285,33L282,29L281,29L278,34L278,37L277,44L273,56L269,56L264,58L258,60L250,54L239,56L230,56L228,58L229,61L227,68L226,76L225,78L227,81L227,82Z " data-fips="IS03" data-fips-="" data-iso3="ISR" data-name="HaZafon"/><path d="M190,196L188,197L188,200L187,203L189,205L196,205L204,202L202,196L200,194L202,187L202,183L195,179L190,196Z " data-fips="IS05" data-fips-="" data-iso3="ISR" data-name="Tel Aviv"/><path d="M213,258L215,256L224,249L233,242L240,240L242,240L241,233L239,232L231,230L225,227L222,227L220,230L217,231L213,230L212,228L212,227L210,228L207,231L205,232L198,234L201,238L203,240L203,251L213,259L213,258Z " data-fips="IS06" data-fips-="" data-iso3="ISR" data-name="Jerusalem"/><path d="M288,35L288,35L289,34L289,34L289,34L292,34L292,38L292,43L291,51L290,58L284,66L285,68L287,78L287,82L291,85L292,99L292,99L291,99L291,99L291,100L291,100L291,102L287,106L287,106L285,106L285,106L285,108L289,111L291,112L297,107L303,103L305,102L308,98L314,91L315,87L315,86L316,82L320,75L317,70L315,56L316,54L311,52L314,45L313,41L311,40L310,33L306,30L310,24L305,21L311,18L311,15L310,14L306,20L300,23L294,28L287,31L288,35L288,35Z " data-fips="" data-fips-="" data-iso3="ISR" data-name="Golan"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="563.5" padding="0.06" w="450"><proj id="laea" lat0="30.6838638372" lon0="34.8541779513"/><bbox h="50.44" w="19.16" x="992.57" y="965.33"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M207,552L203,540L193,506L187,482L178,454L163,419L161,410L158,398L148,366L139,343L129,314L126,302L124,298L121,301L89,317L61,324L27,323L6,330L0,321L0,562L198,562L200,558L207,552Z " data-iso="EGY"/><path d="M142,302L142,293L163,270L162,268L157,262L146,276L124,298L126,302L129,314L142,302Z " data-iso="PSE"/><path d="M310,97L317,86L323,74L319,68L318,62L318,55L322,49L320,41L316,33L314,29L314,22L315,16L317,8L314,10L308,17L302,22L290,30L287,34L284,30L279,33L275,51L265,57L253,57L244,55L230,56L227,72L219,92L209,121L195,178L181,220L158,261L157,262L162,268L163,270L142,293L142,302L129,314L139,343L148,366L158,398L161,410L163,419L178,454L187,482L193,506L203,540L207,552L215,541L221,509L225,494L226,483L235,460L234,453L236,427L235,422L239,408L246,387L253,370L256,362L263,345L270,324L265,311L268,298L268,298L271,277L266,276L251,284L230,292L207,294L204,292L203,288L210,269L212,260L222,250L236,242L242,239L241,236L233,230L224,227L216,230L213,229L213,227L215,224L217,217L216,206L215,193L213,183L218,167L219,159L225,142L240,132L253,135L260,135L263,137L265,143L274,150L282,151L284,120L284,117L289,111L303,105L309,104L310,97Z " data-iso="ISR"/><path d="M450,145L429,160L390,154L377,151L367,141L359,136L341,131L329,113L321,107L309,104L303,105L289,111L284,117L284,120L282,151L284,172L280,191L280,207L283,237L276,250L273,265L271,277L268,298L268,298L265,311L270,324L263,345L256,362L253,370L246,387L239,408L235,422L236,427L234,453L235,460L226,483L225,494L221,509L215,541L216,551L214,562L379,562L395,548L421,501L427,496L450,491L450,275L448,273L450,272L450,145Z " data-iso="JOR"/><path d="M230,56L244,55L253,57L265,57L275,51L279,33L284,30L287,34L290,30L302,22L308,17L314,10L317,8L323,3L323,0L255,0L247,14L241,32L236,46L230,56Z " data-iso="LBN"/><path d="M450,562L450,491L427,496L421,501L395,548L379,562L450,562Z M450,272L448,273L450,275L450,272Z " data-iso="SAU"/><path d="M317,8L315,16L314,22L314,29L316,33L320,41L322,49L318,55L318,62L319,68L323,74L317,86L310,97L309,104L321,107L329,113L341,131L359,136L367,141L377,151L390,154L429,160L450,145L450,0L323,0L323,3L317,8Z " data-iso="SYR"/><path d="M274,150L265,143L263,137L260,135L253,135L240,132L225,142L219,159L218,167L213,183L215,193L216,206L217,217L215,224L213,227L213,229L216,230L224,227L233,230L241,236L242,239L236,242L222,250L212,260L210,269L203,288L204,292L207,294L230,292L251,284L266,276L271,277L273,265L276,250L283,237L280,207L280,191L284,172L282,151L274,150Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M172,237L172,238L161,256L158,260L157,262L161,265L163,268L163,271L157,276L144,288L141,293L142,300L142,303L138,307L132,312L139,343L157,390L159,401L160,407L160,409L163,414L162,420L163,425L169,431L171,433L186,477L188,488L197,515L200,530L200,539L201,542L204,548L206,550L208,550L212,544L214,534L217,528L218,520L219,517L224,502L225,499L225,490L226,486L229,475L234,468L236,463L236,459L233,450L233,446L234,444L235,437L237,432L235,421L237,415L237,412L242,395L249,381L251,373L256,367L256,358L258,354L262,350L264,347L263,343L264,339L270,328L270,324L269,320L265,311L265,307L268,301L268,298L267,297L269,293L271,287L272,284L264,275L257,279L244,290L237,293L223,293L216,294L210,295L206,295L204,293L202,288L204,283L209,275L211,263L213,259L203,251L203,240L201,238L198,234L194,237L193,237L190,232L185,232L183,235L180,235L182,231L180,229L184,228L184,224L183,222L179,223L172,237Z " data-fips="IS01" data-fips-="" data-iso3="ISR" data-name="HaDarom"/><path d="M226,86L221,92L213,91L212,93L211,106L209,117L207,127L207,128L203,146L203,149L210,149L216,149L219,152L222,153L223,146L225,142L242,131L242,131L236,128L232,132L231,132L225,131L221,122L224,121L222,118L230,113L230,109L233,109L234,105L234,103L236,99L234,90L230,88L230,85L227,82L226,86Z " data-fips="IS04" data-fips-="" data-iso3="ISR" data-name="Haifa"/><path d="M199,167L195,179L202,183L202,187L200,194L202,196L204,202L196,205L189,205L187,203L184,212L182,215L179,223L183,222L184,224L184,228L180,229L182,231L180,235L183,235L185,232L190,232L193,237L194,237L198,234L205,232L207,231L210,228L212,227L213,225L219,222L217,218L215,212L216,200L214,187L212,181L213,177L218,173L219,168L218,167L217,161L218,159L220,158L221,155L222,153L219,152L216,149L210,149L203,149L199,167Z " data-fips="IS02" data-fips-="" data-iso3="ISR" data-name="HaMerkaz"/><path d="M227,82L230,85L230,88L234,90L236,99L234,103L234,105L233,109L230,109L230,113L222,118L224,121L221,122L225,131L231,132L232,132L236,128L242,131L244,131L247,134L249,135L256,135L260,135L263,137L264,140L265,148L268,149L283,152L282,145L283,144L285,137L283,134L283,129L285,128L284,126L284,120L283,117L289,111L285,106L285,106L287,106L287,106L291,102L291,100L291,100L291,99L291,99L292,99L292,99L291,85L287,82L287,78L285,68L284,66L290,58L291,51L292,43L292,34L290,34L289,34L289,34L289,34L288,35L288,35L285,33L282,29L281,29L278,34L278,37L277,44L273,56L269,56L264,58L258,60L250,54L239,56L230,56L228,58L229,61L227,68L226,76L225,78L227,81L227,82Z " data-fips="IS03" data-fips-="" data-iso3="ISR" data-name="HaZafon"/><path d="M190,196L188,197L188,200L187,203L189,205L196,205L204,202L202,196L200,194L202,187L202,183L195,179L190,196Z " data-fips="IS05" data-fips-="" data-iso3="ISR" data-name="Tel Aviv"/><path d="M213,258L215,256L224,249L233,242L240,240L242,240L241,233L239,232L231,230L225,227L222,227L220,230L217,231L213,230L212,228L212,227L210,228L207,231L205,232L198,234L201,238L203,240L203,251L213,259L213,258Z " data-fips="IS06" data-fips-="" data-iso3="ISR" data-name="Jerusalem"/><path d="M288,35L288,35L289,34L289,34L289,34L292,34L292,38L292,43L291,51L290,58L284,66L285,68L287,78L287,82L291,85L292,99L292,99L291,99L291,99L291,100L291,100L291,102L287,106L287,106L285,106L285,106L285,108L289,111L291,112L297,107L303,103L305,102L308,98L314,91L315,87L315,86L316,82L320,75L317,70L315,56L316,54L311,52L314,45L313,41L311,40L310,33L306,30L310,24L305,21L311,18L311,15L310,14L306,20L300,23L294,28L287,31L288,35L288,35Z " data-fips="" data-fips-="" data-iso3="ISR" data-name="Golan"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/JOR.svg b/plugins/UserCountryMap/svg/JOR.svg
index a904f1a00c..1e65f8d83b 100644
--- a/plugins/UserCountryMap/svg/JOR.svg
+++ b/plugins/UserCountryMap/svg/JOR.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="29.9761292589" lon0="35.1987712554"/><bbox h="57.61" w="50.84" x="994.6" y="954.78"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M105,267L103,261L91,221L84,204L82,195L77,180L73,169L69,156L67,150L66,148L65,149L50,157L37,160L21,160L11,163L8,157L0,159L0,289L2,291L6,299L91,299L95,280L102,270L105,267Z " data-iso="EGY"/><path d="M75,150L75,146L84,135L82,132L77,138L66,148L67,150L69,156L75,150Z " data-iso="GAZ"/><path d="M312,14L317,28L330,70L326,71L329,82L340,79L343,85L335,93L347,95L383,100L402,103L408,105L450,128L450,0L334,0L327,5L312,14Z " data-iso="IRQ"/><path d="M154,55L160,44L158,41L157,35L159,32L155,23L156,17L157,13L155,14L144,23L143,26L141,24L139,25L137,33L133,36L122,35L116,36L115,43L111,52L106,66L100,92L93,112L82,131L82,132L84,135L75,146L75,150L69,156L73,169L77,180L82,195L84,204L91,221L103,261L105,267L109,262L114,235L118,224L117,221L118,209L118,206L120,200L123,190L131,170L134,161L133,155L133,148L135,138L133,138L125,142L116,146L105,147L103,144L108,131L112,126L121,121L121,119L117,117L113,115L109,117L110,111L108,95L111,83L114,76L121,71L131,73L132,76L137,79L140,80L141,65L143,61L150,58L153,58L154,55Z " data-iso="ISR"/><path d="M343,85L340,79L329,82L326,71L330,70L317,28L312,14L299,23L275,39L209,84L190,82L185,80L176,73L168,71L162,62L159,59L153,58L150,58L143,61L141,65L140,80L141,90L139,98L139,106L141,120L138,126L136,133L135,138L133,148L133,155L134,161L131,170L123,190L120,200L118,206L118,209L117,221L118,224L114,235L109,262L109,266L107,275L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L217,137L231,133L294,112L327,101L335,93L343,85Z " data-iso="JOR"/><path d="M116,36L122,35L133,36L137,33L139,25L141,24L143,26L144,23L155,14L157,13L159,11L162,7L165,5L162,0L132,0L128,9L124,16L121,24L119,31L116,36Z " data-iso="LBN"/><path d="M335,93L327,101L294,112L231,133L217,137L246,167L275,199L258,209L256,212L248,231L247,232L208,241L205,243L192,265L170,284L167,285L107,275L102,299L450,299L450,128L408,105L402,103L383,100L347,95L335,93Z " data-iso="SAU"/><path d="M157,13L156,17L155,23L159,32L157,35L158,41L160,44L154,55L153,58L159,59L162,62L168,71L176,73L185,80L190,82L209,84L275,39L299,23L312,14L327,5L334,0L162,0L165,5L162,7L159,11L157,13Z " data-iso="SYR"/><path d="M137,79L132,76L131,73L121,71L114,76L111,83L108,95L110,111L109,117L113,115L117,117L121,119L121,121L112,126L108,131L103,144L105,147L116,146L125,142L133,138L135,138L136,133L138,126L141,120L139,106L139,98L141,90L140,80L137,79Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,194L134,194L130,191L129,190L125,187L125,187L121,194L118,206L119,211L118,213L117,219L118,223L115,231L113,243L110,250L109,257L108,261L110,263L108,268L108,274L107,275L151,282L148,261L145,247L140,238L135,236L128,235L127,227L131,220L131,218L131,211L133,203L135,198L135,194Z " data-fips="JO21" data-fips-="" data-iso3="JOR" data-name="Aqaba"/><path d="M169,72L170,77L165,79L166,82L165,83L165,84L162,88L163,91L164,92L165,93L165,95L169,95L177,96L181,98L185,97L193,101L261,123L271,120L326,102L327,101L343,85L342,81L340,79L329,82L330,70L320,38L300,23L275,39L245,60L217,78L209,84L202,84L200,83L190,82L185,80L180,75L175,71L170,72L169,72Z " data-fips="JO15" data-fips-="JO10" data-iso3="JOR" data-name="Mafraq"/><path d="M161,102L160,103L151,110L147,112L146,114L150,115L149,118L149,119L151,119L156,119L156,125L155,126L155,130L158,133L156,142L155,143L156,145L156,150L156,151L157,153L173,153L232,152L217,137L217,137L219,136L204,121L202,121L199,122L194,120L191,116L191,115L194,111L192,109L187,104L173,106L167,108L163,104L161,102Z " data-fips="JO16" data-fips-="JO11" data-iso3="JOR" data-name="Amman"/><path d="M164,181L156,174L147,171L136,170L135,176L133,176L129,174L129,175L128,180L126,182L125,186L125,187L129,190L130,191L134,194L135,194L137,194L147,194L152,194L162,191L167,184L164,181Z " data-fips="JO12" data-fips-="" data-iso3="JOR" data-name="Tafilah"/><path d="M232,152L173,153L174,159L176,163L173,172L167,184L162,191L152,194L147,194L137,194L135,194L135,198L133,203L131,211L131,218L131,220L127,227L128,235L135,236L140,238L145,247L148,261L151,282L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L232,152Z " data-fips="JO19" data-fips-="JO07" data-iso3="JOR" data-name="Ma`an"/><path d="M141,93L141,93L145,93L145,93L144,89L149,82L155,80L156,79L158,82L159,83L161,82L162,82L164,83L165,83L166,82L165,79L170,77L169,72L168,72L165,66L165,63L161,62L159,60L153,58L147,59L145,61L143,61L141,64L142,69L141,72L140,78L140,84L141,90L141,93Z " data-fips="JO18" data-fips-="JO14" data-iso3="JOR" data-name="Irbid"/><path d="M158,82L156,79L155,80L149,82L144,89L145,93L145,93L146,94L147,95L148,95L150,92L156,86L158,84L159,83L158,82Z " data-fips="JO20" data-fips-="JO14" data-iso3="JOR" data-name="Ajlun"/><path d="M164,83L162,82L161,82L159,83L158,84L156,86L150,92L148,95L148,96L154,96L155,96L157,97L159,99L161,96L163,95L164,94L164,94L164,92L163,91L162,88L165,84L165,83L164,83Z " data-fips="JO22" data-fips-="JO14" data-iso3="JOR" data-name="Jarash"/><path d="M141,93L141,93L140,94L139,100L139,104L141,120L139,122L138,125L142,125L145,121L148,120L149,119L149,118L150,115L146,114L147,112L151,110L160,103L161,102L160,101L160,101L160,101L159,100L159,99L157,97L155,96L154,96L148,96L148,95L147,95L146,94L145,93L141,93Z " data-fips="JO02" data-fips-="" data-iso3="JOR" data-name="Balqa"/><path d="M156,142L158,133L155,130L155,126L156,125L156,119L151,119L149,119L148,120L145,121L142,125L138,125L136,128L136,133L135,138L135,141L141,141L148,143L153,142L155,143L156,142Z " data-fips="JO23" data-fips-="JO02" data-iso3="JOR" data-name="Madaba"/><path d="M153,142L148,143L141,141L135,141L135,142L133,148L132,153L134,162L132,168L131,173L129,174L133,176L135,176L136,170L147,171L156,174L164,181L167,184L173,172L176,163L174,159L173,153L157,153L156,151L156,150L156,145L155,143L153,142Z " data-fips="JO09" data-fips-="" data-iso3="JOR" data-name="Karak"/><path d="M164,92L164,94L164,94L163,95L161,96L159,99L159,100L160,101L160,101L160,101L161,102L163,104L167,108L173,106L187,104L192,109L194,111L191,115L191,116L194,120L199,122L202,121L204,121L219,136L261,123L193,101L185,97L181,98L177,96L169,95L165,95L165,93L164,92Z " data-fips="JO13" data-fips-="JO17" data-iso3="JOR" data-name="Zarqa"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="29.9761292589" lon0="35.1987712554"/><bbox h="57.61" w="50.84" x="994.6" y="954.78"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M105,267L103,261L91,221L84,204L82,195L77,180L73,169L69,156L67,150L66,148L65,149L50,157L37,160L21,160L11,163L8,157L0,159L0,289L2,291L6,299L91,299L95,280L102,270L105,267Z " data-iso="EGY"/><path d="M75,150L75,146L84,135L82,132L77,138L66,148L67,150L69,156L75,150Z " data-iso="PSE"/><path d="M312,14L317,28L330,70L326,71L329,82L340,79L343,85L335,93L347,95L383,100L402,103L408,105L450,128L450,0L334,0L327,5L312,14Z " data-iso="IRQ"/><path d="M154,55L160,44L158,41L157,35L159,32L155,23L156,17L157,13L155,14L144,23L143,26L141,24L139,25L137,33L133,36L122,35L116,36L115,43L111,52L106,66L100,92L93,112L82,131L82,132L84,135L75,146L75,150L69,156L73,169L77,180L82,195L84,204L91,221L103,261L105,267L109,262L114,235L118,224L117,221L118,209L118,206L120,200L123,190L131,170L134,161L133,155L133,148L135,138L133,138L125,142L116,146L105,147L103,144L108,131L112,126L121,121L121,119L117,117L113,115L109,117L110,111L108,95L111,83L114,76L121,71L131,73L132,76L137,79L140,80L141,65L143,61L150,58L153,58L154,55Z " data-iso="ISR"/><path d="M343,85L340,79L329,82L326,71L330,70L317,28L312,14L299,23L275,39L209,84L190,82L185,80L176,73L168,71L162,62L159,59L153,58L150,58L143,61L141,65L140,80L141,90L139,98L139,106L141,120L138,126L136,133L135,138L133,148L133,155L134,161L131,170L123,190L120,200L118,206L118,209L117,221L118,224L114,235L109,262L109,266L107,275L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L217,137L231,133L294,112L327,101L335,93L343,85Z " data-iso="JOR"/><path d="M116,36L122,35L133,36L137,33L139,25L141,24L143,26L144,23L155,14L157,13L159,11L162,7L165,5L162,0L132,0L128,9L124,16L121,24L119,31L116,36Z " data-iso="LBN"/><path d="M335,93L327,101L294,112L231,133L217,137L246,167L275,199L258,209L256,212L248,231L247,232L208,241L205,243L192,265L170,284L167,285L107,275L102,299L450,299L450,128L408,105L402,103L383,100L347,95L335,93Z " data-iso="SAU"/><path d="M157,13L156,17L155,23L159,32L157,35L158,41L160,44L154,55L153,58L159,59L162,62L168,71L176,73L185,80L190,82L209,84L275,39L299,23L312,14L327,5L334,0L162,0L165,5L162,7L159,11L157,13Z " data-iso="SYR"/><path d="M137,79L132,76L131,73L121,71L114,76L111,83L108,95L110,111L109,117L113,115L117,117L121,119L121,121L112,126L108,131L103,144L105,147L116,146L125,142L133,138L135,138L136,133L138,126L141,120L139,106L139,98L141,90L140,80L137,79Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M135,194L134,194L130,191L129,190L125,187L125,187L121,194L118,206L119,211L118,213L117,219L118,223L115,231L113,243L110,250L109,257L108,261L110,263L108,268L108,274L107,275L151,282L148,261L145,247L140,238L135,236L128,235L127,227L131,220L131,218L131,211L133,203L135,198L135,194Z " data-fips="JO21" data-fips-="" data-iso3="JOR" data-name="Aqaba"/><path d="M169,72L170,77L165,79L166,82L165,83L165,84L162,88L163,91L164,92L165,93L165,95L169,95L177,96L181,98L185,97L193,101L261,123L271,120L326,102L327,101L343,85L342,81L340,79L329,82L330,70L320,38L300,23L275,39L245,60L217,78L209,84L202,84L200,83L190,82L185,80L180,75L175,71L170,72L169,72Z " data-fips="JO15" data-fips-="JO10" data-iso3="JOR" data-name="Mafraq"/><path d="M161,102L160,103L151,110L147,112L146,114L150,115L149,118L149,119L151,119L156,119L156,125L155,126L155,130L158,133L156,142L155,143L156,145L156,150L156,151L157,153L173,153L232,152L217,137L217,137L219,136L204,121L202,121L199,122L194,120L191,116L191,115L194,111L192,109L187,104L173,106L167,108L163,104L161,102Z " data-fips="JO16" data-fips-="JO11" data-iso3="JOR" data-name="Amman"/><path d="M164,181L156,174L147,171L136,170L135,176L133,176L129,174L129,175L128,180L126,182L125,186L125,187L129,190L130,191L134,194L135,194L137,194L147,194L152,194L162,191L167,184L164,181Z " data-fips="JO12" data-fips-="" data-iso3="JOR" data-name="Tafilah"/><path d="M232,152L173,153L174,159L176,163L173,172L167,184L162,191L152,194L147,194L137,194L135,194L135,198L133,203L131,211L131,218L131,220L127,227L128,235L135,236L140,238L145,247L148,261L151,282L167,285L170,284L192,265L205,243L208,241L247,232L248,231L256,212L258,209L275,199L246,167L232,152Z " data-fips="JO19" data-fips-="JO07" data-iso3="JOR" data-name="Ma`an"/><path d="M141,93L141,93L145,93L145,93L144,89L149,82L155,80L156,79L158,82L159,83L161,82L162,82L164,83L165,83L166,82L165,79L170,77L169,72L168,72L165,66L165,63L161,62L159,60L153,58L147,59L145,61L143,61L141,64L142,69L141,72L140,78L140,84L141,90L141,93Z " data-fips="JO18" data-fips-="JO14" data-iso3="JOR" data-name="Irbid"/><path d="M158,82L156,79L155,80L149,82L144,89L145,93L145,93L146,94L147,95L148,95L150,92L156,86L158,84L159,83L158,82Z " data-fips="JO20" data-fips-="JO14" data-iso3="JOR" data-name="Ajlun"/><path d="M164,83L162,82L161,82L159,83L158,84L156,86L150,92L148,95L148,96L154,96L155,96L157,97L159,99L161,96L163,95L164,94L164,94L164,92L163,91L162,88L165,84L165,83L164,83Z " data-fips="JO22" data-fips-="JO14" data-iso3="JOR" data-name="Jarash"/><path d="M141,93L141,93L140,94L139,100L139,104L141,120L139,122L138,125L142,125L145,121L148,120L149,119L149,118L150,115L146,114L147,112L151,110L160,103L161,102L160,101L160,101L160,101L159,100L159,99L157,97L155,96L154,96L148,96L148,95L147,95L146,94L145,93L141,93Z " data-fips="JO02" data-fips-="" data-iso3="JOR" data-name="Balqa"/><path d="M156,142L158,133L155,130L155,126L156,125L156,119L151,119L149,119L148,120L145,121L142,125L138,125L136,128L136,133L135,138L135,141L141,141L148,143L153,142L155,143L156,142Z " data-fips="JO23" data-fips-="JO02" data-iso3="JOR" data-name="Madaba"/><path d="M153,142L148,143L141,141L135,141L135,142L133,148L132,153L134,162L132,168L131,173L129,174L133,176L135,176L136,170L147,171L156,174L164,181L167,184L173,172L176,163L174,159L173,153L157,153L156,151L156,150L156,145L155,143L153,142Z " data-fips="JO09" data-fips-="" data-iso3="JOR" data-name="Karak"/><path d="M164,92L164,94L164,94L163,95L161,96L159,99L159,100L160,101L160,101L160,101L161,102L163,104L167,108L173,106L187,104L192,109L194,111L191,115L191,116L194,120L199,122L202,121L204,121L219,136L261,123L193,101L185,97L181,98L177,96L169,95L165,95L165,93L164,92Z " data-fips="JO13" data-fips-="JO17" data-iso3="JOR" data-name="Zarqa"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/KEN.svg b/plugins/UserCountryMap/svg/KEN.svg
index 3570343d77..e9e6ba89aa 100644
--- a/plugins/UserCountryMap/svg/KEN.svg
+++ b/plugins/UserCountryMap/svg/KEN.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 451" height="451px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 451" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="0.691043402681" lon0="38.4607587629"/><bbox h="137.33" w="110.39" x="937.69" y="934.82"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M120,19L120,21L122,24L128,22L139,25L141,28L139,41L140,47L146,55L148,59L153,61L182,62L186,63L205,75L233,94L239,95L254,96L260,97L279,101L290,102L292,101L296,97L302,90L304,86L311,82L341,69L356,81L359,82L380,80L386,80L387,78L392,74L400,71L405,71L423,68L428,61L432,57L436,53L450,47L450,0L108,0L109,5L112,12L119,19L120,19Z " data-iso="ETH"/><path d="M350,328L355,326L354,323L350,326L350,328Z M120,19L113,27L84,54L76,63L68,71L74,84L75,87L79,90L84,92L86,95L85,103L87,113L90,115L92,123L100,131L101,135L105,141L104,143L105,151L107,158L108,166L107,175L100,185L101,190L95,193L88,199L85,206L79,213L75,217L73,221L70,229L66,234L65,242L65,257L64,275L64,281L67,281L215,364L216,365L217,374L215,378L214,383L216,383L220,388L231,396L278,430L279,430L279,429L282,427L285,428L290,422L303,394L305,385L310,376L315,372L315,369L318,363L318,355L319,349L322,347L327,344L336,343L343,338L343,335L347,333L347,327L346,323L350,320L355,321L361,319L366,316L372,309L372,304L350,276L350,219L349,127L350,126L364,112L381,88L386,80L380,80L359,82L356,81L341,69L311,82L304,86L302,90L296,97L292,101L290,102L279,101L260,97L254,96L239,95L233,94L205,75L186,63L182,62L153,61L148,59L146,55L140,47L139,41L141,28L139,25L128,22L122,24L120,21L120,19Z " data-iso="KEN"/><path d="M68,71L76,63L84,54L113,27L120,19L119,19L112,12L109,5L108,0L0,0L0,92L2,91L10,89L22,87L28,84L35,88L41,89L48,89L58,80L68,71Z " data-iso="SDS"/><path d="M386,80L381,88L364,112L350,126L349,127L350,219L350,276L372,304L372,309L376,305L380,299L390,280L400,271L407,262L410,259L414,254L420,248L450,216L450,47L436,53L432,57L428,61L423,68L405,71L400,71L392,74L387,78L386,80Z " data-iso="SOM"/><path d="M305,449L305,439L301,440L297,440L298,447L298,449L305,449Z M279,430L278,430L231,396L220,388L216,383L214,383L215,378L217,374L216,365L215,364L67,281L64,281L60,281L46,281L24,281L0,281L0,449L274,449L275,442L278,434L279,430Z " data-iso="TZA"/><path d="M64,281L64,275L65,257L65,242L66,234L70,229L73,221L75,217L79,213L85,206L88,199L95,193L101,190L100,185L107,175L108,166L107,158L105,151L104,143L105,141L101,135L100,131L92,123L90,115L87,113L85,103L86,95L84,92L79,90L75,87L74,84L68,71L58,80L48,89L41,89L35,88L28,84L22,87L10,89L2,91L0,92L0,281L24,281L46,281L60,281L64,281Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,62L151,109L153,111L155,115L154,120L159,121L159,122L164,125L167,131L167,134L170,138L172,144L174,144L179,139L183,149L185,151L189,159L195,160L200,164L202,168L204,169L205,173L209,177L211,183L212,184L222,181L227,184L227,190L231,195L232,209L230,209L226,211L217,214L212,218L207,217L204,216L201,211L193,209L186,211L186,213L184,217L203,220L204,224L205,227L204,232L200,237L194,240L193,240L194,241L207,258L207,263L209,265L209,271L203,273L200,272L199,276L204,280L204,283L197,285L195,290L195,291L194,292L191,294L188,294L185,298L184,298L184,299L189,300L188,302L189,305L196,313L195,315L201,322L203,322L214,328L218,329L217,331L216,334L213,336L226,350L226,351L226,353L227,353L234,350L236,350L241,354L244,359L248,361L251,360L254,362L262,364L272,363L255,338L262,335L269,320L269,318L268,312L270,309L270,287L265,276L246,244L248,244L252,242L259,243L260,244L259,235L260,232L257,223L258,221L261,220L263,217L276,212L282,204L288,201L281,183L282,182L288,179L284,175L279,172L275,166L271,161L268,152L265,140L268,138L274,126L275,123L281,120L282,100L280,101L266,99L256,96L252,95L251,94L245,96L237,95L229,91L194,68L190,65L183,62L175,62L174,62L160,62L157,62L151,62Z " data-fips="KE03" data-fips-="" data-iso3="KEN" data-name="Eastern"/><path d="M91,196L94,200L98,204L102,207L108,205L113,206L115,212L112,216L107,216L105,218L103,218L102,221L105,222L106,226L105,234L100,240L99,241L99,241L106,243L108,242L111,243L112,242L117,242L120,247L121,251L115,248L114,246L111,250L109,256L110,259L111,269L111,271L108,277L97,280L94,280L92,281L95,289L97,298L215,364L216,365L217,370L223,369L223,369L224,362L226,353L226,351L226,350L213,336L216,334L217,331L218,329L214,328L203,322L201,322L195,315L196,313L189,305L188,302L189,300L184,299L184,298L183,297L182,297L178,294L176,293L176,293L169,292L171,286L173,285L172,278L170,274L170,270L169,266L165,264L165,258L164,257L159,257L157,252L157,250L158,244L159,241L168,237L170,239L175,241L171,244L172,246L178,247L182,246L184,247L183,250L185,253L188,253L190,250L190,246L191,243L193,240L194,240L200,237L204,232L205,227L204,224L203,220L184,217L186,213L186,211L193,209L201,211L204,216L207,217L212,218L217,214L226,211L230,209L232,209L231,195L227,190L227,184L222,181L212,184L211,183L209,177L205,173L204,169L202,168L200,164L195,160L189,159L185,151L183,149L179,139L174,144L172,144L170,138L167,134L167,131L164,125L159,122L159,121L154,120L155,115L153,111L151,109L151,62L151,62L147,58L146,55L141,49L139,45L139,37L142,33L141,26L135,24L132,24L130,23L126,23L124,24L121,25L119,22L120,20L84,54L69,71L71,80L73,81L72,84L77,86L75,86L79,90L80,91L87,94L86,99L84,101L84,105L87,114L89,114L94,125L98,126L100,133L101,136L105,140L105,143L103,145L103,146L107,156L107,161L109,164L108,165L108,173L106,177L103,180L102,183L100,185L101,190L99,192L92,194L91,196L91,196Z " data-fips="KE08" data-fips-="" data-iso3="KEN" data-name="Rift Valley"/><path d="M91,197L88,197L87,201L85,206L80,212L79,213L74,218L71,225L72,226L64,236L64,237L66,244L71,236L73,232L78,229L83,229L85,232L87,234L89,239L89,241L98,242L99,241L100,240L105,234L106,226L105,222L102,221L103,218L105,218L107,216L112,216L115,212L113,206L108,205L102,207L98,204L94,200L91,196L91,197Z " data-fips="KE09" data-fips-="" data-iso3="KEN" data-name="Western"/><path d="M282,100L281,120L275,123L274,126L268,138L265,140L268,152L271,161L275,166L279,172L284,175L288,179L282,182L281,183L288,201L282,204L276,212L263,217L261,220L258,221L257,223L260,232L259,235L260,244L267,245L269,243L272,243L276,246L282,246L289,250L291,252L293,254L296,261L299,265L300,265L303,270L305,279L308,285L307,287L310,290L312,302L315,307L315,311L315,315L316,316L317,325L319,324L351,310L372,309L372,306L372,304L350,276L349,241L349,160L349,127L350,126L364,112L373,100L386,81L382,81L381,80L368,82L359,82L355,81L353,80L349,75L347,74L341,68L338,70L326,75L325,76L318,78L304,85L300,93L293,100L292,103L282,100L282,100Z " data-fips="KE06" data-fips-="" data-iso3="KEN" data-name="North-Eastern"/><path d="M357,325L356,324L353,325L350,326L351,328L357,325Z M226,353L224,362L223,369L223,369L217,370L218,375L213,378L214,383L218,383L220,388L278,430L281,427L286,428L288,424L288,426L290,422L291,419L297,407L297,406L293,405L297,401L297,404L302,399L305,390L302,387L302,386L305,387L309,377L316,372L318,363L317,359L318,354L317,353L320,348L326,344L335,344L339,341L342,333L344,332L349,333L347,328L347,325L345,321L347,322L348,324L349,324L350,319L350,322L351,323L355,321L358,321L364,318L368,315L372,309L372,309L351,310L319,324L317,325L316,316L315,315L315,311L315,307L312,302L310,290L307,287L308,285L305,279L303,270L300,265L299,265L296,261L293,254L291,252L289,250L282,246L276,246L272,243L269,243L267,245L260,244L259,243L252,242L248,244L246,244L265,276L270,287L270,309L268,312L269,318L269,320L262,335L255,338L272,363L262,364L254,362L251,360L248,361L244,359L241,354L236,350L234,350L227,353L226,353Z " data-fips="KE02" data-fips-="" data-iso3="KEN" data-name="Coast"/><path d="M191,243L190,246L190,250L188,253L185,253L183,250L184,247L182,246L178,247L172,246L171,244L175,241L170,239L168,237L159,241L158,244L157,250L157,252L159,257L164,257L165,258L165,264L169,266L170,270L170,274L172,278L173,285L171,286L169,292L176,293L176,293L177,292L185,288L187,287L189,290L194,290L195,291L195,290L197,285L204,283L204,280L199,276L200,272L203,273L209,271L209,265L207,263L207,258L194,241L193,240L191,243Z " data-fips="KE01" data-fips-="" data-iso3="KEN" data-name="Central"/><path d="M194,290L189,290L187,287L185,288L177,292L176,293L178,294L182,297L183,297L184,298L185,298L188,294L191,294L194,292L195,291L194,290Z " data-fips="KE05" data-fips-="" data-iso3="KEN" data-name="Nairobi"/><path d="M98,242L89,241L89,239L87,234L85,232L83,229L78,229L73,232L71,236L66,244L66,246L66,247L64,268L64,281L68,281L70,283L97,298L95,289L92,281L94,280L97,280L108,277L111,271L111,269L110,259L109,256L111,250L114,246L115,248L121,251L120,247L117,242L112,242L111,243L108,242L106,243L99,241L99,241L98,242Z " data-fips="KE07" data-fips-="" data-iso3="KEN" data-name="Nyanza"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="0.691043402681" lon0="38.4607587629"/><bbox h="137.33" w="110.39" x="937.69" y="934.82"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M120,19L120,21L122,24L128,22L139,25L141,28L139,41L140,47L146,55L148,59L153,61L182,62L186,63L205,75L233,94L239,95L254,96L260,97L279,101L290,102L292,101L296,97L302,90L304,86L311,82L341,69L356,81L359,82L380,80L386,80L387,78L392,74L400,71L405,71L423,68L428,61L432,57L436,53L450,47L450,0L108,0L109,5L112,12L119,19L120,19Z " data-iso="ETH"/><path d="M350,328L355,326L354,323L350,326L350,328Z M120,19L113,27L84,54L76,63L68,71L74,84L75,87L79,90L84,92L86,95L85,103L87,113L90,115L92,123L100,131L101,135L105,141L104,143L105,151L107,158L108,166L107,175L100,185L101,190L95,193L88,199L85,206L79,213L75,217L73,221L70,229L66,234L65,242L65,257L64,275L64,281L67,281L215,364L216,365L217,374L215,378L214,383L216,383L220,388L231,396L278,430L279,430L279,429L282,427L285,428L290,422L303,394L305,385L310,376L315,372L315,369L318,363L318,355L319,349L322,347L327,344L336,343L343,338L343,335L347,333L347,327L346,323L350,320L355,321L361,319L366,316L372,309L372,304L350,276L350,219L349,127L350,126L364,112L381,88L386,80L380,80L359,82L356,81L341,69L311,82L304,86L302,90L296,97L292,101L290,102L279,101L260,97L254,96L239,95L233,94L205,75L186,63L182,62L153,61L148,59L146,55L140,47L139,41L141,28L139,25L128,22L122,24L120,21L120,19Z " data-iso="KEN"/><path d="M68,71L76,63L84,54L113,27L120,19L119,19L112,12L109,5L108,0L0,0L0,92L2,91L10,89L22,87L28,84L35,88L41,89L48,89L58,80L68,71Z " data-iso="SSD"/><path d="M386,80L381,88L364,112L350,126L349,127L350,219L350,276L372,304L372,309L376,305L380,299L390,280L400,271L407,262L410,259L414,254L420,248L450,216L450,47L436,53L432,57L428,61L423,68L405,71L400,71L392,74L387,78L386,80Z " data-iso="SOM"/><path d="M305,449L305,439L301,440L297,440L298,447L298,449L305,449Z M279,430L278,430L231,396L220,388L216,383L214,383L215,378L217,374L216,365L215,364L67,281L64,281L60,281L46,281L24,281L0,281L0,449L274,449L275,442L278,434L279,430Z " data-iso="TZA"/><path d="M64,281L64,275L65,257L65,242L66,234L70,229L73,221L75,217L79,213L85,206L88,199L95,193L101,190L100,185L107,175L108,166L107,158L105,151L104,143L105,141L101,135L100,131L92,123L90,115L87,113L85,103L86,95L84,92L79,90L75,87L74,84L68,71L58,80L48,89L41,89L35,88L28,84L22,87L10,89L2,91L0,92L0,281L24,281L46,281L60,281L64,281Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M151,62L151,109L153,111L155,115L154,120L159,121L159,122L164,125L167,131L167,134L170,138L172,144L174,144L179,139L183,149L185,151L189,159L195,160L200,164L202,168L204,169L205,173L209,177L211,183L212,184L222,181L227,184L227,190L231,195L232,209L230,209L226,211L217,214L212,218L207,217L204,216L201,211L193,209L186,211L186,213L184,217L203,220L204,224L205,227L204,232L200,237L194,240L193,240L194,241L207,258L207,263L209,265L209,271L203,273L200,272L199,276L204,280L204,283L197,285L195,290L195,291L194,292L191,294L188,294L185,298L184,298L184,299L189,300L188,302L189,305L196,313L195,315L201,322L203,322L214,328L218,329L217,331L216,334L213,336L226,350L226,351L226,353L227,353L234,350L236,350L241,354L244,359L248,361L251,360L254,362L262,364L272,363L255,338L262,335L269,320L269,318L268,312L270,309L270,287L265,276L246,244L248,244L252,242L259,243L260,244L259,235L260,232L257,223L258,221L261,220L263,217L276,212L282,204L288,201L281,183L282,182L288,179L284,175L279,172L275,166L271,161L268,152L265,140L268,138L274,126L275,123L281,120L282,100L280,101L266,99L256,96L252,95L251,94L245,96L237,95L229,91L194,68L190,65L183,62L175,62L174,62L160,62L157,62L151,62Z " data-fips="KE03" data-fips-="" data-iso3="KEN" data-name="Eastern"/><path d="M91,196L94,200L98,204L102,207L108,205L113,206L115,212L112,216L107,216L105,218L103,218L102,221L105,222L106,226L105,234L100,240L99,241L99,241L106,243L108,242L111,243L112,242L117,242L120,247L121,251L115,248L114,246L111,250L109,256L110,259L111,269L111,271L108,277L97,280L94,280L92,281L95,289L97,298L215,364L216,365L217,370L223,369L223,369L224,362L226,353L226,351L226,350L213,336L216,334L217,331L218,329L214,328L203,322L201,322L195,315L196,313L189,305L188,302L189,300L184,299L184,298L183,297L182,297L178,294L176,293L176,293L169,292L171,286L173,285L172,278L170,274L170,270L169,266L165,264L165,258L164,257L159,257L157,252L157,250L158,244L159,241L168,237L170,239L175,241L171,244L172,246L178,247L182,246L184,247L183,250L185,253L188,253L190,250L190,246L191,243L193,240L194,240L200,237L204,232L205,227L204,224L203,220L184,217L186,213L186,211L193,209L201,211L204,216L207,217L212,218L217,214L226,211L230,209L232,209L231,195L227,190L227,184L222,181L212,184L211,183L209,177L205,173L204,169L202,168L200,164L195,160L189,159L185,151L183,149L179,139L174,144L172,144L170,138L167,134L167,131L164,125L159,122L159,121L154,120L155,115L153,111L151,109L151,62L151,62L147,58L146,55L141,49L139,45L139,37L142,33L141,26L135,24L132,24L130,23L126,23L124,24L121,25L119,22L120,20L84,54L69,71L71,80L73,81L72,84L77,86L75,86L79,90L80,91L87,94L86,99L84,101L84,105L87,114L89,114L94,125L98,126L100,133L101,136L105,140L105,143L103,145L103,146L107,156L107,161L109,164L108,165L108,173L106,177L103,180L102,183L100,185L101,190L99,192L92,194L91,196L91,196Z " data-fips="KE08" data-fips-="" data-iso3="KEN" data-name="Rift Valley"/><path d="M91,197L88,197L87,201L85,206L80,212L79,213L74,218L71,225L72,226L64,236L64,237L66,244L71,236L73,232L78,229L83,229L85,232L87,234L89,239L89,241L98,242L99,241L100,240L105,234L106,226L105,222L102,221L103,218L105,218L107,216L112,216L115,212L113,206L108,205L102,207L98,204L94,200L91,196L91,197Z " data-fips="KE09" data-fips-="" data-iso3="KEN" data-name="Western"/><path d="M282,100L281,120L275,123L274,126L268,138L265,140L268,152L271,161L275,166L279,172L284,175L288,179L282,182L281,183L288,201L282,204L276,212L263,217L261,220L258,221L257,223L260,232L259,235L260,244L267,245L269,243L272,243L276,246L282,246L289,250L291,252L293,254L296,261L299,265L300,265L303,270L305,279L308,285L307,287L310,290L312,302L315,307L315,311L315,315L316,316L317,325L319,324L351,310L372,309L372,306L372,304L350,276L349,241L349,160L349,127L350,126L364,112L373,100L386,81L382,81L381,80L368,82L359,82L355,81L353,80L349,75L347,74L341,68L338,70L326,75L325,76L318,78L304,85L300,93L293,100L292,103L282,100L282,100Z " data-fips="KE06" data-fips-="" data-iso3="KEN" data-name="North-Eastern"/><path d="M357,325L356,324L353,325L350,326L351,328L357,325Z M226,353L224,362L223,369L223,369L217,370L218,375L213,378L214,383L218,383L220,388L278,430L281,427L286,428L288,424L288,426L290,422L291,419L297,407L297,406L293,405L297,401L297,404L302,399L305,390L302,387L302,386L305,387L309,377L316,372L318,363L317,359L318,354L317,353L320,348L326,344L335,344L339,341L342,333L344,332L349,333L347,328L347,325L345,321L347,322L348,324L349,324L350,319L350,322L351,323L355,321L358,321L364,318L368,315L372,309L372,309L351,310L319,324L317,325L316,316L315,315L315,311L315,307L312,302L310,290L307,287L308,285L305,279L303,270L300,265L299,265L296,261L293,254L291,252L289,250L282,246L276,246L272,243L269,243L267,245L260,244L259,243L252,242L248,244L246,244L265,276L270,287L270,309L268,312L269,318L269,320L262,335L255,338L272,363L262,364L254,362L251,360L248,361L244,359L241,354L236,350L234,350L227,353L226,353Z " data-fips="KE02" data-fips-="" data-iso3="KEN" data-name="Coast"/><path d="M191,243L190,246L190,250L188,253L185,253L183,250L184,247L182,246L178,247L172,246L171,244L175,241L170,239L168,237L159,241L158,244L157,250L157,252L159,257L164,257L165,258L165,264L169,266L170,270L170,274L172,278L173,285L171,286L169,292L176,293L176,293L177,292L185,288L187,287L189,290L194,290L195,291L195,290L197,285L204,283L204,280L199,276L200,272L203,273L209,271L209,265L207,263L207,258L194,241L193,240L191,243Z " data-fips="KE01" data-fips-="" data-iso3="KEN" data-name="Central"/><path d="M194,290L189,290L187,287L185,288L177,292L176,293L178,294L182,297L183,297L184,298L185,298L188,294L191,294L194,292L195,291L194,290Z " data-fips="KE05" data-fips-="" data-iso3="KEN" data-name="Nairobi"/><path d="M98,242L89,241L89,239L87,234L85,232L83,229L78,229L73,232L71,236L66,244L66,246L66,247L64,268L64,281L68,281L70,283L97,298L95,289L92,281L94,280L97,280L108,277L111,271L111,269L110,259L109,256L111,250L114,246L115,248L121,251L120,247L117,242L112,242L111,243L108,242L106,243L99,241L99,241L98,242Z " data-fips="KE07" data-fips-="" data-iso3="KEN" data-name="Nyanza"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SAU.svg b/plugins/UserCountryMap/svg/SAU.svg
index aefdea8025..a294832ffb 100644
--- a/plugins/UserCountryMap/svg/SAU.svg
+++ b/plugins/UserCountryMap/svg/SAU.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="24.9427672386" lon0="39.9504406811"/><bbox h="222.51" w="266.84" x="926.21" y="897.14"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M443,32L449,33L450,34L450,20L448,23L446,27L443,32Z M450,0L436,0L450,5L450,6L450,0Z " data-iso="AFG"/><path d="M346,140L347,137L344,139L346,140Z M384,105L382,110L377,116L371,124L365,132L362,138L355,142L342,142L336,142L329,146L324,145L321,141L320,142L320,144L337,163L376,164L377,163L377,160L377,154L380,143L379,142L383,134L382,126L385,125L386,127L391,123L390,122L389,113L388,112L386,112L386,111L384,105L384,105Z " data-iso="ARE"/><path d="M304,116L303,112L301,115L304,116Z " data-iso="BHR"/><path d="M98,186L97,185L91,180L88,176L83,174L80,170L78,165L78,155L78,154L82,154L73,145L64,124L61,119L57,110L56,108L54,98L53,96L51,90L51,87L46,82L42,75L39,65L35,57L37,53L39,52L41,59L45,67L47,76L54,85L58,88L61,90L64,84L65,80L67,73L69,65L71,62L72,62L69,50L67,45L65,36L64,33L63,31L63,31L63,31L56,33L48,32L40,33L37,30L33,33L29,29L34,29L32,26L18,26L12,26L10,25L0,30L0,182L11,183L13,180L14,183L27,184L92,186L98,187L98,186Z " data-iso="EGY"/><path d="M148,291L146,289L145,293L152,293L148,291Z M124,253L118,260L106,265L105,268L98,269L96,276L96,281L89,299L141,299L138,294L136,290L134,288L133,283L132,274L128,263L124,253Z M147,299L143,295L142,298L147,299Z " data-iso="ERI"/><path d="M65,31L65,30L67,26L66,28L63,31L63,31L64,33L65,31Z " data-iso="GAZ"/><path d="M384,91L382,90L372,98L377,96L381,95L384,91Z M231,0L231,3L237,5L245,11L248,10L251,16L256,21L254,28L255,34L259,34L260,43L265,46L267,50L268,51L269,51L273,48L274,41L278,43L274,44L283,49L289,45L290,45L293,51L299,58L300,62L303,63L303,66L310,77L310,78L314,82L328,85L332,90L348,98L356,98L360,99L366,99L373,95L376,91L380,89L382,87L391,86L392,87L403,107L412,108L413,109L425,108L429,110L435,108L437,109L443,109L449,109L450,107L450,39L448,37L446,35L443,32L443,32L446,27L448,23L450,20L450,6L450,5L436,0L231,0Z " data-iso="IRN"/><path d="M134,19L137,20L151,22L168,32L178,39L182,42L214,66L238,68L240,67L242,64L248,51L253,50L260,51L260,51L266,51L267,51L268,51L267,50L265,46L260,43L259,34L255,34L254,28L256,21L251,16L248,10L245,11L237,5L231,3L231,0L129,0L131,13L132,16L136,17L134,19Z " data-iso="IRQ"/><path d="M77,4L73,17L71,21L68,26L67,26L65,30L65,31L64,33L65,36L67,45L69,50L72,62L73,60L76,50L77,44L81,31L81,29L81,29L73,31L75,25L78,24L76,23L75,17L76,12L78,11L82,14L83,14L84,10L84,9L86,8L87,8L87,7L89,5L89,2L88,0L83,0L83,2L82,2L77,2L77,4Z " data-iso="ISR"/><path d="M87,8L86,8L84,9L84,10L83,14L83,16L83,20L83,24L81,27L81,29L81,31L77,44L76,50L73,60L73,62L73,64L89,67L117,46L102,29L131,21L134,19L136,17L132,16L131,13L129,0L126,0L101,15L96,15L90,12L88,9L87,8Z " data-iso="JOR"/><path d="M265,57L266,54L262,54L265,57Z M260,51L253,50L248,51L242,64L240,67L243,67L253,68L257,75L268,75L268,73L264,68L262,61L257,61L260,57L263,58L260,52L260,51Z " data-iso="KWT"/><path d="M77,2L82,2L83,2L83,0L79,0L78,1L77,2Z " data-iso="LBN"/><path d="M435,197L438,192L437,189L434,195L435,197Z M377,163L378,164L385,173L378,208L335,228L333,229L334,230L347,256L348,256L353,266L357,265L362,264L369,259L373,258L380,259L384,257L387,252L386,249L389,243L391,242L403,239L406,236L407,228L414,222L424,219L421,206L423,197L425,193L427,195L431,195L436,182L444,170L448,158L447,157L441,155L429,142L426,141L422,141L419,140L411,140L405,139L400,135L393,127L391,123L386,127L385,125L382,126L383,134L379,142L380,143L377,154L377,160L377,163Z M384,105L386,111L386,112L388,112L388,111L389,104L385,103L384,105Z " data-iso="OMN"/><path d="M443,32L446,35L448,37L450,39L450,34L449,33L443,32Z " data-iso="PAK"/><path d="M317,136L319,132L319,127L317,121L317,119L315,113L313,111L308,119L306,124L308,133L308,134L309,136L315,137L317,136Z " data-iso="QAT"/><path d="M177,274L177,271L174,273L177,274Z M134,19L131,21L102,29L117,46L89,67L73,64L70,74L70,78L67,85L68,84L75,86L78,91L81,96L83,99L84,102L90,110L94,118L96,119L96,122L103,132L105,143L108,149L114,151L120,155L122,159L129,172L132,180L130,189L132,195L132,198L134,204L144,215L147,216L153,220L158,224L168,246L173,255L178,259L182,262L186,272L188,273L190,278L190,280L195,275L196,263L200,261L206,263L221,261L231,263L246,264L252,263L256,268L259,268L264,265L268,257L274,247L288,239L290,238L330,230L333,229L335,228L378,208L385,173L378,164L377,163L376,164L337,163L320,144L320,142L320,142L316,141L317,139L316,137L315,137L309,136L308,134L307,133L304,130L303,126L298,121L297,113L297,110L294,106L296,104L293,101L289,100L286,96L280,92L281,91L276,89L275,85L269,76L268,75L257,75L253,68L243,67L240,67L238,68L214,66L182,42L178,39L168,32L151,22L137,20L134,19Z " data-iso="SAU"/><path d="M123,252L119,250L106,239L104,235L103,227L103,223L103,211L102,201L103,200L101,198L98,190L98,187L92,186L27,184L14,183L13,180L11,183L0,182L0,299L89,299L96,281L96,276L98,269L105,268L106,265L118,260L124,253L123,252Z " data-iso="SDN"/><path d="M87,8L88,9L90,12L96,15L101,15L126,0L88,0L89,2L89,5L87,7L87,8Z " data-iso="SYR"/><path d="M82,14L78,11L76,12L75,17L76,23L78,24L75,25L73,31L81,29L81,29L81,27L83,24L83,20L83,16L83,14L82,14Z " data-iso="WEB"/><path d="M353,266L348,256L347,256L334,230L333,229L330,230L290,238L288,239L274,247L268,257L264,265L259,268L256,268L252,263L246,264L231,263L221,261L206,263L200,261L196,263L195,275L190,280L191,285L189,292L191,296L189,299L310,299L315,296L327,292L341,284L340,279L341,275L346,270L353,266Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M142,109L141,109L135,110L133,109L128,107L123,106L122,107L115,102L112,97L109,99L104,97L99,100L102,109L104,110L104,113L105,119L106,118L109,120L112,124L114,129L115,129L116,139L109,142L106,144L108,147L115,151L116,152L122,158L124,162L125,163L125,163L129,163L137,169L142,168L145,170L148,179L151,177L156,177L167,166L165,164L172,159L174,154L176,154L176,153L176,148L177,144L177,143L176,142L174,138L171,136L170,130L167,128L167,128L165,128L161,127L157,128L154,131L145,131L145,126L144,121L145,116L142,114L143,111L143,110L142,109Z " data-fips="SA05" data-fips-="" data-iso3="SAU" data-name="Al Madinah"/><path d="M213,100L211,102L208,101L204,98L202,98L194,103L192,106L183,112L177,119L178,120L174,121L175,125L167,128L167,128L167,128L170,130L171,136L174,138L176,142L177,143L177,143L180,141L182,141L191,142L192,138L196,133L201,132L207,127L216,126L215,120L211,113L211,111L214,106L217,102L215,100L214,99L213,100Z " data-fips="SA08" data-fips-="" data-iso3="SAU" data-name="Al Quassim"/><path d="M216,94L211,90L205,89L201,81L200,80L197,82L191,81L189,78L185,78L181,75L175,74L170,74L164,73L156,75L155,75L153,74L153,74L147,76L141,79L139,80L133,83L131,85L131,85L138,87L143,92L144,98L148,101L143,110L143,110L143,111L142,114L145,116L144,121L145,126L145,131L154,131L157,128L161,127L165,128L167,128L167,128L175,125L174,121L178,120L177,119L183,112L192,106L194,103L202,98L204,98L208,101L211,102L213,100L214,99L214,99L214,97L214,96L215,95L216,94L216,94Z " data-fips="SA13" data-fips-="" data-iso3="SAU" data-name="Ha'il"/><path d="M71,72L70,78L67,84L76,86L75,86L80,95L82,98L84,102L87,106L94,118L96,120L96,122L97,124L102,129L104,135L104,139L105,143L106,144L109,142L116,139L115,129L114,129L112,124L109,120L106,118L105,119L104,113L104,110L102,109L99,100L104,97L109,99L112,97L115,102L122,107L123,106L128,107L133,109L135,110L141,109L142,109L143,110L143,110L148,101L144,98L143,92L138,87L131,85L131,85L130,84L126,85L125,84L118,83L115,82L113,80L113,73L108,78L100,76L94,78L90,72L88,71L81,70L78,71L71,71L71,72Z " data-fips="SA19" data-fips-="" data-iso3="SAU" data-name="Tabuk"/><path d="M117,25L115,32L120,39L134,38L144,40L148,42L159,43L162,45L167,46L169,48L173,52L171,55L159,62L156,65L156,72L153,74L155,75L156,75L164,73L170,74L175,74L181,75L185,78L189,78L191,81L197,82L200,80L201,81L205,89L211,90L216,94L216,94L216,94L217,95L218,95L219,94L219,94L222,86L227,76L230,72L239,67L238,68L214,66L201,57L185,45L175,36L151,22L134,19L131,21L117,25Z " data-fips="SA15" data-fips-="" data-iso3="SAU" data-name="Al Hudud ash Shamaliyah"/><path d="M117,25L103,29L117,46L109,54L99,56L95,62L89,67L72,64L71,71L71,71L78,71L81,70L88,71L90,72L94,78L100,76L108,78L113,73L113,80L115,82L118,83L125,84L126,85L130,84L131,85L133,83L139,80L141,79L147,76L153,74L153,74L156,72L156,65L159,62L171,55L173,52L169,48L167,46L162,45L159,43L148,42L144,40L134,38L120,39L115,32L117,25L117,25Z " data-fips="SA03" data-fips-="SA20" data-iso3="SAU" data-name="Al Jawf"/><path d="M176,209L169,210L168,208L165,208L164,214L162,216L160,217L158,219L161,222L161,227L165,231L167,230L169,224L172,224L172,223L174,220L175,217L177,215L176,212L177,210L176,209Z " data-fips="SA02" data-fips-="" data-iso3="SAU" data-name="Al Bahah"/><path d="M216,227L210,221L207,217L208,210L205,205L202,203L201,204L191,206L187,209L181,214L179,213L177,210L177,210L176,212L177,215L175,217L174,220L172,223L173,223L175,225L174,227L175,230L173,233L168,234L167,238L173,241L174,246L174,248L175,248L176,252L178,252L181,255L188,258L189,255L192,253L192,255L197,259L199,261L199,261L202,261L203,262L203,262L204,253L204,248L211,240L214,239L215,236L214,233L216,229L216,227L216,227Z " data-fips="SA11" data-fips-="" data-iso3="SAU" data-name="`Asir"/><path d="M176,274L175,272L174,273L177,275L180,277L180,274L176,274Z M177,271L175,271L176,273L177,271Z M174,248L173,249L173,249L172,250L171,251L171,251L174,255L182,262L183,269L184,267L189,274L190,278L195,276L197,273L195,271L196,266L197,265L198,262L199,261L197,259L192,255L192,253L189,255L188,258L181,255L178,252L176,252L175,248L174,248Z " data-fips="SA17" data-fips-="" data-iso3="SAU" data-name="Jizan"/><path d="M174,154L172,159L165,164L167,166L156,177L151,177L148,179L145,170L142,168L137,169L129,163L125,163L126,164L130,172L129,173L131,177L131,182L130,189L133,196L131,198L135,205L142,214L149,217L152,220L156,224L157,224L158,227L164,235L164,237L165,239L165,242L171,251L171,251L172,250L173,249L173,249L174,248L174,246L173,241L167,238L168,234L173,233L175,230L174,227L175,225L173,223L172,223L172,224L169,224L167,230L165,231L161,227L161,222L158,219L160,217L162,216L164,214L165,208L168,208L169,210L176,209L177,210L177,210L179,213L181,214L187,209L191,206L201,204L202,203L198,197L200,187L199,181L199,178L192,177L192,173L189,171L186,171L182,170L180,165L178,159L176,156L176,154L174,154Z " data-fips="SA14" data-fips-="" data-iso3="SAU" data-name="Makkah"/><path d="M265,225L228,231L224,231L221,230L216,227L216,229L214,233L215,236L214,239L211,240L204,248L204,253L203,262L204,263L208,264L209,263L219,261L228,261L232,263L246,264L260,268L264,265L264,265L267,225L265,225Z " data-fips="SA16" data-fips-="" data-iso3="SAU" data-name="Najran"/><path d="M269,192L272,156L269,146L258,137L257,115L256,113L251,111L246,108L244,108L236,105L234,105L229,101L223,99L219,94L219,94L218,95L217,95L216,94L216,94L215,95L214,96L214,97L214,99L214,99L215,100L217,102L214,106L211,111L211,113L215,120L216,126L207,127L201,132L196,133L192,138L191,142L182,141L180,141L177,143L177,143L177,144L176,148L176,153L176,154L176,156L178,159L180,165L182,170L186,171L189,171L192,173L192,177L199,178L199,181L200,187L198,197L202,203L205,205L208,210L207,217L210,221L216,227L216,227L221,230L224,231L228,231L265,225L267,225L269,192Z " data-fips="SA10" data-fips-="" data-iso3="SAU" data-name="Ar Riyad"/><path d="M239,67L230,72L227,76L222,86L219,94L219,94L219,94L223,99L229,101L234,105L236,105L244,108L246,108L251,111L256,113L257,115L258,137L269,146L272,156L269,192L267,225L264,265L264,265L266,259L274,247L289,239L333,229L382,189L385,173L377,163L337,163L320,145L320,142L316,141L318,138L316,138L310,137L304,130L302,124L295,115L294,115L294,112L297,113L296,108L295,107L293,104L295,104L286,97L283,96L282,92L280,90L274,87L276,86L271,81L269,75L257,75L254,68L240,67L239,67Z " data-fips="SA06" data-fips-="" data-iso3="SAU" data-name="Ash Sharqiyah"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="24.9427672386" lon0="39.9504406811"/><bbox h="222.51" w="266.84" x="926.21" y="897.14"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M443,32L449,33L450,34L450,20L448,23L446,27L443,32Z M450,0L436,0L450,5L450,6L450,0Z " data-iso="AFG"/><path d="M346,140L347,137L344,139L346,140Z M384,105L382,110L377,116L371,124L365,132L362,138L355,142L342,142L336,142L329,146L324,145L321,141L320,142L320,144L337,163L376,164L377,163L377,160L377,154L380,143L379,142L383,134L382,126L385,125L386,127L391,123L390,122L389,113L388,112L386,112L386,111L384,105L384,105Z " data-iso="ARE"/><path d="M304,116L303,112L301,115L304,116Z " data-iso="BHR"/><path d="M98,186L97,185L91,180L88,176L83,174L80,170L78,165L78,155L78,154L82,154L73,145L64,124L61,119L57,110L56,108L54,98L53,96L51,90L51,87L46,82L42,75L39,65L35,57L37,53L39,52L41,59L45,67L47,76L54,85L58,88L61,90L64,84L65,80L67,73L69,65L71,62L72,62L69,50L67,45L65,36L64,33L63,31L63,31L63,31L56,33L48,32L40,33L37,30L33,33L29,29L34,29L32,26L18,26L12,26L10,25L0,30L0,182L11,183L13,180L14,183L27,184L92,186L98,187L98,186Z " data-iso="EGY"/><path d="M148,291L146,289L145,293L152,293L148,291Z M124,253L118,260L106,265L105,268L98,269L96,276L96,281L89,299L141,299L138,294L136,290L134,288L133,283L132,274L128,263L124,253Z M147,299L143,295L142,298L147,299Z " data-iso="ERI"/><path d="M65,31L65,30L67,26L66,28L63,31L63,31L64,33L65,31Z " data-iso="PSE"/><path d="M384,91L382,90L372,98L377,96L381,95L384,91Z M231,0L231,3L237,5L245,11L248,10L251,16L256,21L254,28L255,34L259,34L260,43L265,46L267,50L268,51L269,51L273,48L274,41L278,43L274,44L283,49L289,45L290,45L293,51L299,58L300,62L303,63L303,66L310,77L310,78L314,82L328,85L332,90L348,98L356,98L360,99L366,99L373,95L376,91L380,89L382,87L391,86L392,87L403,107L412,108L413,109L425,108L429,110L435,108L437,109L443,109L449,109L450,107L450,39L448,37L446,35L443,32L443,32L446,27L448,23L450,20L450,6L450,5L436,0L231,0Z " data-iso="IRN"/><path d="M134,19L137,20L151,22L168,32L178,39L182,42L214,66L238,68L240,67L242,64L248,51L253,50L260,51L260,51L266,51L267,51L268,51L267,50L265,46L260,43L259,34L255,34L254,28L256,21L251,16L248,10L245,11L237,5L231,3L231,0L129,0L131,13L132,16L136,17L134,19Z " data-iso="IRQ"/><path d="M77,4L73,17L71,21L68,26L67,26L65,30L65,31L64,33L65,36L67,45L69,50L72,62L73,60L76,50L77,44L81,31L81,29L81,29L73,31L75,25L78,24L76,23L75,17L76,12L78,11L82,14L83,14L84,10L84,9L86,8L87,8L87,7L89,5L89,2L88,0L83,0L83,2L82,2L77,2L77,4Z " data-iso="ISR"/><path d="M87,8L86,8L84,9L84,10L83,14L83,16L83,20L83,24L81,27L81,29L81,31L77,44L76,50L73,60L73,62L73,64L89,67L117,46L102,29L131,21L134,19L136,17L132,16L131,13L129,0L126,0L101,15L96,15L90,12L88,9L87,8Z " data-iso="JOR"/><path d="M265,57L266,54L262,54L265,57Z M260,51L253,50L248,51L242,64L240,67L243,67L253,68L257,75L268,75L268,73L264,68L262,61L257,61L260,57L263,58L260,52L260,51Z " data-iso="KWT"/><path d="M77,2L82,2L83,2L83,0L79,0L78,1L77,2Z " data-iso="LBN"/><path d="M435,197L438,192L437,189L434,195L435,197Z M377,163L378,164L385,173L378,208L335,228L333,229L334,230L347,256L348,256L353,266L357,265L362,264L369,259L373,258L380,259L384,257L387,252L386,249L389,243L391,242L403,239L406,236L407,228L414,222L424,219L421,206L423,197L425,193L427,195L431,195L436,182L444,170L448,158L447,157L441,155L429,142L426,141L422,141L419,140L411,140L405,139L400,135L393,127L391,123L386,127L385,125L382,126L383,134L379,142L380,143L377,154L377,160L377,163Z M384,105L386,111L386,112L388,112L388,111L389,104L385,103L384,105Z " data-iso="OMN"/><path d="M443,32L446,35L448,37L450,39L450,34L449,33L443,32Z " data-iso="PAK"/><path d="M317,136L319,132L319,127L317,121L317,119L315,113L313,111L308,119L306,124L308,133L308,134L309,136L315,137L317,136Z " data-iso="QAT"/><path d="M177,274L177,271L174,273L177,274Z M134,19L131,21L102,29L117,46L89,67L73,64L70,74L70,78L67,85L68,84L75,86L78,91L81,96L83,99L84,102L90,110L94,118L96,119L96,122L103,132L105,143L108,149L114,151L120,155L122,159L129,172L132,180L130,189L132,195L132,198L134,204L144,215L147,216L153,220L158,224L168,246L173,255L178,259L182,262L186,272L188,273L190,278L190,280L195,275L196,263L200,261L206,263L221,261L231,263L246,264L252,263L256,268L259,268L264,265L268,257L274,247L288,239L290,238L330,230L333,229L335,228L378,208L385,173L378,164L377,163L376,164L337,163L320,144L320,142L320,142L316,141L317,139L316,137L315,137L309,136L308,134L307,133L304,130L303,126L298,121L297,113L297,110L294,106L296,104L293,101L289,100L286,96L280,92L281,91L276,89L275,85L269,76L268,75L257,75L253,68L243,67L240,67L238,68L214,66L182,42L178,39L168,32L151,22L137,20L134,19Z " data-iso="SAU"/><path d="M123,252L119,250L106,239L104,235L103,227L103,223L103,211L102,201L103,200L101,198L98,190L98,187L92,186L27,184L14,183L13,180L11,183L0,182L0,299L89,299L96,281L96,276L98,269L105,268L106,265L118,260L124,253L123,252Z " data-iso="SDN"/><path d="M87,8L88,9L90,12L96,15L101,15L126,0L88,0L89,2L89,5L87,7L87,8Z " data-iso="SYR"/><path d="M82,14L78,11L76,12L75,17L76,23L78,24L75,25L73,31L81,29L81,29L81,27L83,24L83,20L83,16L83,14L82,14Z " data-iso="PSE"/><path d="M353,266L348,256L347,256L334,230L333,229L330,230L290,238L288,239L274,247L268,257L264,265L259,268L256,268L252,263L246,264L231,263L221,261L206,263L200,261L196,263L195,275L190,280L191,285L189,292L191,296L189,299L310,299L315,296L327,292L341,284L340,279L341,275L346,270L353,266Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M142,109L141,109L135,110L133,109L128,107L123,106L122,107L115,102L112,97L109,99L104,97L99,100L102,109L104,110L104,113L105,119L106,118L109,120L112,124L114,129L115,129L116,139L109,142L106,144L108,147L115,151L116,152L122,158L124,162L125,163L125,163L129,163L137,169L142,168L145,170L148,179L151,177L156,177L167,166L165,164L172,159L174,154L176,154L176,153L176,148L177,144L177,143L176,142L174,138L171,136L170,130L167,128L167,128L165,128L161,127L157,128L154,131L145,131L145,126L144,121L145,116L142,114L143,111L143,110L142,109Z " data-fips="SA05" data-fips-="" data-iso3="SAU" data-name="Al Madinah"/><path d="M213,100L211,102L208,101L204,98L202,98L194,103L192,106L183,112L177,119L178,120L174,121L175,125L167,128L167,128L167,128L170,130L171,136L174,138L176,142L177,143L177,143L180,141L182,141L191,142L192,138L196,133L201,132L207,127L216,126L215,120L211,113L211,111L214,106L217,102L215,100L214,99L213,100Z " data-fips="SA08" data-fips-="" data-iso3="SAU" data-name="Al Quassim"/><path d="M216,94L211,90L205,89L201,81L200,80L197,82L191,81L189,78L185,78L181,75L175,74L170,74L164,73L156,75L155,75L153,74L153,74L147,76L141,79L139,80L133,83L131,85L131,85L138,87L143,92L144,98L148,101L143,110L143,110L143,111L142,114L145,116L144,121L145,126L145,131L154,131L157,128L161,127L165,128L167,128L167,128L175,125L174,121L178,120L177,119L183,112L192,106L194,103L202,98L204,98L208,101L211,102L213,100L214,99L214,99L214,97L214,96L215,95L216,94L216,94Z " data-fips="SA13" data-fips-="" data-iso3="SAU" data-name="Ha'il"/><path d="M71,72L70,78L67,84L76,86L75,86L80,95L82,98L84,102L87,106L94,118L96,120L96,122L97,124L102,129L104,135L104,139L105,143L106,144L109,142L116,139L115,129L114,129L112,124L109,120L106,118L105,119L104,113L104,110L102,109L99,100L104,97L109,99L112,97L115,102L122,107L123,106L128,107L133,109L135,110L141,109L142,109L143,110L143,110L148,101L144,98L143,92L138,87L131,85L131,85L130,84L126,85L125,84L118,83L115,82L113,80L113,73L108,78L100,76L94,78L90,72L88,71L81,70L78,71L71,71L71,72Z " data-fips="SA19" data-fips-="" data-iso3="SAU" data-name="Tabuk"/><path d="M117,25L115,32L120,39L134,38L144,40L148,42L159,43L162,45L167,46L169,48L173,52L171,55L159,62L156,65L156,72L153,74L155,75L156,75L164,73L170,74L175,74L181,75L185,78L189,78L191,81L197,82L200,80L201,81L205,89L211,90L216,94L216,94L216,94L217,95L218,95L219,94L219,94L222,86L227,76L230,72L239,67L238,68L214,66L201,57L185,45L175,36L151,22L134,19L131,21L117,25Z " data-fips="SA15" data-fips-="" data-iso3="SAU" data-name="Al Hudud ash Shamaliyah"/><path d="M117,25L103,29L117,46L109,54L99,56L95,62L89,67L72,64L71,71L71,71L78,71L81,70L88,71L90,72L94,78L100,76L108,78L113,73L113,80L115,82L118,83L125,84L126,85L130,84L131,85L133,83L139,80L141,79L147,76L153,74L153,74L156,72L156,65L159,62L171,55L173,52L169,48L167,46L162,45L159,43L148,42L144,40L134,38L120,39L115,32L117,25L117,25Z " data-fips="SA03" data-fips-="SA20" data-iso3="SAU" data-name="Al Jawf"/><path d="M176,209L169,210L168,208L165,208L164,214L162,216L160,217L158,219L161,222L161,227L165,231L167,230L169,224L172,224L172,223L174,220L175,217L177,215L176,212L177,210L176,209Z " data-fips="SA02" data-fips-="" data-iso3="SAU" data-name="Al Bahah"/><path d="M216,227L210,221L207,217L208,210L205,205L202,203L201,204L191,206L187,209L181,214L179,213L177,210L177,210L176,212L177,215L175,217L174,220L172,223L173,223L175,225L174,227L175,230L173,233L168,234L167,238L173,241L174,246L174,248L175,248L176,252L178,252L181,255L188,258L189,255L192,253L192,255L197,259L199,261L199,261L202,261L203,262L203,262L204,253L204,248L211,240L214,239L215,236L214,233L216,229L216,227L216,227Z " data-fips="SA11" data-fips-="" data-iso3="SAU" data-name="`Asir"/><path d="M176,274L175,272L174,273L177,275L180,277L180,274L176,274Z M177,271L175,271L176,273L177,271Z M174,248L173,249L173,249L172,250L171,251L171,251L174,255L182,262L183,269L184,267L189,274L190,278L195,276L197,273L195,271L196,266L197,265L198,262L199,261L197,259L192,255L192,253L189,255L188,258L181,255L178,252L176,252L175,248L174,248Z " data-fips="SA17" data-fips-="" data-iso3="SAU" data-name="Jizan"/><path d="M174,154L172,159L165,164L167,166L156,177L151,177L148,179L145,170L142,168L137,169L129,163L125,163L126,164L130,172L129,173L131,177L131,182L130,189L133,196L131,198L135,205L142,214L149,217L152,220L156,224L157,224L158,227L164,235L164,237L165,239L165,242L171,251L171,251L172,250L173,249L173,249L174,248L174,246L173,241L167,238L168,234L173,233L175,230L174,227L175,225L173,223L172,223L172,224L169,224L167,230L165,231L161,227L161,222L158,219L160,217L162,216L164,214L165,208L168,208L169,210L176,209L177,210L177,210L179,213L181,214L187,209L191,206L201,204L202,203L198,197L200,187L199,181L199,178L192,177L192,173L189,171L186,171L182,170L180,165L178,159L176,156L176,154L174,154Z " data-fips="SA14" data-fips-="" data-iso3="SAU" data-name="Makkah"/><path d="M265,225L228,231L224,231L221,230L216,227L216,229L214,233L215,236L214,239L211,240L204,248L204,253L203,262L204,263L208,264L209,263L219,261L228,261L232,263L246,264L260,268L264,265L264,265L267,225L265,225Z " data-fips="SA16" data-fips-="" data-iso3="SAU" data-name="Najran"/><path d="M269,192L272,156L269,146L258,137L257,115L256,113L251,111L246,108L244,108L236,105L234,105L229,101L223,99L219,94L219,94L218,95L217,95L216,94L216,94L215,95L214,96L214,97L214,99L214,99L215,100L217,102L214,106L211,111L211,113L215,120L216,126L207,127L201,132L196,133L192,138L191,142L182,141L180,141L177,143L177,143L177,144L176,148L176,153L176,154L176,156L178,159L180,165L182,170L186,171L189,171L192,173L192,177L199,178L199,181L200,187L198,197L202,203L205,205L208,210L207,217L210,221L216,227L216,227L221,230L224,231L228,231L265,225L267,225L269,192Z " data-fips="SA10" data-fips-="" data-iso3="SAU" data-name="Ar Riyad"/><path d="M239,67L230,72L227,76L222,86L219,94L219,94L219,94L223,99L229,101L234,105L236,105L244,108L246,108L251,111L256,113L257,115L258,137L269,146L272,156L269,192L267,225L264,265L264,265L266,259L274,247L289,239L333,229L382,189L385,173L377,163L337,163L320,145L320,142L316,141L318,138L316,138L310,137L304,130L302,124L295,115L294,115L294,112L297,113L296,108L295,107L293,104L295,104L286,97L283,96L282,92L280,90L274,87L276,86L271,81L269,75L257,75L254,68L240,67L239,67Z " data-fips="SA06" data-fips-="" data-iso3="SAU" data-name="Ash Sharqiyah"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SDN.svg b/plugins/UserCountryMap/svg/SDN.svg
index 579148ce6f..decf7b25cf 100644
--- a/plugins/UserCountryMap/svg/SDN.svg
+++ b/plugins/UserCountryMap/svg/SDN.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.0942972887" lon0="34.053577784"/><bbox h="189.28" w="224.76" x="840.9" y="850.61"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M108,280L106,280L97,278L97,275L95,272L98,267L99,257L97,253L92,245L86,238L85,235L84,235L78,234L69,237L64,240L63,243L56,252L54,253L49,258L44,263L36,269L30,268L28,269L9,271L12,277L8,281L0,288L0,299L129,299L121,291L119,290L111,288L109,286L109,281L108,280Z " data-iso="CAF"/><path d="M450,218L446,222L446,224L447,236L448,237L450,218Z " data-iso="DJI"/><path d="M134,21L141,21L176,22L197,23L248,23L250,20L251,24L284,24L314,24L350,23L350,23L349,22L342,16L338,11L332,9L328,5L326,0L135,0L135,12L134,16L134,21Z " data-iso="EGY"/><path d="M413,145L413,143L410,142L410,147L418,147L413,145Z M383,101L380,104L377,109L373,110L367,112L363,115L362,118L354,120L352,128L352,134L345,155L343,157L345,169L346,174L346,174L353,174L358,170L365,176L371,162L373,164L377,166L380,170L383,170L389,169L394,166L396,169L402,168L406,169L426,175L433,183L437,187L445,193L450,200L450,183L443,178L433,166L426,163L423,161L415,158L412,154L411,152L407,151L407,156L401,148L400,144L397,141L396,136L394,125L389,112L383,101Z " data-iso="ERI"/><path d="M346,174L344,179L339,197L338,204L330,206L328,208L322,219L316,232L315,239L309,240L303,247L301,259L299,267L299,268L299,269L300,285L297,288L284,288L279,299L450,299L448,237L447,236L446,224L446,222L450,218L450,200L445,193L437,187L433,183L426,175L406,169L402,168L396,169L394,166L389,169L383,170L380,170L377,166L373,164L371,162L365,176L358,170L353,174L346,174L346,174Z M360,222L357,221L356,221L355,220L355,215L356,214L357,213L360,214L361,213L364,212L364,212L366,216L366,218L364,221L363,223L362,225L361,224L361,224L360,222Z " data-iso="ETH"/><path d="M113,69L114,66L114,59L132,59L134,30L134,21L134,16L135,12L135,0L1,0L38,23L46,28L105,64L113,69Z " data-iso="LBY"/><path d="M450,124L448,122L446,124L446,120L443,123L450,127L450,124Z M384,0L387,6L389,11L390,15L388,25L392,32L391,36L394,43L406,56L409,56L417,61L419,64L422,66L429,79L432,86L435,91L442,102L450,108L450,0L384,0Z " data-iso="SAU"/><path d="M134,21L134,30L132,59L114,59L114,66L113,69L113,77L110,141L110,142L94,142L90,145L90,152L85,157L79,164L81,172L73,177L75,188L67,197L67,198L77,201L78,203L79,211L80,214L80,220L81,224L86,227L86,233L85,235L86,238L92,245L97,253L99,257L98,267L95,272L97,275L97,278L106,280L108,280L108,280L108,280L111,278L116,276L118,270L118,267L121,264L122,258L131,249L141,247L143,252L148,256L155,265L157,266L165,263L179,264L183,269L199,270L199,267L204,263L211,261L213,258L213,255L221,251L230,257L236,262L244,261L253,253L258,244L267,237L266,233L266,224L261,218L274,218L283,214L280,226L282,241L287,247L296,253L297,260L296,263L299,268L299,268L299,268L299,267L301,259L303,247L309,240L315,239L316,232L322,219L328,208L330,206L338,204L339,197L344,179L346,174L345,169L343,157L345,155L352,134L352,128L354,120L362,118L363,115L367,112L373,110L377,109L380,104L383,101L383,99L378,97L362,85L360,80L358,70L358,66L356,60L357,51L356,48L355,41L356,39L351,31L350,28L350,23L314,24L284,24L251,24L250,20L248,23L197,23L176,22L141,21L134,21Z " data-iso="SDN"/><path d="M299,268L299,268L299,268L296,263L297,260L296,253L287,247L282,241L280,226L283,214L274,218L261,218L266,224L266,233L267,237L258,244L253,253L244,261L236,262L230,257L221,251L213,255L213,258L211,261L204,263L199,267L199,270L183,269L179,264L165,263L157,266L155,265L148,256L143,252L141,247L131,249L122,258L121,264L118,267L118,270L116,276L111,278L108,280L108,280L108,280L109,281L109,286L111,288L119,290L121,291L129,299L279,299L284,288L297,288L300,285L299,269L299,268Z " data-iso="SDS"/><path d="M85,235L86,233L86,227L81,224L80,220L80,214L79,211L78,203L77,201L67,198L67,197L75,188L73,177L81,172L79,164L85,157L90,152L90,145L94,142L110,142L110,141L113,77L113,69L105,64L46,28L38,23L1,0L0,0L0,288L8,281L12,277L9,271L28,269L30,268L36,269L44,263L49,258L54,253L56,252L63,243L64,240L69,237L78,234L84,235L85,235Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M283,214L283,216L280,226L282,241L288,247L296,254L297,260L296,263L296,268L299,266L302,257L304,252L303,246L306,242L308,240L313,244L316,241L315,238L317,235L316,232L318,227L319,221L320,221L319,220L313,213L307,205L302,205L288,214L283,214L283,214Z " data-fips="SU42" data-fips-="SU04" data-iso3="SDN" data-name="Blue Nile"/><path d="M283,24L290,29L285,33L286,39L285,39L285,45L289,48L292,53L291,63L292,69L291,73L300,94L311,99L314,103L317,107L319,111L329,117L335,121L336,121L353,119L353,119L361,120L363,117L363,114L367,113L368,111L376,110L383,99L377,96L378,95L374,94L367,87L363,87L358,71L358,66L356,61L356,53L357,53L354,39L355,37L352,34L350,23L283,24Z " data-fips="EG02" data-fips-="SU08" data-iso3="SDN" data-name="Red Sea"/><path d="M87,229L97,225L111,217L113,214L112,211L109,204L120,194L116,194L115,193L118,185L116,185L110,188L108,188L99,184L101,178L107,172L112,165L111,159L109,149L110,142L110,142L105,142L95,142L93,142L90,145L91,148L84,158L85,161L79,163L80,168L82,172L75,175L72,179L75,183L75,189L69,193L69,201L76,201L78,202L77,205L79,211L78,213L80,213L79,221L82,224L86,226L87,229L87,229Z " data-fips="SU47" data-fips-="SU07" data-iso3="SDN" data-name="West Darfur"/><path d="M120,194L109,204L112,211L113,214L111,217L97,225L87,229L87,230L85,236L88,240L93,245L99,257L100,261L97,269L95,270L95,273L97,275L102,279L109,280L110,278L116,276L116,274L118,271L119,267L121,264L123,257L125,255L127,249L128,249L140,247L142,248L143,251L146,256L148,256L155,265L157,266L165,263L180,264L180,264L176,255L176,253L170,236L169,230L168,228L169,223L168,220L165,220L156,219L153,216L149,216L146,212L141,201L138,199L134,196L126,195L120,194Z " data-fips="SU49" data-fips-="SU07" data-iso3="SDN" data-name="South Darfur"/><path d="M299,140L291,141L288,140L279,138L272,134L262,132L258,128L258,127L257,127L253,130L258,140L260,144L264,151L265,152L266,156L266,156L268,156L270,156L272,156L272,156L276,154L285,152L289,151L290,150L292,147L294,146L298,148L305,149L302,143L302,141L301,140L299,140Z " data-fips="SU29" data-fips-="SU03" data-iso3="SDN" data-name="Khartoum"/><path d="M297,178L296,176L303,165L298,157L291,153L289,151L285,152L276,154L272,156L272,156L272,157L270,159L273,162L273,166L268,173L269,178L273,188L275,186L275,185L279,184L281,179L283,178L286,181L287,181L291,177L297,179L297,179L297,178Z " data-fips="SU38" data-fips-="SU04" data-iso3="SDN" data-name="Gezira"/><path d="M305,149L298,148L294,146L292,147L290,150L289,151L291,153L298,157L303,165L296,176L297,178L297,179L298,179L299,182L304,190L313,196L316,199L320,201L330,205L330,205L337,204L338,205L340,192L344,183L346,174L344,164L326,167L323,167L319,162L316,155L315,154L307,149L305,149Z " data-fips="SU39" data-fips-="SU08" data-iso3="SDN" data-name="Gedarif"/><path d="M329,117L319,111L317,107L314,103L311,99L300,94L291,73L292,69L291,63L292,53L289,48L285,45L285,39L286,39L285,33L290,29L283,24L282,24L271,24L264,84L271,96L273,104L271,108L258,127L258,128L262,132L272,134L279,138L288,140L291,141L299,140L301,140L302,139L307,132L327,129L328,128L329,124L329,117Z " data-fips="SU53" data-fips-="SU05" data-iso3="SDN" data-name="River Nile"/><path d="M132,59L133,60L178,61L176,126L243,129L249,129L250,129L253,130L257,127L258,127L271,108L273,104L271,96L264,84L271,24L252,24L251,24L250,20L248,23L134,21L132,59Z " data-fips="SU43" data-fips-="SU05" data-iso3="SDN" data-name="Northern"/><path d="M270,156L268,156L266,156L266,156L260,158L257,161L255,166L252,167L251,175L251,177L255,182L258,188L259,188L261,194L254,199L253,200L254,207L255,213L257,214L261,218L274,218L274,214L274,214L283,214L280,205L280,200L277,195L276,187L275,186L273,188L269,178L268,173L273,166L273,162L270,159L272,157L272,156L270,156Z " data-fips="SU41" data-fips-="SU04" data-iso3="SDN" data-name="White Nile"/><path d="M275,186L276,187L277,195L280,200L280,205L283,214L283,214L288,214L302,205L307,205L313,213L319,220L320,221L321,220L324,215L325,213L330,205L330,205L320,201L316,199L313,196L304,190L299,182L298,179L297,179L297,179L291,177L287,181L286,181L283,178L281,179L279,184L275,185L275,186Z " data-fips="SU58" data-fips-="" data-iso3="SDN" data-name="Sennar"/><path d="M132,59L132,60L114,59L113,69L110,142L109,149L111,159L112,165L107,172L101,178L99,184L108,188L110,188L116,185L118,185L115,193L116,194L120,194L126,195L134,196L138,199L141,201L146,212L149,216L153,216L156,219L165,220L168,220L167,218L166,216L165,215L166,212L166,212L165,209L165,209L165,209L165,209L166,207L168,198L171,195L174,188L175,185L174,183L175,178L170,163L168,161L165,126L176,126L176,126L178,61L133,60L132,59L132,59Z " data-fips="SU55" data-fips-="SU07" data-iso3="SDN" data-name="North Darfur"/><path d="M212,212L212,212L207,212L202,208L196,216L195,218L189,219L184,218L180,225L174,230L169,229L168,228L169,230L170,236L176,253L176,253L176,255L179,261L180,264L182,268L183,269L199,270L200,266L204,263L211,261L214,258L214,256L221,252L230,257L236,262L245,261L253,253L258,244L267,237L267,233L266,224L261,218L257,214L255,213L254,207L250,205L244,206L236,213L234,213L231,209L228,208L222,207L222,205L220,203L212,212L212,212Z " data-fips="SU50" data-fips-="SU09" data-iso3="SDN" data-name="South Kordufan"/><path d="M176,126L165,126L168,161L170,163L175,178L174,183L175,185L174,188L171,195L168,198L166,207L165,209L165,209L165,209L165,209L166,212L166,212L165,215L166,216L167,218L168,220L169,223L168,228L169,229L174,230L180,225L184,218L189,219L195,218L196,216L202,208L207,212L212,212L212,212L212,212L220,203L222,205L222,207L228,208L231,209L234,213L236,213L244,206L250,205L254,207L253,200L254,199L261,194L259,188L258,188L255,182L251,177L251,175L252,167L255,166L257,161L260,158L266,156L265,152L264,151L260,144L258,140L253,130L250,129L249,129L243,129L176,126L176,126Z " data-fips="SU56" data-fips-="SU09" data-iso3="SDN" data-name="North Kordufan"/><path d="M329,117L329,124L328,128L327,129L307,132L302,139L301,140L302,141L302,143L305,149L307,149L315,154L316,155L319,162L323,167L326,167L344,164L343,157L347,149L348,146L350,143L353,132L352,130L354,125L353,119L353,119L336,121L335,121L329,117Z " data-fips="SU52" data-fips-="SU08" data-iso3="SDN" data-name="Kassala"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="11.0942972887" lon0="34.053577784"/><bbox h="189.28" w="224.76" x="840.9" y="850.61"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M108,280L106,280L97,278L97,275L95,272L98,267L99,257L97,253L92,245L86,238L85,235L84,235L78,234L69,237L64,240L63,243L56,252L54,253L49,258L44,263L36,269L30,268L28,269L9,271L12,277L8,281L0,288L0,299L129,299L121,291L119,290L111,288L109,286L109,281L108,280Z " data-iso="CAF"/><path d="M450,218L446,222L446,224L447,236L448,237L450,218Z " data-iso="DJI"/><path d="M134,21L141,21L176,22L197,23L248,23L250,20L251,24L284,24L314,24L350,23L350,23L349,22L342,16L338,11L332,9L328,5L326,0L135,0L135,12L134,16L134,21Z " data-iso="EGY"/><path d="M413,145L413,143L410,142L410,147L418,147L413,145Z M383,101L380,104L377,109L373,110L367,112L363,115L362,118L354,120L352,128L352,134L345,155L343,157L345,169L346,174L346,174L353,174L358,170L365,176L371,162L373,164L377,166L380,170L383,170L389,169L394,166L396,169L402,168L406,169L426,175L433,183L437,187L445,193L450,200L450,183L443,178L433,166L426,163L423,161L415,158L412,154L411,152L407,151L407,156L401,148L400,144L397,141L396,136L394,125L389,112L383,101Z " data-iso="ERI"/><path d="M346,174L344,179L339,197L338,204L330,206L328,208L322,219L316,232L315,239L309,240L303,247L301,259L299,267L299,268L299,269L300,285L297,288L284,288L279,299L450,299L448,237L447,236L446,224L446,222L450,218L450,200L445,193L437,187L433,183L426,175L406,169L402,168L396,169L394,166L389,169L383,170L380,170L377,166L373,164L371,162L365,176L358,170L353,174L346,174L346,174Z M360,222L357,221L356,221L355,220L355,215L356,214L357,213L360,214L361,213L364,212L364,212L366,216L366,218L364,221L363,223L362,225L361,224L361,224L360,222Z " data-iso="ETH"/><path d="M113,69L114,66L114,59L132,59L134,30L134,21L134,16L135,12L135,0L1,0L38,23L46,28L105,64L113,69Z " data-iso="LBY"/><path d="M450,124L448,122L446,124L446,120L443,123L450,127L450,124Z M384,0L387,6L389,11L390,15L388,25L392,32L391,36L394,43L406,56L409,56L417,61L419,64L422,66L429,79L432,86L435,91L442,102L450,108L450,0L384,0Z " data-iso="SAU"/><path d="M134,21L134,30L132,59L114,59L114,66L113,69L113,77L110,141L110,142L94,142L90,145L90,152L85,157L79,164L81,172L73,177L75,188L67,197L67,198L77,201L78,203L79,211L80,214L80,220L81,224L86,227L86,233L85,235L86,238L92,245L97,253L99,257L98,267L95,272L97,275L97,278L106,280L108,280L108,280L108,280L111,278L116,276L118,270L118,267L121,264L122,258L131,249L141,247L143,252L148,256L155,265L157,266L165,263L179,264L183,269L199,270L199,267L204,263L211,261L213,258L213,255L221,251L230,257L236,262L244,261L253,253L258,244L267,237L266,233L266,224L261,218L274,218L283,214L280,226L282,241L287,247L296,253L297,260L296,263L299,268L299,268L299,268L299,267L301,259L303,247L309,240L315,239L316,232L322,219L328,208L330,206L338,204L339,197L344,179L346,174L345,169L343,157L345,155L352,134L352,128L354,120L362,118L363,115L367,112L373,110L377,109L380,104L383,101L383,99L378,97L362,85L360,80L358,70L358,66L356,60L357,51L356,48L355,41L356,39L351,31L350,28L350,23L314,24L284,24L251,24L250,20L248,23L197,23L176,22L141,21L134,21Z " data-iso="SDN"/><path d="M299,268L299,268L299,268L296,263L297,260L296,253L287,247L282,241L280,226L283,214L274,218L261,218L266,224L266,233L267,237L258,244L253,253L244,261L236,262L230,257L221,251L213,255L213,258L211,261L204,263L199,267L199,270L183,269L179,264L165,263L157,266L155,265L148,256L143,252L141,247L131,249L122,258L121,264L118,267L118,270L116,276L111,278L108,280L108,280L108,280L109,281L109,286L111,288L119,290L121,291L129,299L279,299L284,288L297,288L300,285L299,269L299,268Z " data-iso="SSD"/><path d="M85,235L86,233L86,227L81,224L80,220L80,214L79,211L78,203L77,201L67,198L67,197L75,188L73,177L81,172L79,164L85,157L90,152L90,145L94,142L110,142L110,141L113,77L113,69L105,64L46,28L38,23L1,0L0,0L0,288L8,281L12,277L9,271L28,269L30,268L36,269L44,263L49,258L54,253L56,252L63,243L64,240L69,237L78,234L84,235L85,235Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M283,214L283,216L280,226L282,241L288,247L296,254L297,260L296,263L296,268L299,266L302,257L304,252L303,246L306,242L308,240L313,244L316,241L315,238L317,235L316,232L318,227L319,221L320,221L319,220L313,213L307,205L302,205L288,214L283,214L283,214Z " data-fips="SU42" data-fips-="SU04" data-iso3="SDN" data-name="Blue Nile"/><path d="M283,24L290,29L285,33L286,39L285,39L285,45L289,48L292,53L291,63L292,69L291,73L300,94L311,99L314,103L317,107L319,111L329,117L335,121L336,121L353,119L353,119L361,120L363,117L363,114L367,113L368,111L376,110L383,99L377,96L378,95L374,94L367,87L363,87L358,71L358,66L356,61L356,53L357,53L354,39L355,37L352,34L350,23L283,24Z " data-fips="EG02" data-fips-="SU08" data-iso3="SDN" data-name="Red Sea"/><path d="M87,229L97,225L111,217L113,214L112,211L109,204L120,194L116,194L115,193L118,185L116,185L110,188L108,188L99,184L101,178L107,172L112,165L111,159L109,149L110,142L110,142L105,142L95,142L93,142L90,145L91,148L84,158L85,161L79,163L80,168L82,172L75,175L72,179L75,183L75,189L69,193L69,201L76,201L78,202L77,205L79,211L78,213L80,213L79,221L82,224L86,226L87,229L87,229Z " data-fips="SU47" data-fips-="SU07" data-iso3="SDN" data-name="West Darfur"/><path d="M120,194L109,204L112,211L113,214L111,217L97,225L87,229L87,230L85,236L88,240L93,245L99,257L100,261L97,269L95,270L95,273L97,275L102,279L109,280L110,278L116,276L116,274L118,271L119,267L121,264L123,257L125,255L127,249L128,249L140,247L142,248L143,251L146,256L148,256L155,265L157,266L165,263L180,264L180,264L176,255L176,253L170,236L169,230L168,228L169,223L168,220L165,220L156,219L153,216L149,216L146,212L141,201L138,199L134,196L126,195L120,194Z " data-fips="SU49" data-fips-="SU07" data-iso3="SDN" data-name="South Darfur"/><path d="M299,140L291,141L288,140L279,138L272,134L262,132L258,128L258,127L257,127L253,130L258,140L260,144L264,151L265,152L266,156L266,156L268,156L270,156L272,156L272,156L276,154L285,152L289,151L290,150L292,147L294,146L298,148L305,149L302,143L302,141L301,140L299,140Z " data-fips="SU29" data-fips-="SU03" data-iso3="SDN" data-name="Khartoum"/><path d="M297,178L296,176L303,165L298,157L291,153L289,151L285,152L276,154L272,156L272,156L272,157L270,159L273,162L273,166L268,173L269,178L273,188L275,186L275,185L279,184L281,179L283,178L286,181L287,181L291,177L297,179L297,179L297,178Z " data-fips="SU38" data-fips-="SU04" data-iso3="SDN" data-name="Gezira"/><path d="M305,149L298,148L294,146L292,147L290,150L289,151L291,153L298,157L303,165L296,176L297,178L297,179L298,179L299,182L304,190L313,196L316,199L320,201L330,205L330,205L337,204L338,205L340,192L344,183L346,174L344,164L326,167L323,167L319,162L316,155L315,154L307,149L305,149Z " data-fips="SU39" data-fips-="SU08" data-iso3="SDN" data-name="Gedarif"/><path d="M329,117L319,111L317,107L314,103L311,99L300,94L291,73L292,69L291,63L292,53L289,48L285,45L285,39L286,39L285,33L290,29L283,24L282,24L271,24L264,84L271,96L273,104L271,108L258,127L258,128L262,132L272,134L279,138L288,140L291,141L299,140L301,140L302,139L307,132L327,129L328,128L329,124L329,117Z " data-fips="SU53" data-fips-="SU05" data-iso3="SDN" data-name="River Nile"/><path d="M132,59L133,60L178,61L176,126L243,129L249,129L250,129L253,130L257,127L258,127L271,108L273,104L271,96L264,84L271,24L252,24L251,24L250,20L248,23L134,21L132,59Z " data-fips="SU43" data-fips-="SU05" data-iso3="SDN" data-name="Northern"/><path d="M270,156L268,156L266,156L266,156L260,158L257,161L255,166L252,167L251,175L251,177L255,182L258,188L259,188L261,194L254,199L253,200L254,207L255,213L257,214L261,218L274,218L274,214L274,214L283,214L280,205L280,200L277,195L276,187L275,186L273,188L269,178L268,173L273,166L273,162L270,159L272,157L272,156L270,156Z " data-fips="SU41" data-fips-="SU04" data-iso3="SDN" data-name="White Nile"/><path d="M275,186L276,187L277,195L280,200L280,205L283,214L283,214L288,214L302,205L307,205L313,213L319,220L320,221L321,220L324,215L325,213L330,205L330,205L320,201L316,199L313,196L304,190L299,182L298,179L297,179L297,179L291,177L287,181L286,181L283,178L281,179L279,184L275,185L275,186Z " data-fips="SU58" data-fips-="" data-iso3="SDN" data-name="Sennar"/><path d="M132,59L132,60L114,59L113,69L110,142L109,149L111,159L112,165L107,172L101,178L99,184L108,188L110,188L116,185L118,185L115,193L116,194L120,194L126,195L134,196L138,199L141,201L146,212L149,216L153,216L156,219L165,220L168,220L167,218L166,216L165,215L166,212L166,212L165,209L165,209L165,209L165,209L166,207L168,198L171,195L174,188L175,185L174,183L175,178L170,163L168,161L165,126L176,126L176,126L178,61L133,60L132,59L132,59Z " data-fips="SU55" data-fips-="SU07" data-iso3="SDN" data-name="North Darfur"/><path d="M212,212L212,212L207,212L202,208L196,216L195,218L189,219L184,218L180,225L174,230L169,229L168,228L169,230L170,236L176,253L176,253L176,255L179,261L180,264L182,268L183,269L199,270L200,266L204,263L211,261L214,258L214,256L221,252L230,257L236,262L245,261L253,253L258,244L267,237L267,233L266,224L261,218L257,214L255,213L254,207L250,205L244,206L236,213L234,213L231,209L228,208L222,207L222,205L220,203L212,212L212,212Z " data-fips="SU50" data-fips-="SU09" data-iso3="SDN" data-name="South Kordufan"/><path d="M176,126L165,126L168,161L170,163L175,178L174,183L175,185L174,188L171,195L168,198L166,207L165,209L165,209L165,209L165,209L166,212L166,212L165,215L166,216L167,218L168,220L169,223L168,228L169,229L174,230L180,225L184,218L189,219L195,218L196,216L202,208L207,212L212,212L212,212L212,212L220,203L222,205L222,207L228,208L231,209L234,213L236,213L244,206L250,205L254,207L253,200L254,199L261,194L259,188L258,188L255,182L251,177L251,175L252,167L255,166L257,161L260,158L266,156L265,152L264,151L260,144L258,140L253,130L250,129L249,129L243,129L176,126L176,126Z " data-fips="SU56" data-fips-="SU09" data-iso3="SDN" data-name="North Kordufan"/><path d="M329,117L329,124L328,128L327,129L307,132L302,139L301,140L302,141L302,143L305,149L307,149L315,154L316,155L319,162L323,167L326,167L344,164L343,157L347,149L348,146L350,143L353,132L352,130L354,125L353,119L353,119L336,121L335,121L329,117Z " data-fips="SU52" data-fips-="SU08" data-iso3="SDN" data-name="Kassala"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SOM.svg b/plugins/UserCountryMap/svg/SOM.svg
index 01fb4227bf..0b363e009e 100644
--- a/plugins/UserCountryMap/svg/SOM.svg
+++ b/plugins/UserCountryMap/svg/SOM.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="10.1594318711" lon0="49.9168483929"/><bbox h="183.18" w="144.43" x="881.5" y="969.67"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M152,1L150,4L144,13L141,16L140,31L142,31L155,29L161,31L162,31L165,27L167,24L169,21L167,20L155,21L160,16L165,14L170,12L172,7L171,4L169,0L161,0L158,3L154,0L153,1L152,1Z " data-iso="DJI"/><path d="M152,1L153,1L154,0L158,3L161,0L151,0L152,1Z " data-iso="ERI"/><path d="M7,138L7,138L17,141L18,142L17,152L21,158L23,159L44,164L63,177L73,178L91,182L97,176L98,174L101,172L117,166L124,172L126,173L136,172L139,172L140,171L142,169L157,166L164,159L173,155L182,153L200,155L204,150L221,133L257,98L262,93L255,93L242,93L241,92L183,72L175,65L173,64L168,56L167,54L160,47L157,39L162,32L162,31L161,31L155,29L142,31L140,31L141,16L144,13L150,4L152,1L151,0L16,0L6,20L5,28L2,31L0,29L0,123L2,126L2,130L5,136L7,137L7,138Z M52,12L49,10L48,11L47,9L47,4L48,3L49,2L52,3L53,2L56,1L57,2L58,5L58,7L57,9L56,11L55,12L54,15L52,14L53,13L52,12Z " data-iso="ETH"/><path d="M131,286L131,285L120,270L120,241L120,195L128,188L136,176L139,172L136,172L126,173L124,172L117,166L101,172L98,174L97,176L91,182L73,178L63,177L44,164L23,159L21,158L17,152L18,142L17,141L7,138L7,138L4,141L0,145L0,281L12,288L31,299L117,299L118,293L126,291L128,290L131,286Z " data-iso="KEN"/><path d="M0,0L0,29L2,31L5,28L6,20L16,0L0,0Z " data-iso="SDN"/><path d="M7,138L7,137L5,136L2,130L2,126L0,123L0,145L4,141L7,138Z " data-iso="SDS"/><path d="M281,27L276,26L263,30L247,30L242,34L234,37L232,38L219,35L210,39L202,43L191,43L181,36L176,31L173,24L169,21L167,24L165,27L162,31L162,32L157,39L160,47L167,54L168,56L173,64L175,65L183,72L241,92L242,93L255,93L262,93L265,88L278,68L281,64L281,27L281,27Z " data-iso="SOL"/><path d="M133,284L140,272L170,240L175,236L182,231L188,225L200,217L218,207L223,204L239,188L252,174L262,163L267,154L275,143L283,130L284,125L287,118L289,113L297,100L299,94L304,89L311,76L315,71L319,64L320,48L326,44L323,44L325,39L324,26L327,16L318,13L315,14L311,18L304,22L295,23L290,26L284,27L281,27L281,64L278,68L265,88L262,93L257,98L221,133L204,150L200,155L182,153L173,155L164,159L157,166L142,169L140,171L139,172L136,176L128,188L120,195L120,241L120,270L131,285L131,286L133,284Z " data-iso="SOM"/><path d="M0,299L31,299L12,288L0,281L0,299Z " data-iso="TZA"/><path d="M369,0L367,1L375,6L383,5L391,1L389,0L369,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M307,85L312,74L314,72L319,64L319,57L320,55L320,51L327,45L330,45L329,43L323,44L325,41L325,39L325,30L324,29L327,19L327,18L321,14L318,13L313,15L307,21L293,24L290,26L281,28L281,58L281,61L284,61L284,70L284,75L286,77L291,81L296,81L298,82L299,86L301,84L303,84L306,86L307,85Z " data-fips="SO03" data-fips-="" data-iso3="SOM" data-name="Bari"/><path d="M181,153L172,155L164,159L161,162L159,165L159,166L163,174L164,175L164,179L170,181L173,180L176,176L181,174L185,176L188,185L187,186L190,188L194,187L195,188L197,188L197,179L198,176L195,165L194,154L181,153Z " data-fips="SO01" data-fips-="" data-iso3="SOM" data-name="Bakool"/><path d="M194,187L190,188L187,186L188,185L185,176L181,174L176,176L173,180L170,181L164,179L163,188L163,191L160,192L153,191L151,201L149,213L151,215L159,222L161,223L167,220L173,218L179,215L194,209L194,203L195,198L194,197L195,192L195,188L194,187Z " data-fips="SO04" data-fips-="" data-iso3="SOM" data-name="Bay"/><path d="M164,179L164,175L163,174L159,166L159,166L147,168L144,168L140,170L140,172L128,188L120,195L120,222L120,227L120,227L129,227L134,213L149,213L151,201L153,191L160,192L163,191L163,188L164,179Z " data-fips="SO06" data-fips-="" data-iso3="SOM" data-name="Gedo"/><path d="M159,222L151,215L149,213L134,213L129,227L145,226L149,226L153,238L155,246L165,246L167,245L170,240L171,239L171,239L168,234L166,232L161,223L159,222Z " data-fips="SO08" data-fips-="" data-iso3="SOM" data-name="Jubbada Dhexe"/><path d="M197,188L195,188L195,192L194,197L195,198L194,203L194,209L179,215L173,218L167,220L161,223L166,232L168,234L171,239L171,239L174,237L188,225L192,222L201,216L206,214L207,213L207,213L209,210L208,210L208,199L204,192L203,188L197,188Z " data-fips="SO02" data-fips-="SO14|" data-iso3="SOM" data-name="Shabeellaha Hoose"/><path d="M214,210L214,210L211,210L209,210L207,213L207,213L214,210Z " data-fips="SO02" data-fips-="" data-iso3="SOM" data-name="Banaadir"/><path d="M231,123L221,133L212,142L216,151L223,152L227,151L226,154L224,158L225,165L230,169L230,175L243,184L243,184L246,180L249,178L252,175L253,172L259,167L252,164L254,149L251,142L249,138L254,127L231,122L231,123Z " data-fips="SO05" data-fips-="" data-iso3="SOM" data-name="Galguduud"/><path d="M202,153L202,153L201,155L200,155L194,154L195,165L198,176L197,179L197,188L203,188L205,189L207,189L220,188L222,183L223,182L230,175L230,169L225,165L224,158L226,154L227,151L223,152L216,151L212,142L202,153Z " data-fips="SO07" data-fips-="" data-iso3="SOM" data-name="Hiiraan"/><path d="M230,175L223,182L222,183L220,188L207,189L205,189L203,188L204,192L208,199L208,210L209,210L211,210L214,210L214,210L216,208L218,207L226,200L227,199L234,193L242,185L243,184L243,184L230,175Z " data-fips="SO13" data-fips-="" data-iso3="SOM" data-name="Shabeellaha Dhexe"/><path d="M231,122L254,127L249,138L251,142L254,149L252,164L259,167L261,164L263,161L266,155L271,149L279,137L284,127L284,125L290,113L294,107L295,105L292,102L286,99L283,99L272,105L253,102L231,122Z " data-fips="SO10" data-fips-="" data-iso3="SOM" data-name="Mudug"/><path d="M281,64L270,80L267,86L262,93L253,102L272,105L283,99L286,99L292,102L295,105L297,101L298,95L301,92L305,87L306,86L303,84L301,84L299,86L298,82L296,81L291,81L286,77L284,75L284,70L284,61L281,61L281,64Z " data-fips="SO18" data-fips-="SO11|" data-iso3="SOM" data-name="Nugaal"/><path d="M129,227L120,227L120,227L120,232L120,270L131,285L133,284L137,277L140,274L140,272L144,268L149,262L156,255L163,248L165,246L155,246L153,238L149,226L145,226L129,227Z " data-fips="SO09" data-fips-="" data-iso3="SOM" data-name="Jubbada Hoose"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="10.1594318711" lon0="49.9168483929"/><bbox h="183.18" w="144.43" x="881.5" y="969.67"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M152,1L150,4L144,13L141,16L140,31L142,31L155,29L161,31L162,31L165,27L167,24L169,21L167,20L155,21L160,16L165,14L170,12L172,7L171,4L169,0L161,0L158,3L154,0L153,1L152,1Z " data-iso="DJI"/><path d="M152,1L153,1L154,0L158,3L161,0L151,0L152,1Z " data-iso="ERI"/><path d="M7,138L7,138L17,141L18,142L17,152L21,158L23,159L44,164L63,177L73,178L91,182L97,176L98,174L101,172L117,166L124,172L126,173L136,172L139,172L140,171L142,169L157,166L164,159L173,155L182,153L200,155L204,150L221,133L257,98L262,93L255,93L242,93L241,92L183,72L175,65L173,64L168,56L167,54L160,47L157,39L162,32L162,31L161,31L155,29L142,31L140,31L141,16L144,13L150,4L152,1L151,0L16,0L6,20L5,28L2,31L0,29L0,123L2,126L2,130L5,136L7,137L7,138Z M52,12L49,10L48,11L47,9L47,4L48,3L49,2L52,3L53,2L56,1L57,2L58,5L58,7L57,9L56,11L55,12L54,15L52,14L53,13L52,12Z " data-iso="ETH"/><path d="M131,286L131,285L120,270L120,241L120,195L128,188L136,176L139,172L136,172L126,173L124,172L117,166L101,172L98,174L97,176L91,182L73,178L63,177L44,164L23,159L21,158L17,152L18,142L17,141L7,138L7,138L4,141L0,145L0,281L12,288L31,299L117,299L118,293L126,291L128,290L131,286Z " data-iso="KEN"/><path d="M0,0L0,29L2,31L5,28L6,20L16,0L0,0Z " data-iso="SDN"/><path d="M7,138L7,137L5,136L2,130L2,126L0,123L0,145L4,141L7,138Z " data-iso="SSD"/><path d="M281,27L276,26L263,30L247,30L242,34L234,37L232,38L219,35L210,39L202,43L191,43L181,36L176,31L173,24L169,21L167,24L165,27L162,31L162,32L157,39L160,47L167,54L168,56L173,64L175,65L183,72L241,92L242,93L255,93L262,93L265,88L278,68L281,64L281,27L281,27Z " data-iso="SOL"/><path d="M133,284L140,272L170,240L175,236L182,231L188,225L200,217L218,207L223,204L239,188L252,174L262,163L267,154L275,143L283,130L284,125L287,118L289,113L297,100L299,94L304,89L311,76L315,71L319,64L320,48L326,44L323,44L325,39L324,26L327,16L318,13L315,14L311,18L304,22L295,23L290,26L284,27L281,27L281,64L278,68L265,88L262,93L257,98L221,133L204,150L200,155L182,153L173,155L164,159L157,166L142,169L140,171L139,172L136,176L128,188L120,195L120,241L120,270L131,285L131,286L133,284Z " data-iso="SOM"/><path d="M0,299L31,299L12,288L0,281L0,299Z " data-iso="TZA"/><path d="M369,0L367,1L375,6L383,5L391,1L389,0L369,0Z " data-iso="YEM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M307,85L312,74L314,72L319,64L319,57L320,55L320,51L327,45L330,45L329,43L323,44L325,41L325,39L325,30L324,29L327,19L327,18L321,14L318,13L313,15L307,21L293,24L290,26L281,28L281,58L281,61L284,61L284,70L284,75L286,77L291,81L296,81L298,82L299,86L301,84L303,84L306,86L307,85Z " data-fips="SO03" data-fips-="" data-iso3="SOM" data-name="Bari"/><path d="M181,153L172,155L164,159L161,162L159,165L159,166L163,174L164,175L164,179L170,181L173,180L176,176L181,174L185,176L188,185L187,186L190,188L194,187L195,188L197,188L197,179L198,176L195,165L194,154L181,153Z " data-fips="SO01" data-fips-="" data-iso3="SOM" data-name="Bakool"/><path d="M194,187L190,188L187,186L188,185L185,176L181,174L176,176L173,180L170,181L164,179L163,188L163,191L160,192L153,191L151,201L149,213L151,215L159,222L161,223L167,220L173,218L179,215L194,209L194,203L195,198L194,197L195,192L195,188L194,187Z " data-fips="SO04" data-fips-="" data-iso3="SOM" data-name="Bay"/><path d="M164,179L164,175L163,174L159,166L159,166L147,168L144,168L140,170L140,172L128,188L120,195L120,222L120,227L120,227L129,227L134,213L149,213L151,201L153,191L160,192L163,191L163,188L164,179Z " data-fips="SO06" data-fips-="" data-iso3="SOM" data-name="Gedo"/><path d="M159,222L151,215L149,213L134,213L129,227L145,226L149,226L153,238L155,246L165,246L167,245L170,240L171,239L171,239L168,234L166,232L161,223L159,222Z " data-fips="SO08" data-fips-="" data-iso3="SOM" data-name="Jubbada Dhexe"/><path d="M197,188L195,188L195,192L194,197L195,198L194,203L194,209L179,215L173,218L167,220L161,223L166,232L168,234L171,239L171,239L174,237L188,225L192,222L201,216L206,214L207,213L207,213L209,210L208,210L208,199L204,192L203,188L197,188Z " data-fips="SO02" data-fips-="SO14|" data-iso3="SOM" data-name="Shabeellaha Hoose"/><path d="M214,210L214,210L211,210L209,210L207,213L207,213L214,210Z " data-fips="SO02" data-fips-="" data-iso3="SOM" data-name="Banaadir"/><path d="M231,123L221,133L212,142L216,151L223,152L227,151L226,154L224,158L225,165L230,169L230,175L243,184L243,184L246,180L249,178L252,175L253,172L259,167L252,164L254,149L251,142L249,138L254,127L231,122L231,123Z " data-fips="SO05" data-fips-="" data-iso3="SOM" data-name="Galguduud"/><path d="M202,153L202,153L201,155L200,155L194,154L195,165L198,176L197,179L197,188L203,188L205,189L207,189L220,188L222,183L223,182L230,175L230,169L225,165L224,158L226,154L227,151L223,152L216,151L212,142L202,153Z " data-fips="SO07" data-fips-="" data-iso3="SOM" data-name="Hiiraan"/><path d="M230,175L223,182L222,183L220,188L207,189L205,189L203,188L204,192L208,199L208,210L209,210L211,210L214,210L214,210L216,208L218,207L226,200L227,199L234,193L242,185L243,184L243,184L230,175Z " data-fips="SO13" data-fips-="" data-iso3="SOM" data-name="Shabeellaha Dhexe"/><path d="M231,122L254,127L249,138L251,142L254,149L252,164L259,167L261,164L263,161L266,155L271,149L279,137L284,127L284,125L290,113L294,107L295,105L292,102L286,99L283,99L272,105L253,102L231,122Z " data-fips="SO10" data-fips-="" data-iso3="SOM" data-name="Mudug"/><path d="M281,64L270,80L267,86L262,93L253,102L272,105L283,99L286,99L292,102L295,105L297,101L298,95L301,92L305,87L306,86L303,84L301,84L299,86L298,82L296,81L291,81L286,77L284,75L284,70L284,61L281,61L281,64Z " data-fips="SO18" data-fips-="SO11|" data-iso3="SOM" data-name="Nugaal"/><path d="M129,227L120,227L120,227L120,232L120,270L131,285L133,284L137,277L140,274L140,272L144,268L149,262L156,255L163,248L165,246L155,246L153,238L149,226L145,226L129,227Z " data-fips="SO09" data-fips-="" data-iso3="SOM" data-name="Jubbada Hoose"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/SDS.svg b/plugins/UserCountryMap/svg/SSD.svg
index 96aa17db74..d1b200c150 100644
--- a/plugins/UserCountryMap/svg/SDS.svg
+++ b/plugins/UserCountryMap/svg/SSD.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="8.89771301939" lon0="26.9756629921"/><bbox h="124.47" w="153.08" x="956.95" y="950.23"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M157,232L155,230L153,227L152,217L148,212L137,206L133,205L131,203L128,197L125,192L126,187L118,180L117,177L113,174L98,166L92,159L94,156L92,152L87,147L82,142L79,140L66,137L63,135L63,132L64,128L63,127L62,126L59,125L48,124L44,122L44,118L42,115L42,113L46,108L46,106L47,92L44,86L36,73L27,63L25,59L24,59L14,57L3,61L0,63L0,258L10,260L12,258L16,251L23,243L27,242L36,245L39,245L47,241L52,240L66,235L70,235L79,237L86,235L88,236L98,227L102,226L121,230L134,233L141,233L146,230L149,229L157,232Z " data-iso="CAF"/><path d="M259,279L258,278L257,275L251,275L249,269L240,265L230,255L227,250L224,247L221,246L218,246L216,250L211,253L203,250L196,250L187,255L181,254L170,247L165,240L160,236L158,234L157,232L149,229L146,230L141,233L134,233L121,230L102,226L98,227L88,236L86,235L79,237L70,235L66,235L52,240L47,241L39,245L36,245L27,242L23,243L16,251L12,258L10,260L0,258L0,299L259,299L257,293L257,289L261,282L261,280L259,279Z " data-iso="COD"/><path d="M352,101L352,102L353,127L349,131L344,132L333,131L329,132L322,146L324,150L341,154L348,159L353,167L359,174L365,177L372,184L380,202L381,207L386,215L389,217L389,218L389,219L403,222L405,224L404,238L411,247L414,248L436,249L450,256L450,25L449,28L448,30L446,34L444,33L445,32L443,29L442,28L440,29L438,28L437,28L435,26L435,24L436,18L436,17L438,15L439,15L440,16L442,16L444,15L448,14L450,15L450,0L409,0L408,2L396,6L394,8L384,26L381,30L380,32L377,46L377,50L376,56L373,62L371,62L366,58L364,60L357,69L359,77L358,81L355,87L352,99L352,101Z " data-iso="ETH"/><path d="M389,218L384,223L363,244L357,250L352,256L356,266L366,274L364,280L366,288L368,289L370,295L375,299L450,299L450,256L436,249L414,248L411,247L404,238L405,224L403,222L389,219L389,218Z " data-iso="KEN"/><path d="M25,59L27,63L36,73L44,86L47,92L46,106L46,108L42,113L42,115L44,118L44,122L48,124L59,125L62,126L62,126L62,125L66,122L73,120L74,115L77,110L77,106L80,101L81,93L87,85L88,80L89,78L95,77L110,74L114,82L121,88L132,101L135,102L138,102L147,98L169,99L176,107L199,107L199,103L207,96L218,93L221,89L221,85L233,78L247,87L255,94L267,93L269,92L281,79L289,66L302,54L303,53L301,49L300,35L292,26L312,26L325,20L323,28L322,38L325,61L324,63L330,66L333,69L346,79L348,85L348,89L347,93L347,101L352,101L352,101L352,101L352,99L355,87L358,81L359,77L357,69L364,60L366,58L371,62L373,62L376,56L377,50L377,46L380,32L381,30L384,26L394,8L396,6L408,2L409,0L0,0L0,7L7,6L11,7L13,11L12,13L14,23L17,27L16,37L19,41L23,44L27,46L26,56L25,59Z " data-iso="SDN"/><path d="M62,126L62,126L63,127L64,128L63,132L63,135L66,137L79,140L82,142L87,147L92,152L94,156L92,159L98,166L113,174L117,177L118,180L126,187L125,192L128,197L131,203L133,205L137,206L148,212L152,217L153,227L155,230L157,232L158,234L160,236L165,240L170,247L181,254L187,255L196,250L203,250L211,253L216,250L218,246L221,246L224,247L227,250L230,255L240,265L249,269L251,275L257,275L258,278L259,279L260,278L268,270L270,270L280,274L287,270L292,275L298,278L299,275L303,272L318,270L323,267L327,270L337,271L345,264L352,256L357,250L363,244L384,223L389,218L389,217L386,215L381,207L380,202L372,184L365,177L359,174L353,167L348,159L341,154L324,150L322,146L329,132L333,131L344,132L349,131L353,127L352,102L352,101L352,101L352,101L347,101L347,93L348,89L348,85L346,79L333,69L330,66L324,63L325,61L322,38L323,28L325,20L312,26L292,26L300,35L301,49L303,53L302,54L289,66L281,79L269,92L267,93L255,94L247,87L233,78L221,85L221,89L218,93L207,96L199,103L199,107L176,107L169,99L147,98L138,102L135,102L132,101L121,88L114,82L110,74L95,77L89,78L88,80L87,85L81,93L80,101L77,106L77,110L74,115L73,120L66,122L62,125L62,126Z " data-iso="SDS"/><path d="M25,59L26,56L27,46L23,44L19,41L16,37L17,27L14,23L12,13L13,11L11,7L7,6L0,7L0,63L3,61L14,57L24,59L25,59Z " data-iso="TCD"/><path d="M352,256L345,264L337,271L327,270L323,267L318,270L303,272L299,275L298,278L292,275L287,270L280,274L270,270L268,270L260,278L259,279L261,280L261,282L257,289L257,293L259,299L375,299L370,295L368,289L366,288L364,280L366,274L356,266L352,256Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M119,87L119,90L118,100L118,119L120,129L120,138L121,141L125,145L134,151L139,151L144,148L162,140L166,139L168,130L171,119L175,117L178,116L186,116L199,115L199,115L200,111L203,109L203,108L199,107L176,107L175,105L171,99L168,99L161,99L148,99L136,102L132,101L121,88L119,87Z " data-fips="SU54" data-fips-="SU06" data-iso3="SDS" data-name="North Bahr-al-Ghazal"/><path d="M243,173L240,172L230,152L229,152L225,151L221,157L211,168L209,172L205,184L202,186L196,185L194,184L193,188L192,192L193,197L196,203L199,205L203,210L207,212L222,214L225,213L227,208L231,202L232,199L231,192L239,191L241,193L245,200L247,201L253,201L259,199L265,204L268,205L278,207L282,208L283,207L283,206L279,201L275,192L275,191L270,183L258,173L258,173L243,173Z " data-fips="SU37" data-fips-="SU06" data-iso3="SDS" data-name="Lakes"/><path d="M127,187L124,191L124,194L129,197L128,203L134,205L137,205L140,207L141,209L145,210L146,212L149,212L153,218L152,222L152,225L154,228L158,233L162,238L164,238L166,241L168,242L168,245L175,250L176,252L178,252L188,255L194,251L195,249L198,249L199,250L204,250L211,253L213,253L217,247L218,245L224,246L228,248L228,248L236,241L239,241L242,243L244,244L251,238L259,233L260,224L262,219L261,214L257,211L255,208L250,205L247,201L245,200L241,193L239,191L231,192L232,199L231,202L227,208L225,213L222,214L207,212L203,210L199,205L196,203L193,197L192,192L193,188L194,184L179,185L178,185L173,181L127,187L127,187Z " data-fips="SU45" data-fips-="SU02" data-iso3="SDS" data-name="West Equatoria"/><path d="M247,201L250,205L255,208L257,211L261,214L262,219L260,224L259,233L251,238L244,244L242,243L239,241L236,241L228,248L228,249L227,251L232,255L232,257L238,261L242,266L250,269L251,276L256,274L260,278L262,275L268,270L272,271L279,274L283,273L287,269L287,270L291,261L294,259L297,255L298,251L300,245L303,240L300,233L299,229L298,211L299,208L283,207L282,208L278,207L268,205L265,204L259,199L253,201L247,201Z " data-fips="SU44" data-fips-="UG72" data-iso3="SDS" data-name="Central Equatoria"/><path d="M261,94L260,101L261,101L266,103L271,104L278,105L288,118L292,119L300,115L304,119L310,128L318,135L317,142L322,146L322,146L326,141L327,137L326,136L326,133L329,131L332,132L338,131L343,133L354,126L352,108L346,100L347,94L349,90L349,85L347,79L334,69L331,66L324,64L325,60L322,38L323,36L324,31L323,28L325,22L325,20L312,26L293,26L300,35L301,49L303,53L303,54L289,66L287,72L281,80L269,92L267,93L261,94Z " data-fips="SU35" data-fips-="SU01" data-iso3="SDS" data-name="Upper Nile"/><path d="M258,173L258,173L270,183L275,191L275,192L279,201L283,206L283,207L299,208L357,210L380,203L380,203L380,201L374,190L372,183L367,181L366,177L364,176L360,175L357,172L357,170L352,166L352,164L347,158L344,156L340,154L329,152L324,151L322,146L322,146L317,142L318,135L310,128L304,119L300,115L292,119L288,118L278,105L271,104L266,103L261,101L260,101L260,101L245,102L243,107L244,109L241,114L239,118L240,123L242,126L241,129L243,131L243,136L242,139L243,142L246,146L249,151L248,155L254,168L257,173L258,173Z " data-fips="SU51" data-fips-="SU01" data-iso3="SDS" data-name="Jungoli"/><path d="M199,107L203,108L203,109L200,111L199,115L199,115L205,115L207,115L214,127L223,134L225,151L229,152L230,152L240,172L243,173L258,173L257,173L254,168L248,155L249,151L246,146L243,142L242,139L243,136L243,131L241,129L242,126L240,123L239,118L241,114L244,109L243,107L245,102L260,101L260,101L261,94L257,94L256,95L247,87L233,78L222,85L222,89L218,94L211,95L208,97L201,101L199,103L199,106L199,107Z " data-fips="SU40" data-fips-="SU06" data-iso3="SDS" data-name="Unity"/><path d="M223,134L214,127L207,115L205,115L199,115L186,116L178,116L175,117L171,119L168,130L166,139L167,140L174,150L179,151L191,158L192,162L193,168L192,173L192,177L194,184L196,185L202,186L205,184L209,172L211,168L221,157L225,151L223,134Z " data-fips="SU59" data-fips-="SU06" data-iso3="SDS" data-name="Warap"/><path d="M127,187L173,181L178,185L179,185L194,184L192,177L192,173L193,168L192,162L191,158L179,151L174,150L167,140L166,139L162,140L144,148L139,151L134,151L125,145L121,141L120,138L120,129L118,119L118,100L119,90L119,87L119,87L113,81L113,77L112,74L90,78L89,79L86,87L84,90L80,102L77,105L77,111L74,116L74,120L69,121L63,125L61,134L61,136L67,139L70,138L73,140L75,140L82,141L87,148L93,150L94,155L91,159L92,161L96,163L97,166L102,168L103,169L115,176L118,181L127,186L127,187Z " data-fips="SU46" data-fips-="SU46" data-iso3="SDS" data-name="West Bahr-al-Ghazal"/><path d="M380,203L380,203L357,210L299,208L298,211L299,229L300,233L303,240L300,245L298,251L297,255L294,259L291,261L287,270L288,270L296,278L299,277L304,272L306,271L316,270L323,267L329,271L336,271L339,270L363,244L389,218L385,215L380,207L380,203L380,203Z " data-fips="SU57" data-fips-="SU02" data-iso3="SDS" data-name="East Equatoria"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="8.89771301939" lon0="26.9756629921"/><bbox h="124.47" w="153.08" x="956.95" y="950.23"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M157,232L155,230L153,227L152,217L148,212L137,206L133,205L131,203L128,197L125,192L126,187L118,180L117,177L113,174L98,166L92,159L94,156L92,152L87,147L82,142L79,140L66,137L63,135L63,132L64,128L63,127L62,126L59,125L48,124L44,122L44,118L42,115L42,113L46,108L46,106L47,92L44,86L36,73L27,63L25,59L24,59L14,57L3,61L0,63L0,258L10,260L12,258L16,251L23,243L27,242L36,245L39,245L47,241L52,240L66,235L70,235L79,237L86,235L88,236L98,227L102,226L121,230L134,233L141,233L146,230L149,229L157,232Z " data-iso="CAF"/><path d="M259,279L258,278L257,275L251,275L249,269L240,265L230,255L227,250L224,247L221,246L218,246L216,250L211,253L203,250L196,250L187,255L181,254L170,247L165,240L160,236L158,234L157,232L149,229L146,230L141,233L134,233L121,230L102,226L98,227L88,236L86,235L79,237L70,235L66,235L52,240L47,241L39,245L36,245L27,242L23,243L16,251L12,258L10,260L0,258L0,299L259,299L257,293L257,289L261,282L261,280L259,279Z " data-iso="COD"/><path d="M352,101L352,102L353,127L349,131L344,132L333,131L329,132L322,146L324,150L341,154L348,159L353,167L359,174L365,177L372,184L380,202L381,207L386,215L389,217L389,218L389,219L403,222L405,224L404,238L411,247L414,248L436,249L450,256L450,25L449,28L448,30L446,34L444,33L445,32L443,29L442,28L440,29L438,28L437,28L435,26L435,24L436,18L436,17L438,15L439,15L440,16L442,16L444,15L448,14L450,15L450,0L409,0L408,2L396,6L394,8L384,26L381,30L380,32L377,46L377,50L376,56L373,62L371,62L366,58L364,60L357,69L359,77L358,81L355,87L352,99L352,101Z " data-iso="ETH"/><path d="M389,218L384,223L363,244L357,250L352,256L356,266L366,274L364,280L366,288L368,289L370,295L375,299L450,299L450,256L436,249L414,248L411,247L404,238L405,224L403,222L389,219L389,218Z " data-iso="KEN"/><path d="M25,59L27,63L36,73L44,86L47,92L46,106L46,108L42,113L42,115L44,118L44,122L48,124L59,125L62,126L62,126L62,125L66,122L73,120L74,115L77,110L77,106L80,101L81,93L87,85L88,80L89,78L95,77L110,74L114,82L121,88L132,101L135,102L138,102L147,98L169,99L176,107L199,107L199,103L207,96L218,93L221,89L221,85L233,78L247,87L255,94L267,93L269,92L281,79L289,66L302,54L303,53L301,49L300,35L292,26L312,26L325,20L323,28L322,38L325,61L324,63L330,66L333,69L346,79L348,85L348,89L347,93L347,101L352,101L352,101L352,101L352,99L355,87L358,81L359,77L357,69L364,60L366,58L371,62L373,62L376,56L377,50L377,46L380,32L381,30L384,26L394,8L396,6L408,2L409,0L0,0L0,7L7,6L11,7L13,11L12,13L14,23L17,27L16,37L19,41L23,44L27,46L26,56L25,59Z " data-iso="SDN"/><path d="M62,126L62,126L63,127L64,128L63,132L63,135L66,137L79,140L82,142L87,147L92,152L94,156L92,159L98,166L113,174L117,177L118,180L126,187L125,192L128,197L131,203L133,205L137,206L148,212L152,217L153,227L155,230L157,232L158,234L160,236L165,240L170,247L181,254L187,255L196,250L203,250L211,253L216,250L218,246L221,246L224,247L227,250L230,255L240,265L249,269L251,275L257,275L258,278L259,279L260,278L268,270L270,270L280,274L287,270L292,275L298,278L299,275L303,272L318,270L323,267L327,270L337,271L345,264L352,256L357,250L363,244L384,223L389,218L389,217L386,215L381,207L380,202L372,184L365,177L359,174L353,167L348,159L341,154L324,150L322,146L329,132L333,131L344,132L349,131L353,127L352,102L352,101L352,101L352,101L347,101L347,93L348,89L348,85L346,79L333,69L330,66L324,63L325,61L322,38L323,28L325,20L312,26L292,26L300,35L301,49L303,53L302,54L289,66L281,79L269,92L267,93L255,94L247,87L233,78L221,85L221,89L218,93L207,96L199,103L199,107L176,107L169,99L147,98L138,102L135,102L132,101L121,88L114,82L110,74L95,77L89,78L88,80L87,85L81,93L80,101L77,106L77,110L74,115L73,120L66,122L62,125L62,126Z " data-iso="SSD"/><path d="M25,59L26,56L27,46L23,44L19,41L16,37L17,27L14,23L12,13L13,11L11,7L7,6L0,7L0,63L3,61L14,57L24,59L25,59Z " data-iso="TCD"/><path d="M352,256L345,264L337,271L327,270L323,267L318,270L303,272L299,275L298,278L292,275L287,270L280,274L270,270L268,270L260,278L259,279L261,280L261,282L257,289L257,293L259,299L375,299L370,295L368,289L366,288L364,280L366,274L356,266L352,256Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M119,87L119,90L118,100L118,119L120,129L120,138L121,141L125,145L134,151L139,151L144,148L162,140L166,139L168,130L171,119L175,117L178,116L186,116L199,115L199,115L200,111L203,109L203,108L199,107L176,107L175,105L171,99L168,99L161,99L148,99L136,102L132,101L121,88L119,87Z " data-fips="SU54" data-fips-="SU06" data-iso3="SSD" data-name="North Bahr-al-Ghazal"/><path d="M243,173L240,172L230,152L229,152L225,151L221,157L211,168L209,172L205,184L202,186L196,185L194,184L193,188L192,192L193,197L196,203L199,205L203,210L207,212L222,214L225,213L227,208L231,202L232,199L231,192L239,191L241,193L245,200L247,201L253,201L259,199L265,204L268,205L278,207L282,208L283,207L283,206L279,201L275,192L275,191L270,183L258,173L258,173L243,173Z " data-fips="SU37" data-fips-="SU06" data-iso3="SSD" data-name="Lakes"/><path d="M127,187L124,191L124,194L129,197L128,203L134,205L137,205L140,207L141,209L145,210L146,212L149,212L153,218L152,222L152,225L154,228L158,233L162,238L164,238L166,241L168,242L168,245L175,250L176,252L178,252L188,255L194,251L195,249L198,249L199,250L204,250L211,253L213,253L217,247L218,245L224,246L228,248L228,248L236,241L239,241L242,243L244,244L251,238L259,233L260,224L262,219L261,214L257,211L255,208L250,205L247,201L245,200L241,193L239,191L231,192L232,199L231,202L227,208L225,213L222,214L207,212L203,210L199,205L196,203L193,197L192,192L193,188L194,184L179,185L178,185L173,181L127,187L127,187Z " data-fips="SU45" data-fips-="SU02" data-iso3="SSD" data-name="West Equatoria"/><path d="M247,201L250,205L255,208L257,211L261,214L262,219L260,224L259,233L251,238L244,244L242,243L239,241L236,241L228,248L228,249L227,251L232,255L232,257L238,261L242,266L250,269L251,276L256,274L260,278L262,275L268,270L272,271L279,274L283,273L287,269L287,270L291,261L294,259L297,255L298,251L300,245L303,240L300,233L299,229L298,211L299,208L283,207L282,208L278,207L268,205L265,204L259,199L253,201L247,201Z " data-fips="SU44" data-fips-="UG72" data-iso3="SSD" data-name="Central Equatoria"/><path d="M261,94L260,101L261,101L266,103L271,104L278,105L288,118L292,119L300,115L304,119L310,128L318,135L317,142L322,146L322,146L326,141L327,137L326,136L326,133L329,131L332,132L338,131L343,133L354,126L352,108L346,100L347,94L349,90L349,85L347,79L334,69L331,66L324,64L325,60L322,38L323,36L324,31L323,28L325,22L325,20L312,26L293,26L300,35L301,49L303,53L303,54L289,66L287,72L281,80L269,92L267,93L261,94Z " data-fips="SU35" data-fips-="SU01" data-iso3="SSD" data-name="Upper Nile"/><path d="M258,173L258,173L270,183L275,191L275,192L279,201L283,206L283,207L299,208L357,210L380,203L380,203L380,201L374,190L372,183L367,181L366,177L364,176L360,175L357,172L357,170L352,166L352,164L347,158L344,156L340,154L329,152L324,151L322,146L322,146L317,142L318,135L310,128L304,119L300,115L292,119L288,118L278,105L271,104L266,103L261,101L260,101L260,101L245,102L243,107L244,109L241,114L239,118L240,123L242,126L241,129L243,131L243,136L242,139L243,142L246,146L249,151L248,155L254,168L257,173L258,173Z " data-fips="SU51" data-fips-="SU01" data-iso3="SSD" data-name="Jungoli"/><path d="M199,107L203,108L203,109L200,111L199,115L199,115L205,115L207,115L214,127L223,134L225,151L229,152L230,152L240,172L243,173L258,173L257,173L254,168L248,155L249,151L246,146L243,142L242,139L243,136L243,131L241,129L242,126L240,123L239,118L241,114L244,109L243,107L245,102L260,101L260,101L261,94L257,94L256,95L247,87L233,78L222,85L222,89L218,94L211,95L208,97L201,101L199,103L199,106L199,107Z " data-fips="SU40" data-fips-="SU06" data-iso3="SSD" data-name="Unity"/><path d="M223,134L214,127L207,115L205,115L199,115L186,116L178,116L175,117L171,119L168,130L166,139L167,140L174,150L179,151L191,158L192,162L193,168L192,173L192,177L194,184L196,185L202,186L205,184L209,172L211,168L221,157L225,151L223,134Z " data-fips="SU59" data-fips-="SU06" data-iso3="SSD" data-name="Warap"/><path d="M127,187L173,181L178,185L179,185L194,184L192,177L192,173L193,168L192,162L191,158L179,151L174,150L167,140L166,139L162,140L144,148L139,151L134,151L125,145L121,141L120,138L120,129L118,119L118,100L119,90L119,87L119,87L113,81L113,77L112,74L90,78L89,79L86,87L84,90L80,102L77,105L77,111L74,116L74,120L69,121L63,125L61,134L61,136L67,139L70,138L73,140L75,140L82,141L87,148L93,150L94,155L91,159L92,161L96,163L97,166L102,168L103,169L115,176L118,181L127,186L127,187Z " data-fips="SU46" data-fips-="SU46" data-iso3="SSD" data-name="West Bahr-al-Ghazal"/><path d="M380,203L380,203L357,210L299,208L298,211L299,229L300,233L303,240L300,245L298,251L297,255L294,259L291,261L287,270L288,270L296,278L299,277L304,272L306,271L316,270L323,267L329,271L336,271L339,270L363,244L389,218L385,215L380,207L380,203L380,203Z " data-fips="SU57" data-fips-="SU02" data-iso3="SSD" data-name="East Equatoria"/></g></svg>
diff --git a/plugins/UserCountryMap/svg/SYR.svg b/plugins/UserCountryMap/svg/SYR.svg
index 6d8832301c..c3f99cf3dd 100644
--- a/plugins/UserCountryMap/svg/SYR.svg
+++ b/plugins/UserCountryMap/svg/SYR.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="35.5733328314" lon0="35.9815614239"/><bbox h="71.63" w="73.37" x="993.48" y="972.5"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M13,136L12,133L13,128L35,113L39,110L33,111L24,116L19,119L0,125L0,142L8,140L10,139L16,140L13,136Z " data-iso="CYN"/><path d="M16,140L10,139L8,140L0,142L0,148L3,145L13,145L18,144L17,141L16,140Z " data-iso="CYP"/><path d="M450,0L450,0L450,3L450,3L450,0Z " data-iso="IRN"/><path d="M361,27L361,28L361,30L346,47L339,55L324,60L322,63L319,67L318,76L318,83L323,96L324,105L320,116L319,124L319,137L320,150L312,168L310,171L299,174L231,219L219,227L223,238L233,271L229,273L232,281L241,278L243,284L237,290L247,292L291,298L294,299L450,299L450,19L440,28L439,28L436,24L436,17L434,13L428,12L421,17L408,17L399,14L390,12L384,14L377,12L376,13L372,19L365,26L361,27Z " data-iso="IRQ"/><path d="M80,278L81,267L83,264L88,261L91,261L91,259L96,250L95,247L94,243L96,240L93,233L93,228L94,225L93,226L84,233L83,235L80,234L78,241L74,243L66,243L61,243L60,249L57,256L53,267L48,288L44,299L55,299L54,290L59,275L65,271L73,273L74,276L77,278L80,278Z " data-iso="ISR"/><path d="M237,290L243,284L241,278L232,281L229,273L233,271L223,238L219,227L208,234L189,247L136,282L121,280L116,279L109,273L102,271L98,265L95,262L91,261L88,261L83,264L81,267L80,278L81,287L80,294L79,299L224,299L229,297L231,297L237,290Z " data-iso="JOR"/><path d="M96,223L98,220L101,218L97,213L101,207L104,205L115,203L112,201L115,195L119,193L123,189L125,184L121,174L114,170L118,164L116,162L112,161L111,163L99,163L99,168L97,170L92,173L85,183L83,194L79,202L71,221L68,227L63,239L61,243L66,243L74,243L78,241L80,234L83,235L84,233L93,226L94,225L96,223Z " data-iso="LBN"/><path d="M237,290L231,297L229,297L224,299L294,299L291,298L247,292L237,290Z " data-iso="SAU"/><path d="M359,21L354,18L348,23L336,28L326,30L309,31L303,30L293,32L283,37L265,47L252,52L238,55L228,56L220,55L214,55L211,54L201,47L190,45L178,51L163,57L159,59L144,59L141,56L139,54L132,52L127,51L124,57L122,69L126,79L126,81L117,82L115,84L114,93L108,96L106,101L105,102L98,97L95,97L93,101L90,115L96,123L97,133L95,141L96,152L99,163L111,163L112,161L116,162L118,164L114,170L121,174L125,184L123,189L119,193L115,195L112,201L115,203L104,205L101,207L97,213L101,218L98,220L96,223L94,225L93,228L93,233L96,240L94,243L95,247L96,250L91,259L91,261L95,262L98,265L102,271L109,273L116,279L121,280L136,282L189,247L208,234L219,227L231,219L299,174L310,171L312,168L320,150L319,137L319,124L320,116L324,105L323,96L318,83L318,76L319,67L322,63L324,60L339,55L346,47L361,30L361,28L361,27L359,21Z " data-iso="SYR"/><path d="M0,0L0,83L4,82L15,77L18,74L30,61L42,52L46,50L51,51L56,55L66,60L75,63L81,62L84,59L86,55L92,53L96,49L102,46L107,51L108,59L101,66L95,72L92,77L98,93L95,97L98,97L105,102L106,101L108,96L114,93L115,84L117,82L126,81L126,79L122,69L124,57L127,51L132,52L139,54L141,56L144,59L159,59L163,57L178,51L190,45L201,47L211,54L214,55L220,55L228,56L238,55L252,52L265,47L283,37L293,32L303,30L309,31L326,30L336,28L348,23L354,18L359,21L361,27L365,26L372,19L376,13L377,12L384,14L390,12L399,14L408,17L421,17L428,12L434,13L436,17L436,24L439,28L440,28L450,19L450,3L450,3L450,0L0,0Z " data-iso="TUR"/><path d="M80,278L77,278L74,276L73,273L65,271L59,275L54,290L55,299L79,299L80,294L81,287L80,278Z " data-iso="WEB"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M97,131L101,133L107,133L109,132L110,133L110,131L108,122L109,117L108,110L110,106L111,105L112,105L112,103L106,102L106,102L99,97L91,101L93,105L89,115L94,120L96,122L96,130L97,131Z " data-fips="SY02" data-fips-="" data-iso3="SYR" data-name="Lattakia (Al Ladhiqiyah)"/><path d="M109,132L107,133L101,133L97,131L98,133L98,134L95,139L94,148L98,160L100,163L104,163L105,163L105,162L108,156L112,150L113,149L113,149L111,147L106,146L110,143L111,140L111,134L110,133L109,132Z " data-fips="SY14" data-fips-="" data-iso3="SYR" data-name="Tartus"/><path d="M209,53L209,56L206,58L210,59L209,68L207,73L201,77L191,78L189,79L186,84L186,87L188,91L191,93L186,104L185,109L185,112L194,121L195,122L196,123L197,124L200,123L213,124L236,129L253,102L253,102L252,97L255,78L257,66L257,65L250,61L246,61L243,58L242,55L234,57L231,57L225,55L215,56L212,55L210,54L209,53Z " data-fips="SY04" data-fips-="" data-iso3="SYR" data-name="Ar Raqqah"/><path d="M204,48L202,47L194,45L190,45L187,46L181,50L175,53L168,55L166,56L160,60L143,60L137,53L135,53L127,50L125,54L123,65L122,67L123,72L127,77L127,77L131,76L132,76L131,85L131,88L136,91L139,98L142,102L146,105L145,109L149,115L151,116L154,117L157,118L166,117L176,121L194,121L185,112L185,109L186,104L191,93L188,91L186,87L186,84L189,79L191,78L201,77L207,73L209,68L210,59L206,58L209,56L209,53L204,48Z " data-fips="SY09" data-fips-="" data-iso3="SYR" data-name="Aleppo (Halab)"/><path d="M150,116L148,119L146,121L146,124L148,123L148,126L145,128L143,128L141,122L139,125L138,126L135,123L129,124L117,121L117,111L117,108L111,106L111,105L110,106L108,110L109,117L108,122L110,131L110,133L111,134L111,140L110,143L106,146L111,147L113,149L113,149L113,150L118,152L120,147L122,149L127,149L131,147L138,146L141,151L148,148L153,149L154,146L161,145L163,146L163,141L173,138L176,139L179,144L184,149L186,144L188,141L194,139L197,130L197,124L197,124L196,123L195,122L194,121L176,121L166,117L157,118L154,117L151,116L150,116Z " data-fips="SY10" data-fips-="" data-iso3="SYR" data-name="Hamah"/><path d="M236,129L213,124L200,123L197,124L197,124L197,130L194,139L188,141L186,144L184,149L179,144L176,139L173,138L163,141L163,146L161,145L154,146L153,149L148,148L141,151L138,146L131,147L127,149L122,149L120,147L118,152L113,150L113,149L112,150L108,156L105,162L105,163L106,164L114,161L119,163L118,165L114,169L114,170L118,170L122,175L122,177L125,180L124,182L125,185L126,185L130,185L138,185L146,195L150,198L154,199L156,203L166,213L171,220L174,222L182,226L200,239L209,233L219,227L278,188L245,145L245,141L242,134L241,133L236,129Z " data-fips="SY11" data-fips-="" data-iso3="SYR" data-name="Homs (Hims)"/><path d="M127,78L128,80L115,82L115,92L114,93L107,97L106,102L106,102L112,103L112,105L111,105L111,106L117,108L117,111L117,121L129,124L135,123L138,126L139,125L141,122L143,128L145,128L148,126L148,123L146,124L146,121L148,119L150,116L151,116L149,115L145,109L146,105L142,102L139,98L136,91L131,88L131,85L132,76L131,76L127,77L127,78Z " data-fips="SY12" data-fips-="" data-iso3="SYR" data-name="Idlib"/><path d="M242,55L243,58L246,61L250,61L257,65L257,66L258,68L262,73L267,78L300,107L309,110L317,109L322,110L323,108L324,104L324,97L323,94L318,85L318,70L322,61L324,59L339,55L341,54L362,29L360,24L360,20L353,17L350,21L346,25L325,31L314,32L311,31L301,30L293,31L286,36L281,38L272,44L264,48L255,52L242,55Z " data-fips="SY01" data-fips-="" data-iso3="SYR" data-name="Hasaka (Al Haksa)"/><path d="M322,110L317,109L309,110L300,107L267,78L262,73L258,68L257,66L255,78L252,97L253,102L253,102L236,129L241,133L242,134L245,141L245,145L278,188L299,174L310,171L312,168L313,165L320,150L319,126L320,120L320,113L322,110Z " data-fips="SY07" data-fips-="" data-iso3="SYR" data-name="Dayr Az Zawr"/><path d="M124,237L124,238L120,239L121,244L123,245L123,247L117,249L114,253L116,261L118,268L117,269L122,270L122,280L128,281L136,282L143,278L149,273L165,263L155,254L154,250L149,248L141,241L135,236L124,237Z " data-fips="SY05" data-fips-="" data-iso3="SYR" data-name="As Suwayda'"/><path d="M126,186L120,193L117,193L111,200L116,203L116,204L107,204L106,204L98,210L96,214L101,219L97,220L93,230L93,231L96,234L97,234L98,236L98,237L99,237L107,237L112,235L116,237L117,236L123,234L124,237L124,237L135,236L141,241L149,248L154,250L155,254L165,263L189,247L189,247L200,239L182,226L174,222L171,220L166,213L156,203L154,199L150,198L146,195L138,185L130,185L126,185L126,186Z " data-fips="SY08" data-fips-="SY13" data-iso3="SYR" data-name="Damascus"/><path d="M98,236L97,234L96,234L93,231L93,231L93,233L96,239L96,240L94,243L95,248L97,249L94,254L93,256L93,256L97,249L98,247L98,239L98,237L98,236Z " data-fips="SY03" data-fips-="" data-iso3="SYR" data-name="Quneitra"/><path d="M98,237L98,239L98,247L97,249L93,256L93,256L91,259L91,261L96,262L104,272L108,272L116,279L121,280L122,280L122,270L117,269L118,268L116,261L114,253L117,249L123,247L123,245L121,244L120,239L124,238L124,237L124,237L123,234L117,236L116,237L112,235L107,237L99,237L98,237Z " data-fips="SY06" data-fips-="" data-iso3="SYR" data-name="Dar`a"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="35.5733328314" lon0="35.9815614239"/><bbox h="71.63" w="73.37" x="993.48" y="972.5"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M13,136L12,133L13,128L35,113L39,110L33,111L24,116L19,119L0,125L0,142L8,140L10,139L16,140L13,136Z " data-iso="CYN"/><path d="M16,140L10,139L8,140L0,142L0,148L3,145L13,145L18,144L17,141L16,140Z " data-iso="CYP"/><path d="M450,0L450,0L450,3L450,3L450,0Z " data-iso="IRN"/><path d="M361,27L361,28L361,30L346,47L339,55L324,60L322,63L319,67L318,76L318,83L323,96L324,105L320,116L319,124L319,137L320,150L312,168L310,171L299,174L231,219L219,227L223,238L233,271L229,273L232,281L241,278L243,284L237,290L247,292L291,298L294,299L450,299L450,19L440,28L439,28L436,24L436,17L434,13L428,12L421,17L408,17L399,14L390,12L384,14L377,12L376,13L372,19L365,26L361,27Z " data-iso="IRQ"/><path d="M80,278L81,267L83,264L88,261L91,261L91,259L96,250L95,247L94,243L96,240L93,233L93,228L94,225L93,226L84,233L83,235L80,234L78,241L74,243L66,243L61,243L60,249L57,256L53,267L48,288L44,299L55,299L54,290L59,275L65,271L73,273L74,276L77,278L80,278Z " data-iso="ISR"/><path d="M237,290L243,284L241,278L232,281L229,273L233,271L223,238L219,227L208,234L189,247L136,282L121,280L116,279L109,273L102,271L98,265L95,262L91,261L88,261L83,264L81,267L80,278L81,287L80,294L79,299L224,299L229,297L231,297L237,290Z " data-iso="JOR"/><path d="M96,223L98,220L101,218L97,213L101,207L104,205L115,203L112,201L115,195L119,193L123,189L125,184L121,174L114,170L118,164L116,162L112,161L111,163L99,163L99,168L97,170L92,173L85,183L83,194L79,202L71,221L68,227L63,239L61,243L66,243L74,243L78,241L80,234L83,235L84,233L93,226L94,225L96,223Z " data-iso="LBN"/><path d="M237,290L231,297L229,297L224,299L294,299L291,298L247,292L237,290Z " data-iso="SAU"/><path d="M359,21L354,18L348,23L336,28L326,30L309,31L303,30L293,32L283,37L265,47L252,52L238,55L228,56L220,55L214,55L211,54L201,47L190,45L178,51L163,57L159,59L144,59L141,56L139,54L132,52L127,51L124,57L122,69L126,79L126,81L117,82L115,84L114,93L108,96L106,101L105,102L98,97L95,97L93,101L90,115L96,123L97,133L95,141L96,152L99,163L111,163L112,161L116,162L118,164L114,170L121,174L125,184L123,189L119,193L115,195L112,201L115,203L104,205L101,207L97,213L101,218L98,220L96,223L94,225L93,228L93,233L96,240L94,243L95,247L96,250L91,259L91,261L95,262L98,265L102,271L109,273L116,279L121,280L136,282L189,247L208,234L219,227L231,219L299,174L310,171L312,168L320,150L319,137L319,124L320,116L324,105L323,96L318,83L318,76L319,67L322,63L324,60L339,55L346,47L361,30L361,28L361,27L359,21Z " data-iso="SYR"/><path d="M0,0L0,83L4,82L15,77L18,74L30,61L42,52L46,50L51,51L56,55L66,60L75,63L81,62L84,59L86,55L92,53L96,49L102,46L107,51L108,59L101,66L95,72L92,77L98,93L95,97L98,97L105,102L106,101L108,96L114,93L115,84L117,82L126,81L126,79L122,69L124,57L127,51L132,52L139,54L141,56L144,59L159,59L163,57L178,51L190,45L201,47L211,54L214,55L220,55L228,56L238,55L252,52L265,47L283,37L293,32L303,30L309,31L326,30L336,28L348,23L354,18L359,21L361,27L365,26L372,19L376,13L377,12L384,14L390,12L399,14L408,17L421,17L428,12L434,13L436,17L436,24L439,28L440,28L450,19L450,3L450,3L450,0L0,0Z " data-iso="TUR"/><path d="M80,278L77,278L74,276L73,273L65,271L59,275L54,290L55,299L79,299L80,294L81,287L80,278Z " data-iso="PSE"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M97,131L101,133L107,133L109,132L110,133L110,131L108,122L109,117L108,110L110,106L111,105L112,105L112,103L106,102L106,102L99,97L91,101L93,105L89,115L94,120L96,122L96,130L97,131Z " data-fips="SY02" data-fips-="" data-iso3="SYR" data-name="Lattakia (Al Ladhiqiyah)"/><path d="M109,132L107,133L101,133L97,131L98,133L98,134L95,139L94,148L98,160L100,163L104,163L105,163L105,162L108,156L112,150L113,149L113,149L111,147L106,146L110,143L111,140L111,134L110,133L109,132Z " data-fips="SY14" data-fips-="" data-iso3="SYR" data-name="Tartus"/><path d="M209,53L209,56L206,58L210,59L209,68L207,73L201,77L191,78L189,79L186,84L186,87L188,91L191,93L186,104L185,109L185,112L194,121L195,122L196,123L197,124L200,123L213,124L236,129L253,102L253,102L252,97L255,78L257,66L257,65L250,61L246,61L243,58L242,55L234,57L231,57L225,55L215,56L212,55L210,54L209,53Z " data-fips="SY04" data-fips-="" data-iso3="SYR" data-name="Ar Raqqah"/><path d="M204,48L202,47L194,45L190,45L187,46L181,50L175,53L168,55L166,56L160,60L143,60L137,53L135,53L127,50L125,54L123,65L122,67L123,72L127,77L127,77L131,76L132,76L131,85L131,88L136,91L139,98L142,102L146,105L145,109L149,115L151,116L154,117L157,118L166,117L176,121L194,121L185,112L185,109L186,104L191,93L188,91L186,87L186,84L189,79L191,78L201,77L207,73L209,68L210,59L206,58L209,56L209,53L204,48Z " data-fips="SY09" data-fips-="" data-iso3="SYR" data-name="Aleppo (Halab)"/><path d="M150,116L148,119L146,121L146,124L148,123L148,126L145,128L143,128L141,122L139,125L138,126L135,123L129,124L117,121L117,111L117,108L111,106L111,105L110,106L108,110L109,117L108,122L110,131L110,133L111,134L111,140L110,143L106,146L111,147L113,149L113,149L113,150L118,152L120,147L122,149L127,149L131,147L138,146L141,151L148,148L153,149L154,146L161,145L163,146L163,141L173,138L176,139L179,144L184,149L186,144L188,141L194,139L197,130L197,124L197,124L196,123L195,122L194,121L176,121L166,117L157,118L154,117L151,116L150,116Z " data-fips="SY10" data-fips-="" data-iso3="SYR" data-name="Hamah"/><path d="M236,129L213,124L200,123L197,124L197,124L197,130L194,139L188,141L186,144L184,149L179,144L176,139L173,138L163,141L163,146L161,145L154,146L153,149L148,148L141,151L138,146L131,147L127,149L122,149L120,147L118,152L113,150L113,149L112,150L108,156L105,162L105,163L106,164L114,161L119,163L118,165L114,169L114,170L118,170L122,175L122,177L125,180L124,182L125,185L126,185L130,185L138,185L146,195L150,198L154,199L156,203L166,213L171,220L174,222L182,226L200,239L209,233L219,227L278,188L245,145L245,141L242,134L241,133L236,129Z " data-fips="SY11" data-fips-="" data-iso3="SYR" data-name="Homs (Hims)"/><path d="M127,78L128,80L115,82L115,92L114,93L107,97L106,102L106,102L112,103L112,105L111,105L111,106L117,108L117,111L117,121L129,124L135,123L138,126L139,125L141,122L143,128L145,128L148,126L148,123L146,124L146,121L148,119L150,116L151,116L149,115L145,109L146,105L142,102L139,98L136,91L131,88L131,85L132,76L131,76L127,77L127,78Z " data-fips="SY12" data-fips-="" data-iso3="SYR" data-name="Idlib"/><path d="M242,55L243,58L246,61L250,61L257,65L257,66L258,68L262,73L267,78L300,107L309,110L317,109L322,110L323,108L324,104L324,97L323,94L318,85L318,70L322,61L324,59L339,55L341,54L362,29L360,24L360,20L353,17L350,21L346,25L325,31L314,32L311,31L301,30L293,31L286,36L281,38L272,44L264,48L255,52L242,55Z " data-fips="SY01" data-fips-="" data-iso3="SYR" data-name="Hasaka (Al Haksa)"/><path d="M322,110L317,109L309,110L300,107L267,78L262,73L258,68L257,66L255,78L252,97L253,102L253,102L236,129L241,133L242,134L245,141L245,145L278,188L299,174L310,171L312,168L313,165L320,150L319,126L320,120L320,113L322,110Z " data-fips="SY07" data-fips-="" data-iso3="SYR" data-name="Dayr Az Zawr"/><path d="M124,237L124,238L120,239L121,244L123,245L123,247L117,249L114,253L116,261L118,268L117,269L122,270L122,280L128,281L136,282L143,278L149,273L165,263L155,254L154,250L149,248L141,241L135,236L124,237Z " data-fips="SY05" data-fips-="" data-iso3="SYR" data-name="As Suwayda'"/><path d="M126,186L120,193L117,193L111,200L116,203L116,204L107,204L106,204L98,210L96,214L101,219L97,220L93,230L93,231L96,234L97,234L98,236L98,237L99,237L107,237L112,235L116,237L117,236L123,234L124,237L124,237L135,236L141,241L149,248L154,250L155,254L165,263L189,247L189,247L200,239L182,226L174,222L171,220L166,213L156,203L154,199L150,198L146,195L138,185L130,185L126,185L126,186Z " data-fips="SY08" data-fips-="SY13" data-iso3="SYR" data-name="Damascus"/><path d="M98,236L97,234L96,234L93,231L93,231L93,233L96,239L96,240L94,243L95,248L97,249L94,254L93,256L93,256L97,249L98,247L98,239L98,237L98,236Z " data-fips="SY03" data-fips-="" data-iso3="SYR" data-name="Quneitra"/><path d="M98,237L98,239L98,247L97,249L93,256L93,256L91,259L91,261L96,262L104,272L108,272L116,279L121,280L122,280L122,270L117,269L118,268L116,261L114,253L117,249L123,247L123,245L121,244L120,239L124,238L124,237L124,237L123,234L117,236L116,237L112,235L107,237L99,237L98,237Z " data-fips="SY06" data-fips-="" data-iso3="SYR" data-name="Dar`a"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/TCD.svg b/plugins/UserCountryMap/svg/TCD.svg
index 5ad9b8b4ed..888ca011bd 100644
--- a/plugins/UserCountryMap/svg/TCD.svg
+++ b/plugins/UserCountryMap/svg/TCD.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 451" height="451px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 451" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="19.4144225126" lon0="19.836724536"/><bbox h="212.14" w="140.75" x="916.07" y="942.22"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M365,401L363,401L351,399L350,395L348,390L352,384L352,372L349,366L342,355L333,347L331,343L330,343L322,342L303,351L302,354L302,356L297,363L294,368L291,368L284,375L278,383L267,391L260,390L257,392L248,393L242,394L231,396L229,398L235,403L230,409L222,416L221,418L200,420L197,420L177,429L175,431L169,426L168,424L164,427L155,430L153,432L143,431L140,431L138,435L134,438L129,449L419,449L415,445L411,442L398,435L393,430L394,427L393,423L388,419L384,415L381,413L369,411L366,407L367,402L365,401Z " data-iso="CAF"/><path d="M140,431L142,429L142,424L141,424L135,410L131,404L125,398L121,396L111,387L103,376L102,374L107,368L109,366L125,368L131,367L143,368L146,367L136,357L134,354L131,344L130,337L133,326L132,324L127,307L126,301L124,297L119,293L118,288L111,286L107,285L109,298L110,304L118,306L119,325L117,328L109,333L103,334L101,336L96,343L92,350L88,361L84,364L83,374L75,380L74,383L71,395L66,400L61,401L56,410L54,418L51,423L50,427L45,433L46,439L39,444L38,449L129,449L134,438L138,435L140,431Z M0,449L24,449L17,441L13,439L10,443L3,443L1,440L0,441L0,449Z " data-iso="CMR"/><path d="M65,11L63,6L61,1L61,0L0,0L0,48L27,33L40,25L52,18L65,11Z " data-iso="DZA"/><path d="M378,53L387,53L415,52L424,51L450,50L450,0L376,0L377,24L377,29L378,47L378,53Z " data-iso="EGY"/><path d="M65,11L78,14L101,21L104,23L119,36L137,27L137,27L146,23L161,16L215,46L261,71L344,113L356,119L356,116L355,106L380,105L379,66L378,53L378,47L377,29L377,24L376,0L61,0L61,1L63,6L65,11Z " data-iso="LBY"/><path d="M95,269L93,257L92,251L97,245L102,236L116,216L145,186L149,149L153,108L158,95L150,87L149,83L151,81L143,69L141,67L141,55L139,42L137,27L137,27L119,36L104,23L101,21L78,14L65,11L52,18L40,25L27,33L0,48L0,281L5,278L16,275L28,275L47,277L54,281L57,283L66,284L67,281L71,278L81,273L85,272L91,269L95,269Z " data-iso="NER"/><path d="M107,285L103,281L99,274L95,269L91,269L85,272L81,273L71,278L67,281L66,284L57,283L54,281L47,277L28,275L16,275L5,278L0,281L0,441L1,440L3,443L10,443L13,439L17,441L24,449L38,449L39,444L46,439L45,433L50,427L51,423L54,418L56,410L61,401L66,400L71,395L74,383L75,380L83,374L84,364L88,361L92,350L96,343L101,336L103,334L109,333L117,328L119,325L118,306L110,304L109,298L107,285Z " data-iso="NGA"/><path d="M378,53L379,66L380,105L355,106L356,116L356,119L356,131L358,216L358,218L339,219L336,219L332,223L332,233L328,237L326,240L318,249L322,259L313,266L312,267L313,273L314,275L315,281L309,287L305,293L304,295L307,298L315,297L318,298L320,301L319,303L321,312L323,324L326,328L333,332L332,341L331,343L333,347L342,355L349,366L352,372L352,384L348,390L350,395L351,399L363,401L365,401L365,401L366,401L369,397L375,395L376,391L378,386L379,384L382,379L382,370L388,358L394,358L407,355L410,361L417,366L427,377L430,378L441,375L450,375L450,50L424,51L415,52L387,53L378,53Z " data-iso="SDN"/><path d="M365,401L365,401L367,402L366,407L369,411L381,413L384,415L388,419L393,423L394,427L393,430L398,435L411,442L415,445L419,449L450,449L450,375L441,375L430,378L427,377L417,366L410,361L407,355L394,358L388,358L382,370L382,379L379,384L378,386L376,391L375,395L369,397L366,401L365,401Z " data-iso="SDS"/><path d="M344,113L261,71L215,46L161,16L146,23L137,27L139,42L141,55L141,67L143,69L151,81L149,83L150,87L158,95L153,108L149,149L145,186L116,216L102,236L97,245L92,251L93,257L95,269L99,274L103,281L107,285L111,286L118,288L119,293L124,297L126,301L127,307L132,324L133,326L130,337L131,344L134,354L136,357L146,367L143,368L131,367L125,368L109,366L107,368L102,374L103,376L111,387L121,396L125,398L131,404L135,410L141,424L142,424L142,429L140,431L143,431L153,432L155,430L164,427L168,424L169,426L175,431L177,429L197,420L200,420L221,418L222,416L230,409L235,403L229,398L231,396L242,394L248,393L257,392L260,390L267,391L278,383L284,375L291,368L294,368L297,363L302,356L302,354L303,351L322,342L330,343L331,343L332,341L333,332L326,328L323,324L321,312L319,303L320,301L318,298L315,297L307,298L304,295L305,293L309,287L315,281L314,275L313,273L312,267L313,266L322,259L318,249L326,240L328,237L332,233L332,223L336,219L339,219L358,218L358,216L356,131L356,119L344,113Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M145,187L145,187L204,217L205,219L207,221L210,223L214,226L219,227L227,226L230,225L235,220L236,218L239,207L241,207L243,212L249,215L254,217L258,217L260,217L265,220L270,219L279,217L285,212L290,214L292,213L302,211L306,213L310,211L315,213L318,212L321,215L332,215L336,218L337,218L351,217L358,218L238,58L161,16L161,16L137,27L141,53L141,66L143,69L151,81L149,84L152,88L159,96L159,98L154,106L153,108L145,186L145,187Z " data-fips="CD03" data-fips-="" data-iso3="TCD" data-name="Bet"/><path d="M117,288L118,291L122,295L125,298L128,306L127,310L131,312L131,317L132,320L130,336L130,338L137,336L139,337L143,343L148,346L155,346L159,348L158,355L158,359L160,362L160,362L166,362L169,361L171,365L177,367L179,369L184,370L186,372L190,372L191,373L194,356L197,323L194,318L194,316L196,312L195,311L195,311L191,310L189,306L181,290L184,287L185,286L183,285L168,287L163,287L155,286L153,284L153,284L149,284L141,280L140,278L136,278L139,282L134,283L131,282L132,285L130,288L117,288L117,288Z " data-fips="CD04" data-fips-="" data-iso3="TCD" data-name="Hadjer-Lamis"/><path d="M205,219L204,217L145,187L145,187L144,187L144,187L116,216L102,235L100,240L100,241L97,244L97,247L96,247L100,248L105,249L109,253L115,258L117,259L122,264L126,271L127,270L136,269L149,269L153,275L153,283L153,284L155,286L163,287L168,287L183,285L185,286L186,283L187,271L188,270L196,268L207,221L205,219Z " data-fips="CD06" data-fips-="" data-iso3="TCD" data-name="Kanem"/><path d="M96,248L92,249L95,269L107,285L116,286L117,288L130,288L132,285L131,282L134,283L139,282L136,278L140,278L141,280L149,284L153,284L153,284L153,283L153,275L149,269L136,269L127,270L126,271L122,264L117,259L115,258L109,253L105,249L100,248L96,247L96,248Z " data-fips="CD07" data-fips-="" data-iso3="TCD" data-name="Lac"/><path d="M254,217L249,215L243,212L241,207L239,207L236,218L235,220L230,225L227,226L219,227L214,226L210,223L207,221L196,268L188,270L187,271L186,283L185,286L184,287L181,290L189,306L191,310L195,311L195,311L195,310L203,303L206,303L219,296L234,296L237,296L241,296L243,299L239,303L241,309L242,312L243,312L249,313L253,314L253,312L256,305L259,299L262,295L258,290L265,287L266,284L264,272L264,267L258,263L258,260L258,217L254,217Z " data-fips="CD01" data-fips-="" data-iso3="TCD" data-name="Batha"/><path d="M258,217L258,260L262,255L264,253L272,251L279,254L282,258L289,261L294,260L301,261L310,263L313,265L313,265L319,262L322,257L320,254L318,248L325,245L327,238L333,231L333,227L331,223L336,218L336,218L332,215L321,215L318,212L315,213L310,211L306,213L302,211L292,213L290,214L285,212L279,217L270,219L265,220L260,217L258,217Z " data-fips="CD02" data-fips-="" data-iso3="TCD" data-name="Wadi Fira"/><path d="M241,309L239,303L243,299L241,296L237,296L234,296L219,296L206,303L203,303L195,310L195,311L196,312L194,316L194,318L197,323L194,356L202,355L204,358L214,361L216,363L222,368L222,370L226,371L227,368L236,364L241,356L246,355L249,352L249,352L250,350L250,344L249,342L243,340L234,336L230,334L228,332L229,324L229,323L234,326L240,320L238,316L242,312L241,309Z " data-fips="CD05" data-fips-="" data-iso3="TCD" data-name="Gura"/><path d="M258,260L258,263L264,267L264,272L266,284L265,287L258,290L262,295L259,299L256,305L253,312L253,314L254,314L257,316L256,315L264,314L271,318L284,325L284,327L305,323L311,326L319,343L319,343L321,341L331,343L333,339L334,335L333,331L326,329L323,325L325,314L321,315L321,312L319,305L319,304L320,299L314,296L308,299L307,299L307,288L308,287L315,282L315,278L311,269L311,268L313,265L310,263L301,261L294,260L289,261L282,258L279,254L272,251L264,253L262,255L258,260Z " data-fips="CD12" data-fips-="" data-iso3="TCD" data-name="Ouadda"/><path d="M166,390L158,391L155,390L150,392L141,392L140,392L140,392L138,399L137,401L135,407L135,407L136,408L143,412L147,410L149,411L162,402L170,396L166,390L166,390L166,390Z " data-fips="CD08" data-fips-="" data-iso3="TCD" data-name="Logone Occidental"/><path d="M166,390L166,390L170,396L162,402L149,411L147,410L143,412L136,408L135,407L134,407L134,408L137,415L139,423L143,424L141,431L145,431L148,433L156,430L163,428L164,425L168,423L170,427L174,431L175,431L186,425L186,424L182,416L187,412L181,404L183,400L183,393L183,392L180,392L174,391L169,390L166,390L166,390Z " data-fips="CD09" data-fips-="" data-iso3="TCD" data-name="Logone Oriental"/><path d="M130,340L131,345L133,350L133,352L135,354L137,358L141,363L145,366L140,368L133,367L126,367L122,368L114,366L107,367L106,370L103,372L104,377L111,386L112,388L123,397L124,397L130,402L133,406L134,408L134,407L135,407L135,407L137,401L138,399L140,392L140,392L140,391L142,384L146,380L147,377L150,374L154,375L159,371L161,362L160,362L160,362L158,359L158,355L159,348L155,346L148,346L143,343L139,337L137,336L130,338L130,340Z " data-fips="CD10" data-fips-="" data-iso3="TCD" data-name="Mayo-Kebbi Est"/><path d="M190,372L186,372L184,370L179,369L177,367L171,365L169,361L166,362L160,362L161,362L159,371L154,375L150,374L147,377L146,380L142,384L140,391L140,392L141,392L150,392L155,390L158,391L166,390L166,390L166,390L169,390L174,391L180,392L183,392L185,390L182,386L186,383L186,379L191,377L194,378L194,375L191,373L190,372Z " data-fips="CD14" data-fips-="" data-iso3="TCD" data-name="Tandjil"/><path d="M249,352L246,355L241,356L236,364L227,368L226,371L222,370L222,368L216,363L214,361L204,358L202,355L194,356L191,373L194,375L194,378L191,377L186,379L186,383L182,386L185,390L183,392L183,393L183,400L181,404L187,412L182,416L186,424L186,424L191,422L192,423L196,421L201,421L208,419L219,419L225,414L226,413L232,406L235,402L229,398L230,396L233,394L239,393L243,393L255,393L256,392L256,392L249,370L248,365L248,359L249,352L249,352Z " data-fips="CD11" data-fips-="" data-iso3="TCD" data-name="Mandoul"/><path d="M253,314L249,313L243,312L242,312L238,316L240,320L234,326L229,323L229,324L228,332L230,334L234,336L243,340L249,342L250,344L250,350L249,352L248,359L248,365L249,370L256,392L256,392L263,390L265,391L269,390L270,389L279,383L280,381L285,374L285,374L291,368L293,368L297,363L301,362L303,356L302,354L302,351L309,348L310,347L314,346L316,344L319,343L319,343L311,326L305,323L284,327L284,325L271,318L264,314L256,315L257,316L254,314L253,314Z " data-fips="CD13" data-fips-="" data-iso3="TCD" data-name="Salamat"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="19.4144225126" lon0="19.836724536"/><bbox h="212.14" w="140.75" x="916.07" y="942.22"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M365,401L363,401L351,399L350,395L348,390L352,384L352,372L349,366L342,355L333,347L331,343L330,343L322,342L303,351L302,354L302,356L297,363L294,368L291,368L284,375L278,383L267,391L260,390L257,392L248,393L242,394L231,396L229,398L235,403L230,409L222,416L221,418L200,420L197,420L177,429L175,431L169,426L168,424L164,427L155,430L153,432L143,431L140,431L138,435L134,438L129,449L419,449L415,445L411,442L398,435L393,430L394,427L393,423L388,419L384,415L381,413L369,411L366,407L367,402L365,401Z " data-iso="CAF"/><path d="M140,431L142,429L142,424L141,424L135,410L131,404L125,398L121,396L111,387L103,376L102,374L107,368L109,366L125,368L131,367L143,368L146,367L136,357L134,354L131,344L130,337L133,326L132,324L127,307L126,301L124,297L119,293L118,288L111,286L107,285L109,298L110,304L118,306L119,325L117,328L109,333L103,334L101,336L96,343L92,350L88,361L84,364L83,374L75,380L74,383L71,395L66,400L61,401L56,410L54,418L51,423L50,427L45,433L46,439L39,444L38,449L129,449L134,438L138,435L140,431Z M0,449L24,449L17,441L13,439L10,443L3,443L1,440L0,441L0,449Z " data-iso="CMR"/><path d="M65,11L63,6L61,1L61,0L0,0L0,48L27,33L40,25L52,18L65,11Z " data-iso="DZA"/><path d="M378,53L387,53L415,52L424,51L450,50L450,0L376,0L377,24L377,29L378,47L378,53Z " data-iso="EGY"/><path d="M65,11L78,14L101,21L104,23L119,36L137,27L137,27L146,23L161,16L215,46L261,71L344,113L356,119L356,116L355,106L380,105L379,66L378,53L378,47L377,29L377,24L376,0L61,0L61,1L63,6L65,11Z " data-iso="LBY"/><path d="M95,269L93,257L92,251L97,245L102,236L116,216L145,186L149,149L153,108L158,95L150,87L149,83L151,81L143,69L141,67L141,55L139,42L137,27L137,27L119,36L104,23L101,21L78,14L65,11L52,18L40,25L27,33L0,48L0,281L5,278L16,275L28,275L47,277L54,281L57,283L66,284L67,281L71,278L81,273L85,272L91,269L95,269Z " data-iso="NER"/><path d="M107,285L103,281L99,274L95,269L91,269L85,272L81,273L71,278L67,281L66,284L57,283L54,281L47,277L28,275L16,275L5,278L0,281L0,441L1,440L3,443L10,443L13,439L17,441L24,449L38,449L39,444L46,439L45,433L50,427L51,423L54,418L56,410L61,401L66,400L71,395L74,383L75,380L83,374L84,364L88,361L92,350L96,343L101,336L103,334L109,333L117,328L119,325L118,306L110,304L109,298L107,285Z " data-iso="NGA"/><path d="M378,53L379,66L380,105L355,106L356,116L356,119L356,131L358,216L358,218L339,219L336,219L332,223L332,233L328,237L326,240L318,249L322,259L313,266L312,267L313,273L314,275L315,281L309,287L305,293L304,295L307,298L315,297L318,298L320,301L319,303L321,312L323,324L326,328L333,332L332,341L331,343L333,347L342,355L349,366L352,372L352,384L348,390L350,395L351,399L363,401L365,401L365,401L366,401L369,397L375,395L376,391L378,386L379,384L382,379L382,370L388,358L394,358L407,355L410,361L417,366L427,377L430,378L441,375L450,375L450,50L424,51L415,52L387,53L378,53Z " data-iso="SDN"/><path d="M365,401L365,401L367,402L366,407L369,411L381,413L384,415L388,419L393,423L394,427L393,430L398,435L411,442L415,445L419,449L450,449L450,375L441,375L430,378L427,377L417,366L410,361L407,355L394,358L388,358L382,370L382,379L379,384L378,386L376,391L375,395L369,397L366,401L365,401Z " data-iso="SSD"/><path d="M344,113L261,71L215,46L161,16L146,23L137,27L139,42L141,55L141,67L143,69L151,81L149,83L150,87L158,95L153,108L149,149L145,186L116,216L102,236L97,245L92,251L93,257L95,269L99,274L103,281L107,285L111,286L118,288L119,293L124,297L126,301L127,307L132,324L133,326L130,337L131,344L134,354L136,357L146,367L143,368L131,367L125,368L109,366L107,368L102,374L103,376L111,387L121,396L125,398L131,404L135,410L141,424L142,424L142,429L140,431L143,431L153,432L155,430L164,427L168,424L169,426L175,431L177,429L197,420L200,420L221,418L222,416L230,409L235,403L229,398L231,396L242,394L248,393L257,392L260,390L267,391L278,383L284,375L291,368L294,368L297,363L302,356L302,354L303,351L322,342L330,343L331,343L332,341L333,332L326,328L323,324L321,312L319,303L320,301L318,298L315,297L307,298L304,295L305,293L309,287L315,281L314,275L313,273L312,267L313,266L322,259L318,249L326,240L328,237L332,233L332,223L336,219L339,219L358,218L358,216L356,131L356,119L344,113Z " data-iso="TCD"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M145,187L145,187L204,217L205,219L207,221L210,223L214,226L219,227L227,226L230,225L235,220L236,218L239,207L241,207L243,212L249,215L254,217L258,217L260,217L265,220L270,219L279,217L285,212L290,214L292,213L302,211L306,213L310,211L315,213L318,212L321,215L332,215L336,218L337,218L351,217L358,218L238,58L161,16L161,16L137,27L141,53L141,66L143,69L151,81L149,84L152,88L159,96L159,98L154,106L153,108L145,186L145,187Z " data-fips="CD03" data-fips-="" data-iso3="TCD" data-name="Bet"/><path d="M117,288L118,291L122,295L125,298L128,306L127,310L131,312L131,317L132,320L130,336L130,338L137,336L139,337L143,343L148,346L155,346L159,348L158,355L158,359L160,362L160,362L166,362L169,361L171,365L177,367L179,369L184,370L186,372L190,372L191,373L194,356L197,323L194,318L194,316L196,312L195,311L195,311L191,310L189,306L181,290L184,287L185,286L183,285L168,287L163,287L155,286L153,284L153,284L149,284L141,280L140,278L136,278L139,282L134,283L131,282L132,285L130,288L117,288L117,288Z " data-fips="CD04" data-fips-="" data-iso3="TCD" data-name="Hadjer-Lamis"/><path d="M205,219L204,217L145,187L145,187L144,187L144,187L116,216L102,235L100,240L100,241L97,244L97,247L96,247L100,248L105,249L109,253L115,258L117,259L122,264L126,271L127,270L136,269L149,269L153,275L153,283L153,284L155,286L163,287L168,287L183,285L185,286L186,283L187,271L188,270L196,268L207,221L205,219Z " data-fips="CD06" data-fips-="" data-iso3="TCD" data-name="Kanem"/><path d="M96,248L92,249L95,269L107,285L116,286L117,288L130,288L132,285L131,282L134,283L139,282L136,278L140,278L141,280L149,284L153,284L153,284L153,283L153,275L149,269L136,269L127,270L126,271L122,264L117,259L115,258L109,253L105,249L100,248L96,247L96,248Z " data-fips="CD07" data-fips-="" data-iso3="TCD" data-name="Lac"/><path d="M254,217L249,215L243,212L241,207L239,207L236,218L235,220L230,225L227,226L219,227L214,226L210,223L207,221L196,268L188,270L187,271L186,283L185,286L184,287L181,290L189,306L191,310L195,311L195,311L195,310L203,303L206,303L219,296L234,296L237,296L241,296L243,299L239,303L241,309L242,312L243,312L249,313L253,314L253,312L256,305L259,299L262,295L258,290L265,287L266,284L264,272L264,267L258,263L258,260L258,217L254,217Z " data-fips="CD01" data-fips-="" data-iso3="TCD" data-name="Batha"/><path d="M258,217L258,260L262,255L264,253L272,251L279,254L282,258L289,261L294,260L301,261L310,263L313,265L313,265L319,262L322,257L320,254L318,248L325,245L327,238L333,231L333,227L331,223L336,218L336,218L332,215L321,215L318,212L315,213L310,211L306,213L302,211L292,213L290,214L285,212L279,217L270,219L265,220L260,217L258,217Z " data-fips="CD02" data-fips-="" data-iso3="TCD" data-name="Wadi Fira"/><path d="M241,309L239,303L243,299L241,296L237,296L234,296L219,296L206,303L203,303L195,310L195,311L196,312L194,316L194,318L197,323L194,356L202,355L204,358L214,361L216,363L222,368L222,370L226,371L227,368L236,364L241,356L246,355L249,352L249,352L250,350L250,344L249,342L243,340L234,336L230,334L228,332L229,324L229,323L234,326L240,320L238,316L242,312L241,309Z " data-fips="CD05" data-fips-="" data-iso3="TCD" data-name="Gura"/><path d="M258,260L258,263L264,267L264,272L266,284L265,287L258,290L262,295L259,299L256,305L253,312L253,314L254,314L257,316L256,315L264,314L271,318L284,325L284,327L305,323L311,326L319,343L319,343L321,341L331,343L333,339L334,335L333,331L326,329L323,325L325,314L321,315L321,312L319,305L319,304L320,299L314,296L308,299L307,299L307,288L308,287L315,282L315,278L311,269L311,268L313,265L310,263L301,261L294,260L289,261L282,258L279,254L272,251L264,253L262,255L258,260Z " data-fips="CD12" data-fips-="" data-iso3="TCD" data-name="Ouadda"/><path d="M166,390L158,391L155,390L150,392L141,392L140,392L140,392L138,399L137,401L135,407L135,407L136,408L143,412L147,410L149,411L162,402L170,396L166,390L166,390L166,390Z " data-fips="CD08" data-fips-="" data-iso3="TCD" data-name="Logone Occidental"/><path d="M166,390L166,390L170,396L162,402L149,411L147,410L143,412L136,408L135,407L134,407L134,408L137,415L139,423L143,424L141,431L145,431L148,433L156,430L163,428L164,425L168,423L170,427L174,431L175,431L186,425L186,424L182,416L187,412L181,404L183,400L183,393L183,392L180,392L174,391L169,390L166,390L166,390Z " data-fips="CD09" data-fips-="" data-iso3="TCD" data-name="Logone Oriental"/><path d="M130,340L131,345L133,350L133,352L135,354L137,358L141,363L145,366L140,368L133,367L126,367L122,368L114,366L107,367L106,370L103,372L104,377L111,386L112,388L123,397L124,397L130,402L133,406L134,408L134,407L135,407L135,407L137,401L138,399L140,392L140,392L140,391L142,384L146,380L147,377L150,374L154,375L159,371L161,362L160,362L160,362L158,359L158,355L159,348L155,346L148,346L143,343L139,337L137,336L130,338L130,340Z " data-fips="CD10" data-fips-="" data-iso3="TCD" data-name="Mayo-Kebbi Est"/><path d="M190,372L186,372L184,370L179,369L177,367L171,365L169,361L166,362L160,362L161,362L159,371L154,375L150,374L147,377L146,380L142,384L140,391L140,392L141,392L150,392L155,390L158,391L166,390L166,390L166,390L169,390L174,391L180,392L183,392L185,390L182,386L186,383L186,379L191,377L194,378L194,375L191,373L190,372Z " data-fips="CD14" data-fips-="" data-iso3="TCD" data-name="Tandjil"/><path d="M249,352L246,355L241,356L236,364L227,368L226,371L222,370L222,368L216,363L214,361L204,358L202,355L194,356L191,373L194,375L194,378L191,377L186,379L186,383L182,386L185,390L183,392L183,393L183,400L181,404L187,412L182,416L186,424L186,424L191,422L192,423L196,421L201,421L208,419L219,419L225,414L226,413L232,406L235,402L229,398L230,396L233,394L239,393L243,393L255,393L256,392L256,392L249,370L248,365L248,359L249,352L249,352Z " data-fips="CD11" data-fips-="" data-iso3="TCD" data-name="Mandoul"/><path d="M253,314L249,313L243,312L242,312L238,316L240,320L234,326L229,323L229,324L228,332L230,334L234,336L243,340L249,342L250,344L250,350L249,352L248,359L248,365L249,370L256,392L256,392L263,390L265,391L269,390L270,389L279,383L280,381L285,374L285,374L291,368L293,368L297,363L301,362L303,356L302,354L302,351L309,348L310,347L314,346L316,344L319,343L319,343L311,326L305,323L284,327L284,325L271,318L264,314L256,315L257,316L254,314L253,314Z " data-fips="CD13" data-fips-="" data-iso3="TCD" data-name="Salamat"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/UGA.svg b/plugins/UserCountryMap/svg/UGA.svg
index 593451bab2..cdb157a0c3 100644
--- a/plugins/UserCountryMap/svg/UGA.svg
+++ b/plugins/UserCountryMap/svg/UGA.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="-0.564616387286" lon0="32.4167090184"/><bbox h="78.36" w="75.42" x="960.56" y="936.93"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M0,0L0,299L78,299L87,286L90,285L96,281L98,279L98,278L97,260L99,247L101,239L101,235L104,217L104,209L107,206L109,202L115,191L114,182L115,176L120,173L126,168L129,162L133,158L140,156L140,155L137,155L136,153L139,149L140,145L143,142L146,140L150,135L151,134L159,127L162,124L164,123L173,116L177,113L177,112L173,107L169,106L163,101L157,101L152,98L152,95L154,88L158,80L157,76L153,71L155,65L161,54L160,51L157,50L156,48L154,43L151,43L146,43L144,42L142,33L138,31L127,27L112,10L108,3L105,0L91,0L89,2L82,7L78,7L74,5L68,3L58,2L49,8L44,10L41,11L33,9L28,6L22,0L0,0Z " data-iso="COD"/><path d="M450,0L398,0L401,4L404,5L442,6L450,11L450,0Z " data-iso="ETH"/><path d="M320,0L314,6L305,15L312,31L314,35L319,38L325,40L327,44L325,53L327,65L331,67L334,76L342,86L344,91L349,97L348,100L349,109L351,117L352,126L352,137L343,149L344,154L340,157L337,158L329,165L325,173L320,180L319,182L314,186L311,190L310,196L308,200L305,204L305,204L305,210L305,213L306,215L307,217L309,218L312,218L312,218L311,220L312,222L317,226L320,231L321,231L323,229L324,226L326,223L331,221L340,218L344,227L344,228L339,229L333,230L329,231L328,231L329,236L328,237L326,238L324,236L322,236L319,235L316,235L314,236L310,241L309,244L309,248L311,252L314,255L313,258L312,260L309,261L309,263L309,263L332,276L373,299L450,299L450,11L442,6L404,5L401,4L398,0L320,0Z " data-iso="KEN"/><path d="M142,264L140,264L133,267L131,270L123,279L117,282L112,282L110,277L99,279L98,279L96,281L90,285L87,286L78,299L156,299L157,294L156,288L154,283L151,280L148,278L142,271L140,267L140,265L142,264Z " data-iso="RWA"/><path d="M157,50L159,47L162,43L167,39L172,36L175,36L188,41L195,40L202,35L209,44L219,48L221,44L228,40L237,38L251,35L259,31L266,36L274,37L282,37L294,26L305,15L314,6L320,0L105,0L108,3L112,10L127,27L138,31L142,33L144,42L146,43L151,43L154,43L156,48L157,50Z M22,0L28,6L33,9L41,11L44,10L49,8L58,2L68,3L74,5L78,7L82,7L89,2L91,0L22,0Z " data-iso="SDS"/><path d="M202,261L157,261L153,262L149,264L142,264L142,264L140,265L140,267L142,271L148,278L151,280L154,283L156,288L157,294L156,299L198,299L201,284L203,281L204,278L206,265L205,263L205,262L204,262L203,262L202,262L202,261Z M284,299L373,299L332,276L309,263L303,270L302,273L302,274L304,276L303,277L299,277L298,278L298,280L297,280L298,281L302,284L302,285L301,285L296,284L293,284L291,284L290,285L289,288L290,290L291,291L287,294L287,297L284,299Z " data-iso="TZA"/><path d="M305,204L308,200L310,196L311,190L314,186L319,182L320,180L325,173L329,165L337,158L340,157L344,154L343,149L352,137L352,126L351,117L349,109L348,100L349,97L344,91L342,86L334,76L331,67L327,65L325,53L327,44L325,40L319,38L314,35L312,31L305,15L294,26L282,37L274,37L266,36L259,31L251,35L237,38L228,40L221,44L219,48L209,44L202,35L195,40L188,41L175,36L172,36L167,39L162,43L159,47L157,50L160,51L161,54L155,65L153,71L157,76L158,80L154,88L152,95L152,98L157,101L163,101L169,106L173,107L177,112L181,106L185,102L187,101L187,102L184,107L183,108L183,110L184,125L183,127L182,128L181,128L180,129L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L146,165L143,166L141,165L142,161L141,159L141,157L141,157L141,156L140,156L133,158L129,162L126,168L120,173L115,176L114,182L115,191L109,202L107,206L104,209L104,217L101,235L101,239L99,247L97,260L98,278L98,279L99,279L110,277L112,282L117,282L123,279L131,270L133,267L140,264L142,264L142,264L149,264L153,262L157,261L202,261L200,256L199,254L199,251L203,241L206,237L212,229L212,226L211,224L209,223L209,222L210,220L213,218L215,217L219,216L222,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L272,192L274,193L276,192L276,193L275,197L276,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L293,200L293,203L294,204L300,205L304,204L305,204Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M209,221L209,220L208,220L209,223L210,223L209,223L209,222L209,221Z M211,224L211,225L212,226L212,226L211,224Z " data-fips="UG36" data-fips-="" data-iso3="UGA" data-name="Kalangala" data-p="KN"/><path d="M268,182L265,182L265,183L263,183L261,183L261,184L263,188L264,188L266,191L269,193L272,192L274,193L276,192L276,193L275,197L276,198L280,198L284,194L285,194L286,193L285,192L285,189L280,188L278,186L274,184L273,184L269,182L268,182Z " data-fips="UG33" data-fips-="" data-iso3="UGA" data-name="Jinja" data-p="JI"/><path d="M308,137L304,138L301,137L299,136L297,136L296,136L293,138L290,148L286,150L285,151L286,151L290,152L292,151L298,152L303,155L303,156L308,157L308,158L309,158L312,159L313,159L314,159L315,158L318,151L319,148L317,144L317,141L317,137L317,137L316,137L308,137Z " data-fips="UG46" data-fips-="" data-iso3="UGA" data-name="Kumi" data-p="KU"/><path d="M275,118L273,118L272,122L265,128L265,129L260,134L259,133L258,136L256,137L257,141L257,145L258,145L259,145L260,145L262,147L264,148L269,145L272,144L269,141L273,137L279,134L280,126L280,125L279,124L279,122L277,120L277,119L275,118Z " data-fips="UG80" data-fips-="" data-iso3="UGA" data-name="Kaberamaido" data-p="KD"/><path d="M261,181L260,175L257,171L256,162L257,158L255,155L253,152L251,148L250,145L244,145L244,149L249,154L249,158L249,163L249,169L249,174L251,177L252,180L253,183L256,184L259,189L262,190L264,188L263,188L261,184L261,183L261,181Z " data-fips="UG83" data-fips-="" data-iso3="UGA" data-name="Kayunga" data-p="KY"/><path d="M282,174L278,172L278,168L276,164L275,163L274,164L273,174L270,179L269,181L269,182L273,184L274,184L278,186L280,188L285,189L285,192L286,193L288,193L288,193L288,192L288,190L288,189L291,184L289,181L289,180L288,178L286,177L285,177L285,176L284,173L282,174Z " data-fips="UGA2" data-fips-="UG78" data-iso3="UGA" data-name="Iganga" data-p="IN"/><path d="M250,145L251,148L253,152L255,155L257,158L256,162L257,171L260,175L261,181L261,183L263,183L265,183L265,182L268,182L269,182L269,181L270,179L273,174L274,164L275,163L276,162L279,156L280,155L280,153L279,153L278,151L278,150L273,150L271,152L265,149L264,148L262,147L260,145L259,145L258,145L257,145L250,145Z " data-fips="UGA3" data-fips-="UG38" data-iso3="UGA" data-name="Kamuli" data-p="KX"/><path d="M254,129L250,127L242,135L240,136L237,136L232,134L228,136L226,136L227,138L230,139L238,142L241,145L244,145L250,145L257,145L257,141L256,137L258,136L259,133L258,129L256,129L254,129Z " data-fips="UGB4" data-fips-="" data-iso3="UGA" data-name="Kyoga" data-p="KO"/><path d="M288,161L286,159L284,157L281,155L280,153L280,155L279,156L276,162L275,163L276,164L278,168L278,172L282,174L284,173L286,167L287,166L288,165L288,164L289,163L288,161Z " data-fips="UGC2" data-fips-="" data-iso3="UGA" data-name="Bulamogi" data-p="BL"/><path d="M309,158L308,158L308,157L303,156L304,158L304,164L303,165L299,168L299,170L301,170L304,169L307,167L309,165L310,165L311,164L312,162L312,160L312,159L309,158Z " data-fips="UGC9" data-fips-="" data-iso3="UGA" data-name="Budaka" data-p="BD"/><path d="M292,168L292,168L292,165L291,164L289,163L288,164L288,165L287,166L286,167L284,173L285,176L285,177L286,177L288,178L289,180L290,180L294,180L296,182L297,182L298,182L298,180L296,178L296,176L295,171L294,170L292,168Z " data-fips="UGD2" data-fips-="" data-iso3="UGA" data-name="Busiki" data-p="BS"/><path d="M297,133L290,125L290,124L282,119L280,123L280,125L280,126L279,134L273,137L269,141L272,144L269,145L264,148L265,149L271,152L273,150L278,150L278,151L279,151L280,152L281,152L285,152L285,151L286,150L290,148L293,138L296,136L297,136L297,135L297,134L297,133Z " data-fips="UG95" data-fips-="" data-iso3="UGA" data-name="Soroti" data-p="SR"/><path d="M262,190L259,189L256,184L253,183L252,180L251,177L249,174L247,177L247,181L247,183L246,185L244,188L244,189L243,190L244,191L243,196L244,198L242,202L242,202L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L269,193L266,191L264,188L262,190Z " data-fips="UG90" data-fips-="" data-iso3="UGA" data-name="Mukono" data-p="MN"/><path d="M303,155L298,152L292,151L290,152L286,151L285,151L285,152L281,152L280,152L279,151L278,151L279,153L280,153L281,155L284,157L286,159L288,161L289,163L291,164L292,165L292,168L292,168L294,170L296,169L299,170L299,168L303,165L304,164L304,158L303,156L303,155Z " data-fips="UGB3" data-fips-="UG60" data-iso3="UGA" data-name="Pallisa" data-p="PL"/><path d="M177,206L172,203L170,203L167,204L165,204L165,205L166,206L167,210L167,213L166,216L167,216L169,216L170,216L174,216L179,219L178,225L178,226L179,229L181,230L187,229L192,230L190,223L189,215L191,213L193,212L189,209L185,207L184,205L181,205L179,205L177,206Z " data-fips="UG74" data-fips-="" data-iso3="UGA" data-name="Sembabule" data-p="SE"/><path d="M223,214L222,213L225,209L231,204L232,200L229,197L225,195L225,196L225,199L222,200L216,200L215,201L206,203L205,201L204,201L200,203L198,203L191,197L188,199L180,201L179,203L179,205L181,205L184,205L185,207L189,209L193,212L194,212L198,211L203,212L206,216L209,220L209,221L210,220L213,218L215,217L219,216L222,214L223,214Z " data-fips="UG89" data-fips-="" data-iso3="UGA" data-name="Mpigi" data-p="MI"/><path d="M214,46L213,45L213,45L209,49L202,48L193,57L191,63L190,66L189,67L187,70L185,72L184,73L184,75L185,76L186,77L192,79L193,77L204,74L207,74L209,69L213,61L213,54L214,54L215,47L214,46Z " data-fips="UG65" data-fips-="" data-iso3="UGA" data-name="Adjumani" data-p="AD"/><path d="M190,66L185,61L184,63L185,65L185,67L181,68L174,69L173,72L166,70L163,68L161,67L154,67L153,69L158,76L158,78L154,89L154,90L164,87L166,92L169,94L176,92L181,84L183,83L182,81L182,79L183,77L184,75L184,73L185,72L187,70L189,67L190,66Z " data-fips="UG99" data-fips-="UG77" data-iso3="UGA" data-name="Arua Municipality" data-p="AU"/><path d="M169,38L163,40L159,47L158,49L160,48L161,54L160,55L163,57L164,58L166,57L167,58L169,54L170,50L170,39L170,37L169,38Z " data-fips="UGC4" data-fips-="" data-iso3="UGA" data-name="Koboko" data-p="KB"/><path d="M200,106L196,107L188,108L186,109L183,110L183,110L184,125L183,127L182,128L181,128L180,129L180,130L181,130L182,132L182,134L183,134L183,134L189,134L193,131L194,135L195,135L197,129L196,128L197,119L201,117L201,105L200,106Z " data-fips="UGD1" data-fips-="" data-iso3="UGA" data-name="Bujenje" data-p="BL"/><path d="M215,47L214,54L213,54L213,61L209,69L207,74L204,74L193,77L192,79L186,77L185,76L184,75L183,77L182,79L182,81L183,83L184,84L185,89L188,99L187,100L186,101L187,101L187,102L184,107L183,108L183,110L186,109L188,108L196,107L200,106L201,105L202,104L209,103L213,106L220,109L224,108L224,108L223,104L223,100L223,98L227,98L229,98L228,97L225,92L226,91L225,89L225,85L223,84L221,75L223,72L224,65L227,62L230,60L227,58L225,55L224,54L220,48L220,48L219,49L216,48L215,47L215,47Z " data-fips="UGD4" data-fips-="" data-iso3="UGA" data-name="Gulu" data-p="GL"/><path d="M183,83L181,84L176,92L169,94L166,92L164,87L154,90L154,90L151,99L156,99L156,101L159,104L162,101L167,105L167,106L171,106L173,106L174,109L177,112L181,106L185,102L186,101L187,100L188,99L185,89L184,84L183,83Z " data-fips="UG58" data-fips-="" data-iso3="UGA" data-name="Nebbi" data-p="NE"/><path d="M209,45L207,40L203,35L192,40L190,41L190,41L190,46L187,51L185,56L185,61L190,66L191,63L193,57L202,48L209,49L213,45L209,45Z " data-fips="UG72" data-fips-="" data-iso3="UGA" data-name="Moyo" data-p="MY"/><path d="M170,37L170,39L170,50L169,54L167,58L168,59L172,56L180,60L182,62L184,63L185,61L185,56L187,51L190,46L190,41L190,42L189,42L179,36L173,36L172,36L170,37Z " data-fips="UG97" data-fips-="" data-iso3="UGA" data-name="Yumbe" data-p="YU"/><path d="M160,55L158,58L157,59L156,61L154,67L161,67L163,68L166,70L173,72L174,69L181,68L185,67L185,65L184,63L182,62L180,60L172,56L168,59L167,58L166,57L164,58L163,57L160,55L160,55Z " data-fips="UGD5" data-fips-="" data-iso3="UGA" data-name="Maracha" data-p="MH"/><path d="M242,202L244,198L243,196L244,191L243,190L242,190L237,192L238,193L237,200L240,202L241,203L241,203L242,202L242,202Z " data-fips="UG37" data-fips-="" data-iso3="UGA" data-name="Kampala" data-p="KM"/><path d="M203,150L199,152L196,151L189,150L185,154L184,154L181,155L180,156L179,157L180,158L184,160L186,163L189,166L189,167L186,172L186,174L192,174L198,177L207,176L209,177L208,181L208,182L210,181L213,186L214,186L218,184L220,183L220,182L221,176L218,172L213,171L212,168L207,157L204,153L204,150L203,150Z " data-fips="UG42" data-fips-="" data-iso3="UGA" data-name="Kiboga" data-p="KG"/><path d="M223,136L222,135L220,135L219,136L217,136L216,137L215,139L212,142L210,145L216,148L224,154L227,155L228,158L229,161L231,163L237,169L238,168L239,162L241,160L244,163L246,163L249,163L249,158L249,154L244,149L244,145L241,145L238,142L230,139L227,138L226,136L223,136Z " data-fips="UG73" data-fips-="" data-iso3="UGA" data-name="Nakasongola" data-p="NA"/><path d="M226,189L225,188L224,187L222,187L221,190L221,192L222,193L223,195L225,195L229,197L232,200L231,204L225,209L222,213L223,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L240,202L237,200L238,193L237,192L242,190L243,190L244,189L244,188L241,188L239,187L237,189L229,188L228,188L228,188L226,189Z " data-fips="UG37" data-fips-="UG96" data-iso3="UGA" data-name="Wakiso" data-p="WA"/><path d="M246,163L244,163L241,160L239,162L238,168L237,169L231,163L229,161L228,165L229,170L233,183L230,183L228,187L228,188L228,188L229,188L237,189L239,187L241,188L244,188L246,185L247,183L247,181L247,177L249,174L249,169L249,163L246,163Z " data-fips="UGA8" data-fips-="UG70" data-iso3="UGA" data-name="Bamunanika" data-p="BM"/><path d="M208,181L209,177L207,176L198,177L192,174L186,174L185,175L182,181L178,181L175,185L176,186L177,187L172,190L170,194L171,198L166,203L165,204L167,204L170,203L172,203L177,206L179,205L179,203L180,201L188,199L191,197L198,203L200,203L204,201L204,199L210,198L211,194L208,189L207,186L208,182L208,182L208,181Z " data-fips="UGB2" data-fips-="UG56" data-iso3="UGA" data-name="Mubende" data-p="MD"/><path d="M218,184L214,186L213,186L210,181L208,182L208,182L207,186L208,189L211,194L210,198L204,199L204,201L205,201L206,203L215,201L216,200L222,200L225,199L225,196L225,195L223,195L222,193L221,192L221,190L222,187L222,186L220,184L220,183L218,184Z " data-fips="UGC6" data-fips-="" data-iso3="UGA" data-name="Busujju" data-p="BS"/><path d="M228,158L227,155L224,154L216,148L210,145L208,146L207,147L204,150L204,153L207,157L212,168L213,171L218,172L221,176L220,182L220,183L220,184L222,186L222,187L224,187L225,188L226,189L228,188L228,187L230,183L233,183L229,170L228,165L229,161L228,158Z " data-fips="UGC7" data-fips-="" data-iso3="UGA" data-name="Nakaseke" data-p="NK"/><path d="M220,48L224,54L225,55L227,58L230,60L236,65L246,64L251,65L255,61L257,63L262,69L265,70L265,67L266,64L272,64L274,64L273,61L276,60L279,61L277,59L281,59L284,60L285,60L287,60L291,61L292,60L294,57L294,56L293,54L291,51L289,46L286,42L284,37L282,38L280,38L266,36L260,32L251,35L248,37L232,38L220,44L220,47L220,48Z " data-fips="UG84" data-fips-="" data-iso3="UGA" data-name="Kitgum" data-p="TG"/><path d="M253,116L249,114L249,112L251,109L250,106L252,106L254,103L254,99L252,96L251,96L250,98L248,99L244,98L245,100L239,103L243,107L238,110L237,113L235,115L232,116L228,116L229,118L228,121L229,123L228,126L225,129L220,130L217,136L217,136L219,136L220,135L222,135L223,136L226,136L228,136L232,134L237,136L240,136L242,135L250,127L254,129L256,129L256,128L257,123L253,122L253,119L254,116L253,116Z " data-fips="UG98" data-fips-="UG26" data-iso3="UGA" data-name="Apac" data-p="AC"/><path d="M230,60L227,62L224,65L223,72L221,75L223,84L225,85L225,89L226,91L225,92L228,97L229,98L231,98L232,99L235,91L239,91L243,91L243,91L245,89L244,87L246,85L242,80L237,71L234,67L236,66L236,65L230,60Z " data-fips="UGA1" data-fips-="UG30" data-iso3="UGA" data-name="Aswa" data-p="AW"/><path d="M281,92L279,90L274,92L272,92L268,92L265,91L260,95L257,94L256,92L251,90L250,92L248,93L251,96L252,96L254,99L254,103L252,106L250,106L251,109L249,112L249,114L253,116L254,116L256,117L261,119L267,115L272,117L273,118L275,118L277,119L276,117L276,116L281,115L282,109L286,104L288,104L289,103L290,101L290,98L289,97L287,96L284,92L281,92Z " data-fips="UGA7" data-fips-="UG47" data-iso3="UGA" data-name="Lira" data-p="LA"/><path d="M272,117L267,115L261,119L256,117L254,116L253,119L253,122L257,123L256,128L256,129L258,129L259,133L260,134L265,129L265,128L272,122L273,118L272,117Z " data-fips="UGD3" data-fips-="" data-iso3="UGA" data-name="Dokolo" data-p="DK"/><path d="M284,60L281,59L277,59L279,61L276,60L273,61L274,64L272,64L266,64L265,67L265,70L262,69L257,63L255,61L251,65L246,64L236,65L236,66L234,67L237,71L242,80L246,85L244,87L245,89L243,91L243,91L248,93L250,92L251,90L256,92L257,94L260,95L265,91L268,92L272,92L274,92L279,90L281,92L284,92L284,88L285,85L287,83L286,75L285,66L285,60L284,60Z " data-fips="UG92" data-fips-="" data-iso3="UGA" data-name="Pader" data-p="PD"/><path d="M224,108L220,109L213,106L209,103L202,104L201,105L201,117L197,119L196,128L197,129L195,135L194,135L193,131L189,134L183,134L183,134L182,137L183,138L185,139L184,140L185,147L188,149L189,150L196,151L199,152L203,150L204,150L207,147L208,146L210,145L212,142L215,139L216,137L217,136L217,136L220,130L225,129L228,126L229,123L228,121L229,118L228,116L228,115L227,114L227,111L225,108L224,108L224,108Z " data-fips="UG50" data-fips-="" data-iso3="UGA" data-name="Masindi" data-p="MC"/><path d="M239,91L235,91L232,99L231,98L229,98L227,98L223,98L223,100L223,104L224,108L225,108L227,111L227,114L228,115L228,116L232,116L235,115L237,113L238,110L243,107L239,103L245,100L244,98L248,99L250,98L251,96L248,93L243,91L239,91Z " data-fips="UGD6" data-fips-="" data-iso3="UGA" data-name="Oyam" data-p="OA"/><path d="M140,156L131,159L129,161L128,163L128,166L125,172L118,174L116,175L115,180L115,191L114,192L114,192L115,192L116,195L118,194L118,193L121,190L124,184L128,176L132,173L138,169L139,166L142,166L142,165L141,165L142,161L141,159L141,157L141,157L141,156L140,156L140,156Z " data-fips="UG28" data-fips-="" data-iso3="UGA" data-name="Bundibugyo" data-p="BN"/><path d="M183,134L182,134L182,132L181,130L180,130L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L149,161L151,162L153,163L159,160L163,160L169,159L171,158L177,157L179,157L180,156L181,155L184,154L185,154L189,150L188,149L185,147L184,140L185,139L183,138L182,137L183,134Z " data-fips="UG31" data-fips-="" data-iso3="UGA" data-name="Hoima" data-p="HO"/><path d="M143,168L143,166L142,165L142,166L139,166L138,169L132,173L128,176L124,184L121,190L118,193L118,194L120,195L126,195L129,198L132,198L132,203L131,205L133,205L136,202L136,195L135,194L139,188L139,187L137,186L139,178L141,176L142,171L143,170L143,168Z " data-fips="UG79" data-fips-="" data-iso3="UGA" data-name="Kabarole" data-p="BR"/><path d="M174,184L165,183L162,181L158,176L156,175L148,172L143,170L142,171L141,176L139,178L137,186L139,187L141,188L143,199L147,196L150,192L158,192L158,197L154,203L154,204L157,204L160,204L162,205L165,205L165,204L166,203L171,198L170,194L172,190L177,187L176,186L175,185L174,184Z " data-fips="UG85" data-fips-="" data-iso3="UGA" data-name="Kyenjojo" data-p="KJ"/><path d="M177,157L171,158L169,159L163,160L159,160L153,163L151,162L149,161L146,165L143,166L143,166L143,168L143,170L148,172L156,175L158,176L162,181L165,183L174,184L175,185L178,181L182,181L185,175L186,174L186,172L189,167L189,166L186,163L184,160L180,158L179,157L177,157Z " data-fips="UG41" data-fips-="" data-iso3="UGA" data-name="Kibale" data-p="KI"/><path d="M324,141L326,142L327,144L327,146L324,147L321,150L322,153L326,155L331,159L330,162L330,162L331,162L332,163L333,163L332,158L335,153L339,152L340,150L341,147L338,143L330,139L327,141L324,141Z " data-fips="UGA4" data-fips-="UG39" data-iso3="UGA" data-name="Kapchorwa" data-p="KP"/><path d="M343,149L341,147L340,150L339,152L335,153L332,158L333,163L333,163L337,158L343,156L344,152L343,150L343,149Z " data-fips="UGB6" data-fips-="" data-iso3="UGA" data-name="Kongasis" data-p="KO"/><path d="M320,141L319,141L318,140L318,141L317,141L317,144L319,148L318,151L315,158L314,159L315,160L317,161L321,162L323,163L324,162L328,162L330,162L331,159L326,155L322,153L321,150L324,147L327,146L327,144L326,142L324,141L320,141Z " data-fips="UG94" data-fips-="" data-iso3="UGA" data-name="Budadiri" data-p="BD"/><path d="M313,159L312,159L312,160L312,162L311,164L310,165L309,165L311,166L312,166L311,170L310,172L311,172L312,173L313,174L314,175L315,174L317,170L318,169L321,163L323,163L321,162L317,161L315,160L314,159L313,159Z " data-fips="UGA9" data-fips-="UG87" data-iso3="UGA" data-name="Bungokho" data-p="BN"/><path d="M328,162L324,162L323,163L321,163L318,169L317,170L315,174L314,175L317,178L320,179L320,178L324,176L328,168L329,163L330,162L328,162Z " data-fips="UGC5" data-fips-="" data-iso3="UGA" data-name="Manafwa" data-p="MF"/><path d="M297,182L296,182L294,180L290,180L289,180L289,181L291,184L288,189L288,190L288,192L289,193L292,195L292,199L293,200L293,203L294,204L300,205L304,204L304,204L300,198L302,195L303,188L304,188L304,188L301,185L301,184L300,182L299,182L298,182L297,182Z " data-fips="UG66" data-fips-="" data-iso3="UGA" data-name="Bugiri" data-p="BG"/><path d="M304,188L304,188L303,188L302,195L300,198L304,204L305,204L308,200L310,197L310,195L311,192L312,187L308,187L307,187L305,188L304,188Z " data-fips="UG67" data-fips-="" data-iso3="UGA" data-name="Busia" data-p="BU"/><path d="M311,170L312,166L311,166L309,165L307,167L304,169L301,170L299,170L296,169L294,170L295,171L296,176L296,178L298,180L298,182L299,182L300,182L300,181L303,176L304,174L309,172L310,172L311,170Z " data-fips="UGB7" data-fips-="" data-iso3="UGA" data-name="Bunyole" data-p="BN"/><path d="M288,192L288,193L288,193L286,193L285,194L284,194L280,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L292,199L292,195L289,193L288,192Z " data-fips="UG86" data-fips-="" data-iso3="UGA" data-name="Mayuge" data-p="MG"/><path d="M320,179L317,178L314,175L313,174L312,173L311,172L310,172L309,172L304,174L303,176L300,181L300,182L301,184L301,185L304,188L305,188L307,187L308,187L312,187L312,187L313,186L318,183L320,180L320,179Z " data-fips="UG76" data-fips-="" data-iso3="UGA" data-name="Tororo" data-p="TR"/><path d="M316,117L316,115L314,113L302,106L301,108L300,110L302,115L301,125L300,126L300,131L299,132L297,134L297,135L297,136L299,136L301,137L304,138L308,137L316,137L316,117Z " data-fips="UGA5" data-fips-="UG69" data-iso3="UGA" data-name="Usuk" data-p="UU"/><path d="M322,69L313,64L308,62L302,61L300,59L299,59L296,58L294,56L294,57L292,60L291,61L287,60L285,60L285,66L287,67L291,67L291,70L297,80L301,83L297,83L297,88L300,89L304,91L306,88L313,85L317,86L319,77L322,73L324,69L322,69Z " data-fips="UGA6" data-fips-="UG45" data-iso3="UGA" data-name="Jie" data-p="JE"/><path d="M294,101L293,100L291,103L289,103L288,104L286,104L282,109L281,115L276,116L276,117L277,119L277,120L279,122L279,124L280,125L280,123L282,119L290,124L290,125L297,133L297,134L299,132L300,131L300,126L301,125L302,115L300,110L301,108L302,106L294,101Z " data-fips="UGB5" data-fips-="" data-iso3="UGA" data-name="Amuria" data-p="AM"/><path d="M284,37L286,42L289,46L291,51L293,54L294,56L296,58L299,59L300,59L302,61L308,62L313,64L322,69L324,69L326,69L329,69L330,69L332,68L332,68L328,66L325,57L324,55L326,48L327,41L324,40L319,39L318,38L313,34L316,32L310,32L311,28L309,26L306,16L294,26L284,36L284,37Z " data-fips="UGC1" data-fips-="" data-iso3="UGA" data-name="Kaabong" data-p="AB"/><path d="M300,89L297,88L297,83L301,83L297,80L291,70L291,67L287,67L285,66L286,75L287,83L285,85L284,88L284,92L287,96L289,97L290,98L291,98L295,96L306,96L304,92L304,91L300,89Z " data-fips="UGC8" data-fips-="" data-iso3="UGA" data-name="Labwor" data-p="LB"/><path d="M324,69L322,73L319,77L317,86L313,85L306,88L304,91L304,92L306,96L295,96L291,98L290,98L290,101L289,103L291,103L293,100L294,101L302,106L314,113L316,115L316,117L316,137L317,137L317,137L319,137L321,134L323,131L328,128L332,125L332,122L337,121L338,119L344,116L346,110L349,108L347,104L347,101L349,98L348,95L345,92L343,88L340,80L336,79L333,75L332,68L330,69L329,69L326,69L324,69Z " data-fips="UG88" data-fips-="" data-iso3="UGA" data-name="Moroto" data-p="MT"/><path d="M349,108L346,110L344,116L338,119L337,121L332,122L332,125L328,128L323,131L321,134L319,137L317,137L317,141L318,141L318,140L319,141L320,141L324,141L327,141L330,139L338,143L341,147L343,149L343,149L346,146L347,143L350,139L352,126L353,124L351,121L352,115L349,108Z " data-fips="UG91" data-fips-="" data-iso3="UGA" data-name="Nakapiripirit" data-p="NP"/><path d="M178,225L179,219L174,216L170,216L169,216L169,220L168,224L169,230L172,237L170,241L168,245L171,246L174,250L174,254L173,255L178,261L202,261L200,256L199,254L199,251L200,248L199,247L197,243L197,239L194,235L191,237L185,240L182,239L179,237L176,236L172,234L173,231L177,227L178,226L178,225Z " data-fips="UG61" data-fips-="" data-iso3="UGA" data-name="Rakai" data-p="RA"/><path d="M206,216L203,212L198,211L194,212L193,212L191,213L189,215L190,223L192,230L187,229L181,230L179,229L178,226L177,227L173,231L172,234L176,236L179,237L182,239L185,240L191,237L194,235L197,239L197,243L199,247L200,248L203,241L206,237L212,229L212,226L211,225L211,224L211,224L210,223L209,223L208,220L209,220L206,216Z " data-fips="UG71" data-fips-="" data-iso3="UGA" data-name="Masaka" data-p="MA"/><path d="M130,220L127,219L127,218L128,218L126,218L124,218L120,219L115,222L102,224L101,229L111,232L113,235L115,236L113,242L114,243L118,248L121,250L122,250L125,248L127,248L129,250L131,250L134,248L138,244L141,232L141,229L142,226L141,226L138,228L134,223L131,221L130,220Z " data-fips="UG29" data-fips-="" data-iso3="UGA" data-name="Bushenyi" data-p="BS"/><path d="M114,192L110,198L108,206L104,209L104,214L103,217L102,224L115,222L120,219L124,218L126,218L128,218L130,211L131,205L132,203L132,198L129,198L126,195L120,195L118,194L116,195L115,192L114,192L114,192L114,192Z " data-fips="UG40" data-fips-="" data-iso3="UGA" data-name="Kasese" data-p="KS"/><path d="M154,203L158,197L158,192L150,192L147,196L143,199L141,188L139,187L139,188L135,194L136,195L136,202L133,205L131,205L130,211L128,218L127,218L127,219L130,220L131,220L136,222L140,221L139,220L136,213L138,212L139,209L140,209L144,207L146,207L147,206L149,204L152,204L154,204L154,203Z " data-fips="UG81" data-fips-="" data-iso3="UGA" data-name="Kamwenge" data-p="KE"/><path d="M147,223L150,221L150,212L146,207L146,207L144,207L140,209L139,209L138,212L136,213L139,220L140,221L136,222L131,220L130,220L131,221L134,223L138,228L141,226L142,226L144,225L147,225L147,223Z " data-fips="UGB8" data-fips-="" data-iso3="UGA" data-name="Ibanda" data-p="IA"/><path d="M152,243L148,243L148,246L147,250L146,252L144,253L146,255L140,264L140,264L148,265L151,262L157,261L178,261L173,255L174,254L174,250L171,246L168,245L167,246L159,247L158,246L156,244L154,243L152,243Z " data-fips="UGB9" data-fips-="" data-iso3="UGA" data-name="Bukanga" data-p="BK"/><path d="M152,204L149,204L147,206L146,207L146,207L150,212L150,221L147,223L147,225L146,228L151,234L156,238L154,241L154,243L156,244L158,246L159,247L167,246L168,245L170,241L172,237L169,230L168,224L169,220L169,216L167,216L166,216L167,213L167,210L166,206L165,205L162,205L160,204L157,204L154,204L152,204Z " data-fips="UGC3" data-fips-="" data-iso3="UGA" data-name="Mbarara" data-p="RR"/><path d="M121,250L121,252L120,257L121,258L120,262L120,263L120,264L122,268L126,270L131,268L132,268L136,264L139,264L140,264L146,255L144,253L146,252L144,252L135,253L130,251L131,250L129,250L127,248L125,248L122,250L121,250Z " data-fips="UG59" data-fips-="" data-iso3="UGA" data-name="Ntungamo" data-p="NT"/><path d="M100,235L100,236L101,236L104,234L104,242L107,243L108,248L109,254L110,255L110,258L113,263L115,264L115,262L119,263L120,263L120,262L121,258L120,257L121,252L121,250L118,248L114,243L113,242L115,236L113,235L111,232L101,229L100,235Z " data-fips="UG93" data-fips-="" data-iso3="UGA" data-name="Rukungiri" data-p="RK"/><path d="M154,241L156,238L151,234L146,228L147,225L144,225L142,226L141,229L141,232L138,244L134,248L131,250L130,251L135,253L144,252L146,252L147,250L148,246L148,243L152,243L154,243L154,241Z " data-fips="UGB1" data-fips-="UG52" data-iso3="UGA" data-name="Kashari" data-p="KS"/><path d="M113,263L112,263L110,263L107,262L106,264L106,265L106,266L107,269L107,271L110,276L110,277L112,282L114,284L124,278L125,275L131,269L131,268L126,270L122,268L120,264L120,263L119,263L115,262L115,264L113,263Z " data-fips="UG34" data-fips-="" data-iso3="UGA" data-name="Kabale" data-p="KA"/><path d="M97,261L97,264L98,277L100,280L104,278L110,276L110,276L107,271L107,269L106,266L106,265L104,264L102,263L99,262L97,261L97,261Z " data-fips="UG43" data-fips-="" data-iso3="UGA" data-name="Kisoro" data-p="KR"/><path d="M101,237L100,242L99,255L97,260L97,261L99,262L102,263L104,264L106,265L106,264L107,262L110,263L112,263L113,263L110,258L110,255L109,254L108,248L107,243L104,242L104,234L101,236L101,237Z " data-fips="UG82" data-fips-="" data-iso3="UGA" data-name="Kanungu" data-p="UU"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="-0.564616387286" lon0="32.4167090184"/><bbox h="78.36" w="75.42" x="960.56" y="936.93"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M0,0L0,299L78,299L87,286L90,285L96,281L98,279L98,278L97,260L99,247L101,239L101,235L104,217L104,209L107,206L109,202L115,191L114,182L115,176L120,173L126,168L129,162L133,158L140,156L140,155L137,155L136,153L139,149L140,145L143,142L146,140L150,135L151,134L159,127L162,124L164,123L173,116L177,113L177,112L173,107L169,106L163,101L157,101L152,98L152,95L154,88L158,80L157,76L153,71L155,65L161,54L160,51L157,50L156,48L154,43L151,43L146,43L144,42L142,33L138,31L127,27L112,10L108,3L105,0L91,0L89,2L82,7L78,7L74,5L68,3L58,2L49,8L44,10L41,11L33,9L28,6L22,0L0,0Z " data-iso="COD"/><path d="M450,0L398,0L401,4L404,5L442,6L450,11L450,0Z " data-iso="ETH"/><path d="M320,0L314,6L305,15L312,31L314,35L319,38L325,40L327,44L325,53L327,65L331,67L334,76L342,86L344,91L349,97L348,100L349,109L351,117L352,126L352,137L343,149L344,154L340,157L337,158L329,165L325,173L320,180L319,182L314,186L311,190L310,196L308,200L305,204L305,204L305,210L305,213L306,215L307,217L309,218L312,218L312,218L311,220L312,222L317,226L320,231L321,231L323,229L324,226L326,223L331,221L340,218L344,227L344,228L339,229L333,230L329,231L328,231L329,236L328,237L326,238L324,236L322,236L319,235L316,235L314,236L310,241L309,244L309,248L311,252L314,255L313,258L312,260L309,261L309,263L309,263L332,276L373,299L450,299L450,11L442,6L404,5L401,4L398,0L320,0Z " data-iso="KEN"/><path d="M142,264L140,264L133,267L131,270L123,279L117,282L112,282L110,277L99,279L98,279L96,281L90,285L87,286L78,299L156,299L157,294L156,288L154,283L151,280L148,278L142,271L140,267L140,265L142,264Z " data-iso="RWA"/><path d="M157,50L159,47L162,43L167,39L172,36L175,36L188,41L195,40L202,35L209,44L219,48L221,44L228,40L237,38L251,35L259,31L266,36L274,37L282,37L294,26L305,15L314,6L320,0L105,0L108,3L112,10L127,27L138,31L142,33L144,42L146,43L151,43L154,43L156,48L157,50Z M22,0L28,6L33,9L41,11L44,10L49,8L58,2L68,3L74,5L78,7L82,7L89,2L91,0L22,0Z " data-iso="SSD"/><path d="M202,261L157,261L153,262L149,264L142,264L142,264L140,265L140,267L142,271L148,278L151,280L154,283L156,288L157,294L156,299L198,299L201,284L203,281L204,278L206,265L205,263L205,262L204,262L203,262L202,262L202,261Z M284,299L373,299L332,276L309,263L303,270L302,273L302,274L304,276L303,277L299,277L298,278L298,280L297,280L298,281L302,284L302,285L301,285L296,284L293,284L291,284L290,285L289,288L290,290L291,291L287,294L287,297L284,299Z " data-iso="TZA"/><path d="M305,204L308,200L310,196L311,190L314,186L319,182L320,180L325,173L329,165L337,158L340,157L344,154L343,149L352,137L352,126L351,117L349,109L348,100L349,97L344,91L342,86L334,76L331,67L327,65L325,53L327,44L325,40L319,38L314,35L312,31L305,15L294,26L282,37L274,37L266,36L259,31L251,35L237,38L228,40L221,44L219,48L209,44L202,35L195,40L188,41L175,36L172,36L167,39L162,43L159,47L157,50L160,51L161,54L155,65L153,71L157,76L158,80L154,88L152,95L152,98L157,101L163,101L169,106L173,107L177,112L181,106L185,102L187,101L187,102L184,107L183,108L183,110L184,125L183,127L182,128L181,128L180,129L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L146,165L143,166L141,165L142,161L141,159L141,157L141,157L141,156L140,156L133,158L129,162L126,168L120,173L115,176L114,182L115,191L109,202L107,206L104,209L104,217L101,235L101,239L99,247L97,260L98,278L98,279L99,279L110,277L112,282L117,282L123,279L131,270L133,267L140,264L142,264L142,264L149,264L153,262L157,261L202,261L200,256L199,254L199,251L203,241L206,237L212,229L212,226L211,224L209,223L209,222L210,220L213,218L215,217L219,216L222,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L272,192L274,193L276,192L276,193L275,197L276,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L293,200L293,203L294,204L300,205L304,204L305,204Z " data-iso="UGA"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M209,221L209,220L208,220L209,223L210,223L209,223L209,222L209,221Z M211,224L211,225L212,226L212,226L211,224Z " data-fips="UG36" data-fips-="" data-iso3="UGA" data-name="Kalangala" data-p="KN"/><path d="M268,182L265,182L265,183L263,183L261,183L261,184L263,188L264,188L266,191L269,193L272,192L274,193L276,192L276,193L275,197L276,198L280,198L284,194L285,194L286,193L285,192L285,189L280,188L278,186L274,184L273,184L269,182L268,182Z " data-fips="UG33" data-fips-="" data-iso3="UGA" data-name="Jinja" data-p="JI"/><path d="M308,137L304,138L301,137L299,136L297,136L296,136L293,138L290,148L286,150L285,151L286,151L290,152L292,151L298,152L303,155L303,156L308,157L308,158L309,158L312,159L313,159L314,159L315,158L318,151L319,148L317,144L317,141L317,137L317,137L316,137L308,137Z " data-fips="UG46" data-fips-="" data-iso3="UGA" data-name="Kumi" data-p="KU"/><path d="M275,118L273,118L272,122L265,128L265,129L260,134L259,133L258,136L256,137L257,141L257,145L258,145L259,145L260,145L262,147L264,148L269,145L272,144L269,141L273,137L279,134L280,126L280,125L279,124L279,122L277,120L277,119L275,118Z " data-fips="UG80" data-fips-="" data-iso3="UGA" data-name="Kaberamaido" data-p="KD"/><path d="M261,181L260,175L257,171L256,162L257,158L255,155L253,152L251,148L250,145L244,145L244,149L249,154L249,158L249,163L249,169L249,174L251,177L252,180L253,183L256,184L259,189L262,190L264,188L263,188L261,184L261,183L261,181Z " data-fips="UG83" data-fips-="" data-iso3="UGA" data-name="Kayunga" data-p="KY"/><path d="M282,174L278,172L278,168L276,164L275,163L274,164L273,174L270,179L269,181L269,182L273,184L274,184L278,186L280,188L285,189L285,192L286,193L288,193L288,193L288,192L288,190L288,189L291,184L289,181L289,180L288,178L286,177L285,177L285,176L284,173L282,174Z " data-fips="UGA2" data-fips-="UG78" data-iso3="UGA" data-name="Iganga" data-p="IN"/><path d="M250,145L251,148L253,152L255,155L257,158L256,162L257,171L260,175L261,181L261,183L263,183L265,183L265,182L268,182L269,182L269,181L270,179L273,174L274,164L275,163L276,162L279,156L280,155L280,153L279,153L278,151L278,150L273,150L271,152L265,149L264,148L262,147L260,145L259,145L258,145L257,145L250,145Z " data-fips="UGA3" data-fips-="UG38" data-iso3="UGA" data-name="Kamuli" data-p="KX"/><path d="M254,129L250,127L242,135L240,136L237,136L232,134L228,136L226,136L227,138L230,139L238,142L241,145L244,145L250,145L257,145L257,141L256,137L258,136L259,133L258,129L256,129L254,129Z " data-fips="UGB4" data-fips-="" data-iso3="UGA" data-name="Kyoga" data-p="KO"/><path d="M288,161L286,159L284,157L281,155L280,153L280,155L279,156L276,162L275,163L276,164L278,168L278,172L282,174L284,173L286,167L287,166L288,165L288,164L289,163L288,161Z " data-fips="UGC2" data-fips-="" data-iso3="UGA" data-name="Bulamogi" data-p="BL"/><path d="M309,158L308,158L308,157L303,156L304,158L304,164L303,165L299,168L299,170L301,170L304,169L307,167L309,165L310,165L311,164L312,162L312,160L312,159L309,158Z " data-fips="UGC9" data-fips-="" data-iso3="UGA" data-name="Budaka" data-p="BD"/><path d="M292,168L292,168L292,165L291,164L289,163L288,164L288,165L287,166L286,167L284,173L285,176L285,177L286,177L288,178L289,180L290,180L294,180L296,182L297,182L298,182L298,180L296,178L296,176L295,171L294,170L292,168Z " data-fips="UGD2" data-fips-="" data-iso3="UGA" data-name="Busiki" data-p="BS"/><path d="M297,133L290,125L290,124L282,119L280,123L280,125L280,126L279,134L273,137L269,141L272,144L269,145L264,148L265,149L271,152L273,150L278,150L278,151L279,151L280,152L281,152L285,152L285,151L286,150L290,148L293,138L296,136L297,136L297,135L297,134L297,133Z " data-fips="UG95" data-fips-="" data-iso3="UGA" data-name="Soroti" data-p="SR"/><path d="M262,190L259,189L256,184L253,183L252,180L251,177L249,174L247,177L247,181L247,183L246,185L244,188L244,189L243,190L244,191L243,196L244,198L242,202L242,202L242,202L244,205L245,206L244,208L244,209L245,209L247,209L249,208L252,206L253,206L254,209L255,210L257,209L260,207L262,205L263,203L266,202L269,196L268,194L269,193L266,191L264,188L262,190Z " data-fips="UG90" data-fips-="" data-iso3="UGA" data-name="Mukono" data-p="MN"/><path d="M303,155L298,152L292,151L290,152L286,151L285,151L285,152L281,152L280,152L279,151L278,151L279,153L280,153L281,155L284,157L286,159L288,161L289,163L291,164L292,165L292,168L292,168L294,170L296,169L299,170L299,168L303,165L304,164L304,158L303,156L303,155Z " data-fips="UGB3" data-fips-="UG60" data-iso3="UGA" data-name="Pallisa" data-p="PL"/><path d="M177,206L172,203L170,203L167,204L165,204L165,205L166,206L167,210L167,213L166,216L167,216L169,216L170,216L174,216L179,219L178,225L178,226L179,229L181,230L187,229L192,230L190,223L189,215L191,213L193,212L189,209L185,207L184,205L181,205L179,205L177,206Z " data-fips="UG74" data-fips-="" data-iso3="UGA" data-name="Sembabule" data-p="SE"/><path d="M223,214L222,213L225,209L231,204L232,200L229,197L225,195L225,196L225,199L222,200L216,200L215,201L206,203L205,201L204,201L200,203L198,203L191,197L188,199L180,201L179,203L179,205L181,205L184,205L185,207L189,209L193,212L194,212L198,211L203,212L206,216L209,220L209,221L210,220L213,218L215,217L219,216L222,214L223,214Z " data-fips="UG89" data-fips-="" data-iso3="UGA" data-name="Mpigi" data-p="MI"/><path d="M214,46L213,45L213,45L209,49L202,48L193,57L191,63L190,66L189,67L187,70L185,72L184,73L184,75L185,76L186,77L192,79L193,77L204,74L207,74L209,69L213,61L213,54L214,54L215,47L214,46Z " data-fips="UG65" data-fips-="" data-iso3="UGA" data-name="Adjumani" data-p="AD"/><path d="M190,66L185,61L184,63L185,65L185,67L181,68L174,69L173,72L166,70L163,68L161,67L154,67L153,69L158,76L158,78L154,89L154,90L164,87L166,92L169,94L176,92L181,84L183,83L182,81L182,79L183,77L184,75L184,73L185,72L187,70L189,67L190,66Z " data-fips="UG99" data-fips-="UG77" data-iso3="UGA" data-name="Arua Municipality" data-p="AU"/><path d="M169,38L163,40L159,47L158,49L160,48L161,54L160,55L163,57L164,58L166,57L167,58L169,54L170,50L170,39L170,37L169,38Z " data-fips="UGC4" data-fips-="" data-iso3="UGA" data-name="Koboko" data-p="KB"/><path d="M200,106L196,107L188,108L186,109L183,110L183,110L184,125L183,127L182,128L181,128L180,129L180,130L181,130L182,132L182,134L183,134L183,134L189,134L193,131L194,135L195,135L197,129L196,128L197,119L201,117L201,105L200,106Z " data-fips="UGD1" data-fips-="" data-iso3="UGA" data-name="Bujenje" data-p="BL"/><path d="M215,47L214,54L213,54L213,61L209,69L207,74L204,74L193,77L192,79L186,77L185,76L184,75L183,77L182,79L182,81L183,83L184,84L185,89L188,99L187,100L186,101L187,101L187,102L184,107L183,108L183,110L186,109L188,108L196,107L200,106L201,105L202,104L209,103L213,106L220,109L224,108L224,108L223,104L223,100L223,98L227,98L229,98L228,97L225,92L226,91L225,89L225,85L223,84L221,75L223,72L224,65L227,62L230,60L227,58L225,55L224,54L220,48L220,48L219,49L216,48L215,47L215,47Z " data-fips="UGD4" data-fips-="" data-iso3="UGA" data-name="Gulu" data-p="GL"/><path d="M183,83L181,84L176,92L169,94L166,92L164,87L154,90L154,90L151,99L156,99L156,101L159,104L162,101L167,105L167,106L171,106L173,106L174,109L177,112L181,106L185,102L186,101L187,100L188,99L185,89L184,84L183,83Z " data-fips="UG58" data-fips-="" data-iso3="UGA" data-name="Nebbi" data-p="NE"/><path d="M209,45L207,40L203,35L192,40L190,41L190,41L190,46L187,51L185,56L185,61L190,66L191,63L193,57L202,48L209,49L213,45L209,45Z " data-fips="UG72" data-fips-="" data-iso3="UGA" data-name="Moyo" data-p="MY"/><path d="M170,37L170,39L170,50L169,54L167,58L168,59L172,56L180,60L182,62L184,63L185,61L185,56L187,51L190,46L190,41L190,42L189,42L179,36L173,36L172,36L170,37Z " data-fips="UG97" data-fips-="" data-iso3="UGA" data-name="Yumbe" data-p="YU"/><path d="M160,55L158,58L157,59L156,61L154,67L161,67L163,68L166,70L173,72L174,69L181,68L185,67L185,65L184,63L182,62L180,60L172,56L168,59L167,58L166,57L164,58L163,57L160,55L160,55Z " data-fips="UGD5" data-fips-="" data-iso3="UGA" data-name="Maracha" data-p="MH"/><path d="M242,202L244,198L243,196L244,191L243,190L242,190L237,192L238,193L237,200L240,202L241,203L241,203L242,202L242,202Z " data-fips="UG37" data-fips-="" data-iso3="UGA" data-name="Kampala" data-p="KM"/><path d="M203,150L199,152L196,151L189,150L185,154L184,154L181,155L180,156L179,157L180,158L184,160L186,163L189,166L189,167L186,172L186,174L192,174L198,177L207,176L209,177L208,181L208,182L210,181L213,186L214,186L218,184L220,183L220,182L221,176L218,172L213,171L212,168L207,157L204,153L204,150L203,150Z " data-fips="UG42" data-fips-="" data-iso3="UGA" data-name="Kiboga" data-p="KG"/><path d="M223,136L222,135L220,135L219,136L217,136L216,137L215,139L212,142L210,145L216,148L224,154L227,155L228,158L229,161L231,163L237,169L238,168L239,162L241,160L244,163L246,163L249,163L249,158L249,154L244,149L244,145L241,145L238,142L230,139L227,138L226,136L223,136Z " data-fips="UG73" data-fips-="" data-iso3="UGA" data-name="Nakasongola" data-p="NA"/><path d="M226,189L225,188L224,187L222,187L221,190L221,192L222,193L223,195L225,195L229,197L232,200L231,204L225,209L222,213L223,214L224,214L225,213L228,213L230,211L231,210L233,210L233,211L235,212L237,211L239,209L240,205L241,203L240,202L237,200L238,193L237,192L242,190L243,190L244,189L244,188L241,188L239,187L237,189L229,188L228,188L228,188L226,189Z " data-fips="UG37" data-fips-="UG96" data-iso3="UGA" data-name="Wakiso" data-p="WA"/><path d="M246,163L244,163L241,160L239,162L238,168L237,169L231,163L229,161L228,165L229,170L233,183L230,183L228,187L228,188L228,188L229,188L237,189L239,187L241,188L244,188L246,185L247,183L247,181L247,177L249,174L249,169L249,163L246,163Z " data-fips="UGA8" data-fips-="UG70" data-iso3="UGA" data-name="Bamunanika" data-p="BM"/><path d="M208,181L209,177L207,176L198,177L192,174L186,174L185,175L182,181L178,181L175,185L176,186L177,187L172,190L170,194L171,198L166,203L165,204L167,204L170,203L172,203L177,206L179,205L179,203L180,201L188,199L191,197L198,203L200,203L204,201L204,199L210,198L211,194L208,189L207,186L208,182L208,182L208,181Z " data-fips="UGB2" data-fips-="UG56" data-iso3="UGA" data-name="Mubende" data-p="MD"/><path d="M218,184L214,186L213,186L210,181L208,182L208,182L207,186L208,189L211,194L210,198L204,199L204,201L205,201L206,203L215,201L216,200L222,200L225,199L225,196L225,195L223,195L222,193L221,192L221,190L222,187L222,186L220,184L220,183L218,184Z " data-fips="UGC6" data-fips-="" data-iso3="UGA" data-name="Busujju" data-p="BS"/><path d="M228,158L227,155L224,154L216,148L210,145L208,146L207,147L204,150L204,153L207,157L212,168L213,171L218,172L221,176L220,182L220,183L220,184L222,186L222,187L224,187L225,188L226,189L228,188L228,187L230,183L233,183L229,170L228,165L229,161L228,158Z " data-fips="UGC7" data-fips-="" data-iso3="UGA" data-name="Nakaseke" data-p="NK"/><path d="M220,48L224,54L225,55L227,58L230,60L236,65L246,64L251,65L255,61L257,63L262,69L265,70L265,67L266,64L272,64L274,64L273,61L276,60L279,61L277,59L281,59L284,60L285,60L287,60L291,61L292,60L294,57L294,56L293,54L291,51L289,46L286,42L284,37L282,38L280,38L266,36L260,32L251,35L248,37L232,38L220,44L220,47L220,48Z " data-fips="UG84" data-fips-="" data-iso3="UGA" data-name="Kitgum" data-p="TG"/><path d="M253,116L249,114L249,112L251,109L250,106L252,106L254,103L254,99L252,96L251,96L250,98L248,99L244,98L245,100L239,103L243,107L238,110L237,113L235,115L232,116L228,116L229,118L228,121L229,123L228,126L225,129L220,130L217,136L217,136L219,136L220,135L222,135L223,136L226,136L228,136L232,134L237,136L240,136L242,135L250,127L254,129L256,129L256,128L257,123L253,122L253,119L254,116L253,116Z " data-fips="UG98" data-fips-="UG26" data-iso3="UGA" data-name="Apac" data-p="AC"/><path d="M230,60L227,62L224,65L223,72L221,75L223,84L225,85L225,89L226,91L225,92L228,97L229,98L231,98L232,99L235,91L239,91L243,91L243,91L245,89L244,87L246,85L242,80L237,71L234,67L236,66L236,65L230,60Z " data-fips="UGA1" data-fips-="UG30" data-iso3="UGA" data-name="Aswa" data-p="AW"/><path d="M281,92L279,90L274,92L272,92L268,92L265,91L260,95L257,94L256,92L251,90L250,92L248,93L251,96L252,96L254,99L254,103L252,106L250,106L251,109L249,112L249,114L253,116L254,116L256,117L261,119L267,115L272,117L273,118L275,118L277,119L276,117L276,116L281,115L282,109L286,104L288,104L289,103L290,101L290,98L289,97L287,96L284,92L281,92Z " data-fips="UGA7" data-fips-="UG47" data-iso3="UGA" data-name="Lira" data-p="LA"/><path d="M272,117L267,115L261,119L256,117L254,116L253,119L253,122L257,123L256,128L256,129L258,129L259,133L260,134L265,129L265,128L272,122L273,118L272,117Z " data-fips="UGD3" data-fips-="" data-iso3="UGA" data-name="Dokolo" data-p="DK"/><path d="M284,60L281,59L277,59L279,61L276,60L273,61L274,64L272,64L266,64L265,67L265,70L262,69L257,63L255,61L251,65L246,64L236,65L236,66L234,67L237,71L242,80L246,85L244,87L245,89L243,91L243,91L248,93L250,92L251,90L256,92L257,94L260,95L265,91L268,92L272,92L274,92L279,90L281,92L284,92L284,88L285,85L287,83L286,75L285,66L285,60L284,60Z " data-fips="UG92" data-fips-="" data-iso3="UGA" data-name="Pader" data-p="PD"/><path d="M224,108L220,109L213,106L209,103L202,104L201,105L201,117L197,119L196,128L197,129L195,135L194,135L193,131L189,134L183,134L183,134L182,137L183,138L185,139L184,140L185,147L188,149L189,150L196,151L199,152L203,150L204,150L207,147L208,146L210,145L212,142L215,139L216,137L217,136L217,136L220,130L225,129L228,126L229,123L228,121L229,118L228,116L228,115L227,114L227,111L225,108L224,108L224,108Z " data-fips="UG50" data-fips-="" data-iso3="UGA" data-name="Masindi" data-p="MC"/><path d="M239,91L235,91L232,99L231,98L229,98L227,98L223,98L223,100L223,104L224,108L225,108L227,111L227,114L228,115L228,116L232,116L235,115L237,113L238,110L243,107L239,103L245,100L244,98L248,99L250,98L251,96L248,93L243,91L239,91Z " data-fips="UGD6" data-fips-="" data-iso3="UGA" data-name="Oyam" data-p="OA"/><path d="M140,156L131,159L129,161L128,163L128,166L125,172L118,174L116,175L115,180L115,191L114,192L114,192L115,192L116,195L118,194L118,193L121,190L124,184L128,176L132,173L138,169L139,166L142,166L142,165L141,165L142,161L141,159L141,157L141,157L141,156L140,156L140,156Z " data-fips="UG28" data-fips-="" data-iso3="UGA" data-name="Bundibugyo" data-p="BN"/><path d="M183,134L182,134L182,132L181,130L180,130L179,132L177,135L173,138L171,139L167,140L166,141L163,142L160,146L155,152L152,156L152,158L149,161L151,162L153,163L159,160L163,160L169,159L171,158L177,157L179,157L180,156L181,155L184,154L185,154L189,150L188,149L185,147L184,140L185,139L183,138L182,137L183,134Z " data-fips="UG31" data-fips-="" data-iso3="UGA" data-name="Hoima" data-p="HO"/><path d="M143,168L143,166L142,165L142,166L139,166L138,169L132,173L128,176L124,184L121,190L118,193L118,194L120,195L126,195L129,198L132,198L132,203L131,205L133,205L136,202L136,195L135,194L139,188L139,187L137,186L139,178L141,176L142,171L143,170L143,168Z " data-fips="UG79" data-fips-="" data-iso3="UGA" data-name="Kabarole" data-p="BR"/><path d="M174,184L165,183L162,181L158,176L156,175L148,172L143,170L142,171L141,176L139,178L137,186L139,187L141,188L143,199L147,196L150,192L158,192L158,197L154,203L154,204L157,204L160,204L162,205L165,205L165,204L166,203L171,198L170,194L172,190L177,187L176,186L175,185L174,184Z " data-fips="UG85" data-fips-="" data-iso3="UGA" data-name="Kyenjojo" data-p="KJ"/><path d="M177,157L171,158L169,159L163,160L159,160L153,163L151,162L149,161L146,165L143,166L143,166L143,168L143,170L148,172L156,175L158,176L162,181L165,183L174,184L175,185L178,181L182,181L185,175L186,174L186,172L189,167L189,166L186,163L184,160L180,158L179,157L177,157Z " data-fips="UG41" data-fips-="" data-iso3="UGA" data-name="Kibale" data-p="KI"/><path d="M324,141L326,142L327,144L327,146L324,147L321,150L322,153L326,155L331,159L330,162L330,162L331,162L332,163L333,163L332,158L335,153L339,152L340,150L341,147L338,143L330,139L327,141L324,141Z " data-fips="UGA4" data-fips-="UG39" data-iso3="UGA" data-name="Kapchorwa" data-p="KP"/><path d="M343,149L341,147L340,150L339,152L335,153L332,158L333,163L333,163L337,158L343,156L344,152L343,150L343,149Z " data-fips="UGB6" data-fips-="" data-iso3="UGA" data-name="Kongasis" data-p="KO"/><path d="M320,141L319,141L318,140L318,141L317,141L317,144L319,148L318,151L315,158L314,159L315,160L317,161L321,162L323,163L324,162L328,162L330,162L331,159L326,155L322,153L321,150L324,147L327,146L327,144L326,142L324,141L320,141Z " data-fips="UG94" data-fips-="" data-iso3="UGA" data-name="Budadiri" data-p="BD"/><path d="M313,159L312,159L312,160L312,162L311,164L310,165L309,165L311,166L312,166L311,170L310,172L311,172L312,173L313,174L314,175L315,174L317,170L318,169L321,163L323,163L321,162L317,161L315,160L314,159L313,159Z " data-fips="UGA9" data-fips-="UG87" data-iso3="UGA" data-name="Bungokho" data-p="BN"/><path d="M328,162L324,162L323,163L321,163L318,169L317,170L315,174L314,175L317,178L320,179L320,178L324,176L328,168L329,163L330,162L328,162Z " data-fips="UGC5" data-fips-="" data-iso3="UGA" data-name="Manafwa" data-p="MF"/><path d="M297,182L296,182L294,180L290,180L289,180L289,181L291,184L288,189L288,190L288,192L289,193L292,195L292,199L293,200L293,203L294,204L300,205L304,204L304,204L300,198L302,195L303,188L304,188L304,188L301,185L301,184L300,182L299,182L298,182L297,182Z " data-fips="UG66" data-fips-="" data-iso3="UGA" data-name="Bugiri" data-p="BG"/><path d="M304,188L304,188L303,188L302,195L300,198L304,204L305,204L308,200L310,197L310,195L311,192L312,187L308,187L307,187L305,188L304,188Z " data-fips="UG67" data-fips-="" data-iso3="UGA" data-name="Busia" data-p="BU"/><path d="M311,170L312,166L311,166L309,165L307,167L304,169L301,170L299,170L296,169L294,170L295,171L296,176L296,178L298,180L298,182L299,182L300,182L300,181L303,176L304,174L309,172L310,172L311,170Z " data-fips="UGB7" data-fips-="" data-iso3="UGA" data-name="Bunyole" data-p="BN"/><path d="M288,192L288,193L288,193L286,193L285,194L284,194L280,198L281,198L282,199L282,200L280,201L280,203L282,204L284,204L286,204L289,200L291,199L292,199L292,195L289,193L288,192Z " data-fips="UG86" data-fips-="" data-iso3="UGA" data-name="Mayuge" data-p="MG"/><path d="M320,179L317,178L314,175L313,174L312,173L311,172L310,172L309,172L304,174L303,176L300,181L300,182L301,184L301,185L304,188L305,188L307,187L308,187L312,187L312,187L313,186L318,183L320,180L320,179Z " data-fips="UG76" data-fips-="" data-iso3="UGA" data-name="Tororo" data-p="TR"/><path d="M316,117L316,115L314,113L302,106L301,108L300,110L302,115L301,125L300,126L300,131L299,132L297,134L297,135L297,136L299,136L301,137L304,138L308,137L316,137L316,117Z " data-fips="UGA5" data-fips-="UG69" data-iso3="UGA" data-name="Usuk" data-p="UU"/><path d="M322,69L313,64L308,62L302,61L300,59L299,59L296,58L294,56L294,57L292,60L291,61L287,60L285,60L285,66L287,67L291,67L291,70L297,80L301,83L297,83L297,88L300,89L304,91L306,88L313,85L317,86L319,77L322,73L324,69L322,69Z " data-fips="UGA6" data-fips-="UG45" data-iso3="UGA" data-name="Jie" data-p="JE"/><path d="M294,101L293,100L291,103L289,103L288,104L286,104L282,109L281,115L276,116L276,117L277,119L277,120L279,122L279,124L280,125L280,123L282,119L290,124L290,125L297,133L297,134L299,132L300,131L300,126L301,125L302,115L300,110L301,108L302,106L294,101Z " data-fips="UGB5" data-fips-="" data-iso3="UGA" data-name="Amuria" data-p="AM"/><path d="M284,37L286,42L289,46L291,51L293,54L294,56L296,58L299,59L300,59L302,61L308,62L313,64L322,69L324,69L326,69L329,69L330,69L332,68L332,68L328,66L325,57L324,55L326,48L327,41L324,40L319,39L318,38L313,34L316,32L310,32L311,28L309,26L306,16L294,26L284,36L284,37Z " data-fips="UGC1" data-fips-="" data-iso3="UGA" data-name="Kaabong" data-p="AB"/><path d="M300,89L297,88L297,83L301,83L297,80L291,70L291,67L287,67L285,66L286,75L287,83L285,85L284,88L284,92L287,96L289,97L290,98L291,98L295,96L306,96L304,92L304,91L300,89Z " data-fips="UGC8" data-fips-="" data-iso3="UGA" data-name="Labwor" data-p="LB"/><path d="M324,69L322,73L319,77L317,86L313,85L306,88L304,91L304,92L306,96L295,96L291,98L290,98L290,101L289,103L291,103L293,100L294,101L302,106L314,113L316,115L316,117L316,137L317,137L317,137L319,137L321,134L323,131L328,128L332,125L332,122L337,121L338,119L344,116L346,110L349,108L347,104L347,101L349,98L348,95L345,92L343,88L340,80L336,79L333,75L332,68L330,69L329,69L326,69L324,69Z " data-fips="UG88" data-fips-="" data-iso3="UGA" data-name="Moroto" data-p="MT"/><path d="M349,108L346,110L344,116L338,119L337,121L332,122L332,125L328,128L323,131L321,134L319,137L317,137L317,141L318,141L318,140L319,141L320,141L324,141L327,141L330,139L338,143L341,147L343,149L343,149L346,146L347,143L350,139L352,126L353,124L351,121L352,115L349,108Z " data-fips="UG91" data-fips-="" data-iso3="UGA" data-name="Nakapiripirit" data-p="NP"/><path d="M178,225L179,219L174,216L170,216L169,216L169,220L168,224L169,230L172,237L170,241L168,245L171,246L174,250L174,254L173,255L178,261L202,261L200,256L199,254L199,251L200,248L199,247L197,243L197,239L194,235L191,237L185,240L182,239L179,237L176,236L172,234L173,231L177,227L178,226L178,225Z " data-fips="UG61" data-fips-="" data-iso3="UGA" data-name="Rakai" data-p="RA"/><path d="M206,216L203,212L198,211L194,212L193,212L191,213L189,215L190,223L192,230L187,229L181,230L179,229L178,226L177,227L173,231L172,234L176,236L179,237L182,239L185,240L191,237L194,235L197,239L197,243L199,247L200,248L203,241L206,237L212,229L212,226L211,225L211,224L211,224L210,223L209,223L208,220L209,220L206,216Z " data-fips="UG71" data-fips-="" data-iso3="UGA" data-name="Masaka" data-p="MA"/><path d="M130,220L127,219L127,218L128,218L126,218L124,218L120,219L115,222L102,224L101,229L111,232L113,235L115,236L113,242L114,243L118,248L121,250L122,250L125,248L127,248L129,250L131,250L134,248L138,244L141,232L141,229L142,226L141,226L138,228L134,223L131,221L130,220Z " data-fips="UG29" data-fips-="" data-iso3="UGA" data-name="Bushenyi" data-p="BS"/><path d="M114,192L110,198L108,206L104,209L104,214L103,217L102,224L115,222L120,219L124,218L126,218L128,218L130,211L131,205L132,203L132,198L129,198L126,195L120,195L118,194L116,195L115,192L114,192L114,192L114,192Z " data-fips="UG40" data-fips-="" data-iso3="UGA" data-name="Kasese" data-p="KS"/><path d="M154,203L158,197L158,192L150,192L147,196L143,199L141,188L139,187L139,188L135,194L136,195L136,202L133,205L131,205L130,211L128,218L127,218L127,219L130,220L131,220L136,222L140,221L139,220L136,213L138,212L139,209L140,209L144,207L146,207L147,206L149,204L152,204L154,204L154,203Z " data-fips="UG81" data-fips-="" data-iso3="UGA" data-name="Kamwenge" data-p="KE"/><path d="M147,223L150,221L150,212L146,207L146,207L144,207L140,209L139,209L138,212L136,213L139,220L140,221L136,222L131,220L130,220L131,221L134,223L138,228L141,226L142,226L144,225L147,225L147,223Z " data-fips="UGB8" data-fips-="" data-iso3="UGA" data-name="Ibanda" data-p="IA"/><path d="M152,243L148,243L148,246L147,250L146,252L144,253L146,255L140,264L140,264L148,265L151,262L157,261L178,261L173,255L174,254L174,250L171,246L168,245L167,246L159,247L158,246L156,244L154,243L152,243Z " data-fips="UGB9" data-fips-="" data-iso3="UGA" data-name="Bukanga" data-p="BK"/><path d="M152,204L149,204L147,206L146,207L146,207L150,212L150,221L147,223L147,225L146,228L151,234L156,238L154,241L154,243L156,244L158,246L159,247L167,246L168,245L170,241L172,237L169,230L168,224L169,220L169,216L167,216L166,216L167,213L167,210L166,206L165,205L162,205L160,204L157,204L154,204L152,204Z " data-fips="UGC3" data-fips-="" data-iso3="UGA" data-name="Mbarara" data-p="RR"/><path d="M121,250L121,252L120,257L121,258L120,262L120,263L120,264L122,268L126,270L131,268L132,268L136,264L139,264L140,264L146,255L144,253L146,252L144,252L135,253L130,251L131,250L129,250L127,248L125,248L122,250L121,250Z " data-fips="UG59" data-fips-="" data-iso3="UGA" data-name="Ntungamo" data-p="NT"/><path d="M100,235L100,236L101,236L104,234L104,242L107,243L108,248L109,254L110,255L110,258L113,263L115,264L115,262L119,263L120,263L120,262L121,258L120,257L121,252L121,250L118,248L114,243L113,242L115,236L113,235L111,232L101,229L100,235Z " data-fips="UG93" data-fips-="" data-iso3="UGA" data-name="Rukungiri" data-p="RK"/><path d="M154,241L156,238L151,234L146,228L147,225L144,225L142,226L141,229L141,232L138,244L134,248L131,250L130,251L135,253L144,252L146,252L147,250L148,246L148,243L152,243L154,243L154,241Z " data-fips="UGB1" data-fips-="UG52" data-iso3="UGA" data-name="Kashari" data-p="KS"/><path d="M113,263L112,263L110,263L107,262L106,264L106,265L106,266L107,269L107,271L110,276L110,277L112,282L114,284L124,278L125,275L131,269L131,268L126,270L122,268L120,264L120,263L119,263L115,262L115,264L113,263Z " data-fips="UG34" data-fips-="" data-iso3="UGA" data-name="Kabale" data-p="KA"/><path d="M97,261L97,264L98,277L100,280L104,278L110,276L110,276L107,271L107,269L106,266L106,265L104,264L102,263L99,262L97,261L97,261Z " data-fips="UG43" data-fips-="" data-iso3="UGA" data-name="Kisoro" data-p="KR"/><path d="M101,237L100,242L99,255L97,260L97,261L99,262L102,263L104,264L106,265L106,264L107,262L110,263L112,263L113,263L110,258L110,255L109,254L108,248L107,243L104,242L104,234L101,236L101,237Z " data-fips="UG82" data-fips-="" data-iso3="UGA" data-name="Kanungu" data-p="UU"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserCountryMap/svg/world.svg b/plugins/UserCountryMap/svg/world.svg
index b7c32d8e16..49d78ee43a 100644
--- a/plugins/UserCountryMap/svg/world.svg
+++ b/plugins/UserCountryMap/svg/world.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 1000 525" height="525px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 1000 525" width="1000px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="525.010727376" padding="0.03" w="1000"><proj flip="auto" id="naturalearth" lon0="0"/><bbox h="463.56" w="884.64" x="95.31" y="-3.13"/></view></views></metadata><g class="" id="countries"><path d="M687.20,185.87L688.68,188.96L687.36,191.79L689.20,195.61L690.07,195.53L697.12,200.63L699.84,199.56L705.90,203.27L710.26,206.83L714.66,207.55L721.73,209.91L723.60,207.40L725.44,206.87L729.91,208.10L733.01,208.00L734.28,205.51L737.93,203.26L741.81,202.63L743.27,206.36L748.57,207.11L748.70,207.13L750.07,200.49L746.58,193.56L743.88,191.54L741.01,194.39L739.71,194.52L734.58,191.08L733.38,191.78L730.41,191.10L724.66,188.77L721.00,188.11L719.27,186.64L718.63,183.28L717.18,181.47L716.76,178.88L713.29,177.63L706.94,178.72L706.68,179.76L700.12,181.44L696.47,180.26L694.21,181.82L690.33,181.16L690.08,183.81L687.46,185.74L687.20,185.87Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M673.19,174.69L668.98,173.86L663.88,176.11L662.21,171.36L660.29,170.46L652.79,175.05L652.75,174.94L652.71,174.84L651.77,174.63L650.63,174.35L649.91,174.22L649.05,174.30L648.91,174.32L644.26,175.34L644.00,177.91L640.35,179.69L640.42,181.12L638.31,182.04L635.33,180.46L635.10,180.50L635.20,180.74L634.87,185.17L633.83,185.97L636.20,194.72L638.92,195.72L638.00,200.23L637.37,201.20L638.56,201.59L647.26,202.88L653.15,201.28L653.07,197.80L654.76,196.02L660.96,193.73L661.41,189.57L662.92,188.58L662.88,186.49L665.15,181.07L664.06,179.36L672.13,175.61L672.41,175.47L672.36,175.44L671.81,174.99L672.28,174.70L673.10,174.75L673.24,174.72L673.19,174.69Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M497.63,329.25L496.11,331.69L497.04,332.99L498.63,339.18L497.68,340.32L500.01,347.19L499.22,352.05L495.96,356.17L493.42,368.46L493.29,369.82L497.44,368.81L500.20,370.39L513.52,370.35L514.79,371.67L522.50,372.51L527.70,371.43L528.66,371.22L528.07,370.62L524.58,365.18L524.85,354.60L530.56,354.60L531.17,347.46L531.11,346.99L530.99,347.06L526.02,348.16L526.03,345.29L524.59,341.97L524.60,334.27L520.99,334.14L520.98,332.92L518.09,333.28L516.45,336.73L511.64,337.08L508.18,329.22L497.82,329.09L497.63,329.25Z M497.85,324.70L497.78,324.65L495.73,324.64L495.49,325.17L494.60,326.02L494.66,326.13L495.08,327.17L495.17,327.68L495.14,328.62L495.18,328.72L496.02,328.57L497.10,325.06L497.81,324.76L497.85,324.70Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M513.96,155.76L513.08,155.56L512.83,155.48L512.15,158.18L512.51,158.22L512.54,162.01L512.78,163.15L514.52,165.54L514.56,165.86L515.39,165.00L516.33,164.41L517.00,162.07L517.01,161.80L516.98,161.72L515.37,159.41L515.57,158.20L515.60,158.16L515.64,158.00L515.40,157.10L514.87,156.61L514.12,155.85L514.01,155.77L513.96,155.76Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M462.37,155.84L462.36,155.56L461.96,155.46L461.65,155.50L461.57,155.60L461.53,155.76L462.01,156.09L462.27,155.95L462.35,155.92L462.37,155.84Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M625.07,214.89L620.77,221.26L614.05,222.37L612.37,221.05L612.28,221.23L612.43,221.98L615.74,226.10L623.57,227.21L623.74,226.92L623.71,226.39L624.12,222.47L624.73,219.14L626.46,218.74L626.40,218.60L626.14,216.62L625.91,216.33L625.57,216.35L625.43,216.19L625.08,214.85L625.07,214.89Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M274.97,495.77L276.60,500.53L276.92,501.45L277.52,503.23L277.59,503.17L284.17,503.64L286.19,502.51L280.14,500.52L275.17,495.92L274.97,495.77Z M255.24,389.81L255.88,390.45L255.32,394.16L252.16,396.31L253.36,405.13L251.10,409.45L250.29,412.92L250.30,418.86L251.52,423.92L253.48,427.42L254.06,430.80L252.33,439.05L252.72,442.16L254.46,446.97L253.55,448.64L253.46,454.29L255.17,458.76L257.26,467.03L259.01,467.24L258.49,469.14L259.72,476.54L259.17,479.63L260.04,480.52L258.61,486.36L260.61,489.21L262.73,489.02L265.42,493.51L270.67,493.57L275.12,494.76L275.20,494.59L271.15,490.21L274.10,486.18L273.87,484.39L277.18,478.22L270.65,472.91L271.13,471.24L275.36,467.37L274.89,464.93L276.69,462.35L274.83,460.96L278.54,461.45L277.66,459.00L274.30,458.96L272.96,454.35L276.92,455.57L280.82,454.38L280.03,447.62L286.37,447.33L292.58,443.42L293.53,438.41L289.69,433.20L287.37,431.63L286.65,428.78L286.96,424.83L286.97,424.50L286.86,420.71L286.89,417.74L287.37,416.43L287.45,416.29L287.56,416.12L291.72,409.70L297.17,405.26L296.51,400.33L294.42,399.71L294.19,399.71L294.32,401.25L291.71,406.32L289.38,406.58L282.89,405.53L285.20,399.79L284.41,398.13L274.81,393.53L271.64,391.10L268.77,387.80L268.68,387.70L268.63,387.64L265.50,386.87L263.71,389.59L261.37,387.23L256.43,387.64L255.32,389.64L255.24,389.81Z " data-iso="ARG" data-name="Argentina" data-pop="40913584.0"/><path d="M584.92,160.23L584.86,160.28L582.78,160.51L580.75,160.85L580.61,160.88L580.67,161.04L582.63,164.75L583.61,164.68L585.04,165.73L585.16,165.89L585.44,165.83L587.24,166.63L588.15,166.45L589.32,168.56L589.47,168.83L589.63,168.87L590.03,168.71L590.53,168.73L590.47,168.41L589.31,166.27L587.57,164.98L585.01,160.39L584.92,160.23Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M645.61,483.58L643.96,485.63L646.97,485.59L649.11,484.12L645.61,483.58Z " data-iso="ATF" data-name="Fr. S. and Antarctic Lands" data-pop="140.0"/><path d="M869.03,454.28L867.11,457.98L866.20,461.88L868.01,463.94L873.54,460.93L877.95,454.85L877.34,454.26L869.03,454.28Z M896.50,350.86L895.13,346.40L891.73,352.28L892.09,353.81L888.73,365.59L886.03,370.41L881.28,370.10L871.45,361.76L873.34,357.95L873.60,355.69L877.20,352.27L874.52,352.53L870.58,350.97L865.97,349.97L862.45,348.09L864.33,351.46L858.58,352.34L855.95,355.12L852.99,359.58L853.53,361.22L849.19,360.87L845.35,357.42L841.60,359.10L838.71,362.33L837.37,365.75L836.05,366.54L833.49,370.41L832.12,366.89L829.29,370.05L829.11,372.39L825.49,377.24L822.39,379.11L818.26,379.66L817.00,380.62L808.17,383.38L803.66,386.22L801.99,388.39L801.31,386.64L797.88,394.95L798.54,402.27L796.87,399.79L796.41,403.24L797.74,412.53L796.93,417.63L797.53,421.71L794.30,428.70L793.38,428.25L796.04,433.54L800.74,433.53L807.01,429.90L811.72,429.37L816.77,429.95L822.70,425.98L827.51,423.73L829.33,423.92L836.45,421.74L844.61,421.71L848.36,423.47L851.81,429.66L851.62,432.08L857.77,428.93L857.19,432.74L854.83,434.44L857.32,434.10L858.99,431.63L860.20,432.73L858.98,435.89L861.37,434.83L860.80,443.96L863.44,445.72L866.25,445.95L868.27,447.27L873.72,443.97L876.10,446.93L883.53,443.73L887.13,443.51L889.68,441.04L892.49,436.57L897.79,430.58L907.35,420.77L912.90,411.49L913.58,405.52L914.57,402.32L914.43,396.93L911.04,392.09L911.05,388.87L908.65,388.44L908.40,383.72L907.45,380.20L901.93,376.38L896.50,350.86Z " data-iso="AUS" data-name="Australia" data-pop="21262641.0"/><path d="M503.69,134.42L498.28,133.16L497.63,134.24L495.25,133.94L495.18,133.91L495.15,133.98L493.25,138.40L490.97,137.60L488.55,138.59L483.74,138.21L483.67,138.24L483.76,138.29L483.96,138.44L483.92,138.70L483.72,139.13L483.75,139.18L483.81,139.43L483.86,139.52L483.93,139.81L483.89,139.87L484.00,139.87L486.02,140.13L486.32,140.43L486.32,140.55L486.40,140.58L491.01,139.79L490.99,140.30L494.75,141.63L495.33,141.75L495.45,141.77L497.70,142.18L498.46,141.54L501.70,140.62L501.85,140.55L502.26,140.17L502.66,138.79L503.29,138.20L504.31,136.71L504.45,136.56L504.28,136.44L503.58,135.23L503.56,135.04L503.76,134.53L503.77,134.50L503.69,134.42Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M585.16,165.89L585.22,165.95L585.33,166.08L585.40,166.15L587.58,168.38L588.90,168.73L589.47,168.83L589.32,168.56L588.15,166.45L587.24,166.63L585.44,165.83L585.16,165.89Z M588.60,158.10L588.56,158.22L589.66,160.24L589.38,160.95L585.46,159.76L584.92,160.23L585.01,160.39L587.57,164.98L589.31,166.27L590.47,168.41L590.53,168.73L590.71,168.74L594.38,165.96L595.48,166.97L597.61,170.41L597.33,169.06L598.49,164.14L600.76,163.83L594.98,158.47L594.68,158.26L593.07,160.51L588.92,158.17L588.60,158.10Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M551.74,316.71L550.39,316.76L549.17,318.13L547.11,317.67L547.06,317.86L547.06,318.00L547.70,319.05L547.66,321.31L548.14,323.50L548.21,324.04L549.18,324.06L551.15,321.65L551.39,320.97L551.76,316.81L551.82,316.72L551.74,316.71Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M466.20,124.98L465.49,125.28L464.33,125.86L469.37,129.83L470.68,129.17L473.03,131.23L473.25,131.24L473.32,131.18L473.05,130.30L473.41,129.35L474.06,129.21L474.08,129.22L474.09,129.16L474.35,127.58L473.72,127.11L473.68,127.05L473.15,127.04L473.41,127.04L473.24,126.85L472.88,126.95L472.87,126.97L469.97,124.74L468.39,125.34L466.53,124.89L466.20,124.98Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M468.38,266.04L465.12,264.34L464.94,265.29L464.87,265.65L464.79,265.86L463.62,267.36L460.39,268.89L460.31,268.88L460.23,269.27L459.89,271.05L461.69,273.98L462.55,285.95L463.15,285.80L464.59,285.56L465.89,285.41L466.08,275.84L467.11,275.34L469.17,270.88L468.45,266.60L468.57,266.37L468.38,266.04Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M457.57,254.60L455.23,254.38L447.61,259.35L447.44,260.70L444.84,260.61L444.00,263.52L441.33,265.90L440.64,270.71L440.59,270.91L440.78,271.15L444.24,273.70L445.90,272.73L449.20,274.38L449.26,274.29L449.23,274.10L448.71,270.62L449.10,268.87L456.63,268.26L457.34,268.45L458.04,268.61L459.03,268.89L459.23,269.02L459.52,268.92L460.31,268.88L460.39,268.89L463.62,267.36L464.79,265.86L464.87,265.65L464.73,265.48L462.34,263.01L460.91,261.70L458.17,255.03L458.21,254.86L457.57,254.60Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M726.22,229.39L730.13,226.20L732.77,226.58L736.66,233.79L736.71,233.78L737.27,232.07L736.83,229.66L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.22,229.39Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M520.91,149.78L520.81,149.85L521.34,154.57L520.68,154.72L520.71,156.54L520.49,156.60L520.97,157.12L522.54,158.72L522.42,159.11L522.43,160.00L522.40,160.07L522.71,160.11L529.40,160.32L531.49,159.89L531.55,158.62L531.90,158.72L531.89,158.62L535.08,157.90L536.59,157.82L536.48,157.54L534.92,156.05L535.59,155.20L537.55,152.39L537.52,151.54L532.51,150.11L531.53,150.33L521.12,149.93L520.91,149.78Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M509.42,155.72L509.47,155.71L509.34,154.27L509.83,154.06L511.22,152.27L511.30,152.27L511.46,152.09L510.88,148.92L510.52,147.55L510.42,147.56L510.24,147.57L502.45,146.84L501.35,147.92L509.17,155.63L509.42,155.72Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M530.63,108.74L528.70,109.88L528.02,109.79L526.96,110.30L526.90,110.34L526.91,110.49L527.26,111.89L525.16,113.14L524.81,114.90L519.71,116.23L519.51,116.16L519.95,117.31L520.98,120.49L519.42,121.88L520.58,124.07L520.80,124.41L520.82,124.39L530.17,123.61L538.38,124.55L541.84,122.39L542.35,122.42L542.32,122.33L542.59,119.04L541.58,116.66L538.31,111.83L538.20,110.66L534.42,110.28L531.11,109.04L530.71,108.75L530.63,108.74Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M189.39,242.10L188.69,242.20L186.49,244.15L186.45,244.46L186.31,245.33L185.40,251.36L185.76,251.32L186.43,251.36L186.40,251.12L188.51,248.70L189.23,245.53L189.18,242.51L189.39,242.10Z " data-iso="BLZ" data-name="Belize" data-pop="307899.0"/><path d="M281.67,380.22L279.82,369.76L279.62,366.36L274.12,366.30L272.73,362.27L273.30,360.39L272.46,357.43L262.11,352.70L260.16,352.59L257.64,349.98L256.61,342.84L253.02,343.51L246.52,347.79L244.37,347.26L244.01,347.27L244.44,348.05L247.11,352.82L246.23,357.04L246.98,358.79L245.99,360.32L246.09,370.73L246.09,370.74L246.18,371.14L249.71,381.45L251.61,384.87L253.18,389.81L254.75,389.93L255.24,389.81L255.32,389.64L256.43,387.64L261.37,387.23L263.71,389.59L265.50,386.87L268.63,387.64L268.68,387.70L268.73,387.52L270.39,378.41L275.58,377.16L278.35,377.12L281.47,379.68L281.47,380.27L281.67,380.22Z " data-iso="BOL" data-name="Bolivia" data-pop="9775246.0"/><path d="M304.39,308.97L301.25,309.13L301.40,314.21L305.81,313.20L308.20,309.21L304.39,308.97Z M270.32,289.58L270.41,289.62L267.74,292.84L263.68,295.32L259.95,293.96L260.00,298.96L261.95,300.22L255.49,305.68L251.96,304.61L251.17,303.79L250.59,303.95L249.73,300.71L246.98,302.01L242.01,302.05L242.40,304.37L241.30,308.09L243.38,312.42L241.85,323.15L241.80,323.28L241.79,323.51L238.70,323.69L233.45,326.25L229.77,335.14L233.75,341.76L235.82,343.88L240.52,343.24L240.76,347.48L243.72,347.28L244.01,347.27L244.37,347.26L246.52,347.79L253.02,343.51L256.61,342.84L257.64,349.98L260.16,352.59L262.11,352.70L272.46,357.43L273.30,360.39L272.73,362.27L274.12,366.30L279.62,366.36L279.82,369.76L281.67,380.22L281.47,380.27L281.56,380.53L282.79,387.25L290.25,390.79L290.63,392.54L294.70,394.21L294.15,399.19L294.19,399.71L294.42,399.71L296.51,400.33L297.17,405.26L291.72,409.70L287.56,416.12L287.45,416.29L287.66,416.55L290.07,416.29L299.76,423.01L300.79,424.61L301.81,429.07L302.93,427.84L304.84,423.22L308.42,418.84L310.30,413.32L313.09,408.69L312.00,402.20L317.57,394.44L323.33,391.27L327.46,390.42L327.38,389.54L330.76,390.24L331.84,387.97L333.89,386.85L333.83,384.12L337.15,377.09L336.89,374.80L338.48,371.45L338.50,362.67L337.95,356.70L342.64,349.78L342.93,348.35L348.15,342.23L349.99,338.18L349.77,330.98L347.97,326.47L342.95,325.69L337.21,320.26L334.26,318.37L327.21,318.12L322.22,317.42L319.90,319.36L320.12,315.48L317.27,312.99L309.31,310.67L305.11,316.52L305.38,314.34L300.64,312.53L300.48,311.50L296.48,314.01L297.99,310.87L302.34,305.17L300.07,296.44L298.56,293.04L298.26,293.65L294.32,300.26L291.75,299.91L289.11,299.89L289.03,299.85L288.89,299.84L286.67,299.44L285.10,299.26L283.35,301.25L283.26,301.22L283.13,301.27L280.39,301.34L276.98,303.57L273.65,302.02L272.94,295.34L273.89,294.11L270.60,289.51L270.32,289.58Z " data-iso="BRA" data-name="Brazil" data-pop="198739269.0"/><path d="M812.15,290.66L812.47,292.48L813.15,292.51L812.15,290.66Z M812.20,290.43L812.03,290.22L811.57,290.49L809.58,291.76L809.23,291.75L810.87,293.70L811.63,292.61L812.15,290.66L812.20,290.43Z " data-iso="BRN" data-name="Brunei" data-pop="388190.0"/><path d="M730.00,208.60L728.59,207.63L725.08,206.80L722.27,209.81L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.00,208.60Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M534.22,371.75L530.88,372.78L528.13,372.51L522.05,373.61L521.11,378.76L520.80,386.86L517.74,388.76L517.43,396.74L517.43,396.83L517.57,396.94L518.49,397.74L519.06,403.32L523.20,403.52L526.45,398.80L530.29,400.31L534.06,399.81L535.11,396.87L538.08,394.91L538.96,392.53L542.51,389.35L545.37,387.62L546.08,387.55L545.94,387.42L545.17,386.18L542.01,385.09L540.09,381.40L536.63,377.42L534.28,371.94L534.35,371.77L534.22,371.75Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M527.58,269.12L524.19,270.51L521.40,274.56L515.84,276.23L511.86,279.64L509.54,280.89L505.53,281.32L505.20,281.29L504.89,281.88L503.32,284.74L502.60,288.53L502.90,291.49L507.33,299.71L507.48,300.05L507.69,299.56L508.66,295.79L510.90,295.24L514.78,295.62L514.95,295.73L514.91,295.02L516.33,290.69L525.10,292.96L536.22,289.19L541.13,289.59L542.02,289.91L541.80,289.63L538.74,284.46L535.06,281.17L531.96,277.25L531.81,277.20L531.51,277.11L530.16,274.79L530.20,273.07L527.94,269.59L527.71,269.15L527.58,269.12Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M288.51,143.77L290.25,144.79L287.60,144.99L287.43,143.78L290.29,140.55L290.48,142.51L288.51,143.77Z M250.30,146.95L254.39,144.43L265.45,138.43L269.12,135.62L277.77,132.36L282.03,132.74L282.70,133.78L279.35,138.79L279.10,142.33L288.14,146.07L283.62,147.65L274.71,151.80L272.62,151.28L273.60,148.64L278.70,145.91L279.53,144.16L271.19,146.59L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L250.30,146.95Z M114.91,127.43L118.59,128.40L119.01,130.87L121.27,134.15L118.30,134.79L117.64,133.26L114.17,131.65L115.69,130.85L114.91,127.43Z M308.97,124.35L303.83,130.21L306.97,129.76L308.13,132.20L311.97,131.99L312.79,134.91L310.69,136.35L313.16,137.90L311.17,141.28L308.83,139.77L309.54,137.26L305.06,138.45L302.03,138.00L295.44,138.08L295.16,136.81L303.45,127.07L307.48,124.24L308.97,124.35Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.34,112.76L115.65,113.20L115.01,113.43L114.95,113.35Z M251.80,79.21L252.86,78.63L257.31,80.90L260.71,83.80L255.32,84.01L248.15,85.72L246.95,84.11L243.65,84.53L246.03,83.01L250.64,77.43L251.80,79.21Z M279.01,69.75L279.50,71.49L278.15,72.68L274.17,72.98L274.58,71.19L279.01,69.75Z M230.41,65.74L232.45,66.65L229.94,69.33L225.36,67.89L227.68,65.96L230.41,65.74Z M203.00,134.43L202.99,134.44L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.51,133.00L122.99,129.14L120.68,130.41L118.87,127.96L115.29,126.48L115.26,124.12L116.62,121.08L114.67,118.17L114.56,115.04L118.21,111.64L118.99,109.62L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L129.17,65.77L135.60,67.80L140.28,66.75L146.54,66.37L146.70,67.06L161.61,63.89L163.21,66.27L168.70,66.55L173.45,65.22L180.75,67.56L186.71,67.87L188.51,69.80L185.48,70.33L187.37,71.63L190.78,71.70L196.30,70.87L200.21,73.41L199.94,74.98L202.66,70.63L201.03,69.89L210.47,70.54L212.98,70.38L223.94,70.84L227.19,69.11L230.71,70.01L228.63,72.10L237.67,68.84L235.94,67.81L239.19,66.23L234.18,65.26L233.92,63.69L235.65,61.47L240.31,59.01L244.14,60.90L244.44,63.57L241.07,65.67L246.17,66.34L244.61,69.95L249.23,66.88L250.74,68.57L248.89,70.23L249.58,73.24L254.19,70.59L257.76,66.99L260.61,65.12L267.06,67.32L263.21,73.59L253.59,76.06L249.63,75.32L250.80,76.53L246.22,78.92L240.88,77.72L242.13,78.94L246.48,79.69L240.50,83.15L234.43,84.50L232.11,84.13L233.40,86.44L229.09,87.08L226.42,88.37L218.97,94.40L215.88,99.06L219.80,100.19L218.97,105.21L222.56,105.09L241.81,112.35L239.20,119.12L241.64,125.14L243.44,125.79L248.20,121.90L248.43,113.60L250.67,112.98L257.83,109.24L258.89,108.02L260.03,103.71L258.36,99.17L261.31,97.42L263.14,90.09L265.25,87.85L272.00,89.18L274.99,88.09L278.40,92.08L283.00,92.61L281.56,95.77L279.77,96.11L278.59,100.07L283.76,101.06L283.91,102.55L290.67,99.25L293.76,95.20L297.06,100.36L295.48,101.08L299.68,110.14L298.82,112.38L306.23,113.76L299.03,116.76L298.52,117.69L306.29,115.40L306.30,116.92L309.17,117.35L309.00,121.94L306.19,123.85L300.56,125.18L296.82,127.94L290.74,129.28L289.19,128.68L279.51,128.62L276.52,129.66L274.67,131.89L267.56,135.71L263.77,135.00L261.29,140.79L255.94,142.84L251.05,146.37L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L203.00,134.43Z M197.98,56.99L202.27,55.82L204.95,57.68L209.17,55.85L210.26,59.46L212.67,59.03L213.46,55.49L217.64,55.23L218.92,56.87L217.62,60.95L223.03,64.34L222.42,65.53L219.80,65.13L216.99,68.02L214.51,68.27L208.74,66.35L200.10,68.67L192.14,69.25L190.68,66.93L186.15,66.67L184.98,65.26L187.19,64.14L198.15,63.33L189.53,62.91L188.07,61.05L192.88,60.06L186.29,59.76L191.73,56.29L199.72,54.72L197.98,56.99Z M279.17,53.91L284.80,54.90L285.30,56.26L281.66,56.10L276.05,55.02L276.23,53.86L279.17,53.91Z M258.27,61.65L262.56,61.40L263.77,59.95L263.25,58.09L266.26,54.83L272.31,53.69L274.61,53.79L275.91,56.47L272.89,59.00L279.70,57.67L280.92,56.71L285.64,57.04L288.30,58.61L285.22,61.00L290.83,59.67L293.79,60.31L296.31,62.14L299.50,63.10L297.40,64.81L299.17,65.36L297.11,68.16L299.35,70.54L305.25,71.89L309.66,73.75L309.00,75.93L307.47,75.64L303.99,79.31L293.07,76.13L295.39,80.61L295.99,80.12L299.35,83.84L297.75,86.66L288.60,83.96L292.50,87.62L292.50,89.97L286.20,88.25L280.43,85.03L282.17,84.51L278.65,81.37L269.73,82.43L267.11,81.23L269.74,79.52L277.52,78.78L278.80,76.26L282.81,74.65L285.31,71.78L283.91,68.59L277.92,67.76L279.86,66.52L277.25,63.95L267.94,64.84L257.47,64.35L257.68,63.28L252.12,63.10L251.77,61.50L256.86,61.72L251.93,60.43L256.34,55.49L259.69,54.08L266.97,53.46L263.71,55.05L260.80,59.02L262.46,60.50L258.27,61.65Z M233.93,53.07L238.97,54.58L237.02,55.69L237.60,58.30L232.47,60.37L225.16,56.62L226.67,55.62L228.18,56.54L229.51,54.55L233.93,53.07Z M249.67,52.45L255.35,53.29L249.09,56.52L245.39,57.09L243.23,58.64L241.38,56.44L242.83,54.19L246.03,52.67L249.67,52.45Z M190.26,52.59L194.11,52.15L198.36,54.35L184.13,58.10L181.99,59.81L174.29,61.32L173.96,59.68L171.22,58.32L180.22,53.41L179.86,51.92L190.26,52.59Z M244.84,45.97L241.80,49.71L237.15,50.11L237.77,48.47L234.58,48.36L236.65,46.09L238.83,47.47L240.09,45.51L244.84,45.97Z M220.72,47.10L224.16,47.20L223.11,49.81L217.25,50.18L204.98,51.68L205.21,50.60L212.36,49.52L208.25,49.73L206.58,48.85L203.50,50.07L198.21,49.49L200.17,48.25L207.79,45.86L212.97,48.16L217.76,48.62L220.93,45.02L220.72,47.10Z M253.27,44.75L259.59,45.43L260.16,47.11L262.85,48.21L269.42,48.43L273.92,47.78L280.89,48.69L282.17,49.33L279.48,51.04L274.37,51.38L272.84,50.39L271.20,51.30L264.83,51.52L254.41,51.06L255.33,48.22L249.66,46.53L247.42,45.05L253.27,44.75Z M208.50,43.52L205.87,45.23L200.49,46.14L202.02,45.10L191.30,47.21L190.47,46.28L200.70,43.68L208.50,43.52Z M221.52,41.54L221.17,42.57L216.20,43.57L216.04,41.97L221.52,41.54Z M253.02,40.40L254.10,41.83L249.57,42.33L248.87,41.11L251.15,39.74L253.02,40.40Z M239.78,38.36L245.43,39.89L245.53,41.90L240.37,41.11L235.06,41.10L238.11,39.78L235.68,39.63L239.78,38.36Z M268.67,33.83L273.79,35.58L278.42,38.44L272.00,39.08L268.02,41.30L262.42,41.31L258.43,39.36L262.08,38.70L256.41,37.37L255.92,36.28L264.40,33.36L268.67,33.83Z M318.66,29.50L324.60,29.69L322.10,30.26L330.56,30.49L333.67,31.14L323.11,32.97L320.21,34.05L310.41,36.44L296.03,37.86L300.05,38.57L292.29,38.97L299.24,40.17L290.54,41.96L283.44,43.84L288.26,44.69L285.67,46.01L280.92,45.84L271.85,46.42L262.99,45.95L270.67,42.10L270.98,41.46L280.39,38.76L278.16,35.82L282.70,35.97L286.76,37.50L285.02,35.93L298.96,34.48L296.21,33.88L291.98,34.73L282.57,35.31L273.50,34.36L274.22,32.63L270.62,32.52L279.02,31.56L284.47,31.68L286.35,30.76L295.96,32.12L294.59,30.16L305.54,30.40L306.23,29.43L318.66,29.50Z " data-iso="CAN" data-name="Canada" data-pop="33487208.0"/><path d="M483.18,137.98L481.47,137.63L480.38,137.95L478.66,138.08L478.43,138.00L478.10,138.16L474.37,143.06L475.70,142.04L476.92,143.72L476.97,143.84L477.07,143.92L480.85,142.17L482.52,144.12L483.60,142.07L486.21,141.00L486.32,140.55L486.32,140.43L486.02,140.13L484.00,139.87L483.89,139.87L483.68,139.85L483.64,139.86L483.61,139.73L483.61,139.47L483.72,139.13L483.92,138.70L483.96,138.44L483.76,138.29L483.67,138.24L483.18,137.98Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M277.52,503.23L276.92,501.45L276.60,500.53L274.97,495.77L274.87,495.70L272.69,495.21L271.00,497.99L272.41,499.97L275.59,502.23L269.54,501.86L277.13,503.23L277.52,503.23Z M255.15,483.71L253.52,482.28L252.70,484.45L255.39,486.70L255.15,483.71Z M250.75,463.37L251.29,461.92L248.62,458.60L248.91,462.80L250.75,463.37Z M246.09,370.74L245.88,370.98L245.38,372.47L245.30,372.84L243.64,373.75L243.83,373.93L245.93,385.04L245.96,392.80L246.63,398.26L246.05,410.84L246.70,416.13L246.03,416.80L248.26,425.18L247.72,426.74L246.22,441.56L247.78,451.35L247.92,454.58L250.71,457.82L251.72,456.98L252.97,462.31L253.01,466.28L254.96,467.22L253.91,472.68L252.33,471.73L249.81,472.29L254.46,479.62L254.04,479.77L258.98,489.91L255.31,489.02L261.21,493.68L263.34,492.64L261.46,495.80L267.25,495.61L264.14,497.95L269.92,498.90L269.35,496.17L273.51,494.44L275.12,494.76L270.67,493.57L265.42,493.51L262.73,489.02L260.61,489.21L258.61,486.36L260.04,480.52L259.17,479.63L259.72,476.54L258.49,469.14L259.01,467.24L257.26,467.03L255.17,458.76L253.46,454.29L253.55,448.64L254.46,446.97L252.72,442.16L252.33,439.05L254.06,430.80L253.48,427.42L251.52,423.92L250.30,418.86L250.29,412.92L251.10,409.45L253.36,405.13L252.16,396.31L255.32,394.16L255.88,390.45L255.24,389.81L254.75,389.93L253.18,389.81L251.61,384.87L249.71,381.45L246.18,371.14L246.09,370.74Z " data-iso="CHL" data-name="Chile" data-pop="16601707.0"/><path d="M447.64,289.77L447.54,289.89L447.95,289.98L448.03,289.84L447.64,289.77Z M433.01,271.85L432.93,271.99L433.64,275.72L433.10,276.77L431.60,281.01L431.43,281.16L431.49,281.20L432.02,285.59L433.25,285.89L434.28,292.62L434.65,292.53L440.40,289.98L445.62,289.51L448.22,289.76L448.24,289.83L448.95,289.13L447.57,284.82L449.55,279.29L449.29,274.47L449.26,274.29L449.20,274.38L445.90,272.73L444.24,273.70L440.78,271.15L440.59,270.91L440.49,270.86L438.39,271.50L438.33,269.85L433.10,271.85L433.01,271.85Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M505.36,281.00L500.59,273.91L501.30,272.51L505.64,272.41L503.04,263.49L501.16,261.43L500.61,261.42L500.93,263.09L502.20,266.25L499.60,269.31L498.18,273.70L495.70,277.46L494.53,281.05L491.68,284.92L489.25,283.60L485.27,287.02L483.93,291.17L483.97,291.19L486.26,294.08L488.24,297.16L487.85,299.09L487.79,299.93L488.00,300.25L488.34,300.41L491.79,300.41L492.50,300.41L492.54,300.18L493.21,299.93L498.06,300.09L498.49,300.21L498.57,300.44L499.31,300.44L502.53,300.30L507.34,302.00L507.48,300.08L507.48,300.05L507.33,299.71L502.90,291.49L502.60,288.53L503.32,284.74L504.89,281.88L505.20,281.29L505.36,281.00Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M541.13,289.59L536.22,289.19L525.10,292.96L516.33,290.69L514.91,295.02L514.95,295.73L514.99,296.36L512.25,309.14L507.58,315.93L503.52,324.95L502.23,325.48L497.90,324.58L497.85,324.70L497.81,324.76L497.10,325.06L496.02,328.57L495.18,328.72L495.27,328.89L495.49,329.20L497.62,328.99L497.82,329.09L508.18,329.22L511.64,337.08L516.45,336.73L518.09,333.28L520.98,332.92L520.99,334.14L524.60,334.27L524.59,341.97L526.03,345.29L526.02,348.16L530.99,347.06L531.11,346.99L531.22,347.01L532.20,348.77L539.49,350.94L540.85,349.52L542.27,351.98L548.74,355.92L548.87,351.58L546.61,352.27L544.74,349.94L545.51,343.27L544.85,341.28L551.62,337.51L552.16,337.41L552.07,337.09L550.26,332.85L548.00,325.94L548.21,324.21L548.21,324.04L548.14,323.50L547.66,321.31L547.70,319.05L547.06,318.00L547.06,317.86L546.78,317.73L546.58,316.89L547.43,315.99L548.70,313.19L548.82,313.11L548.83,313.00L549.90,305.75L553.03,302.14L553.74,300.05L552.36,299.39L552.84,295.79L552.67,295.69L552.60,295.54L549.65,292.70L546.78,292.13L542.13,290.16L542.02,289.91L541.13,289.59Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M514.78,295.62L510.90,295.24L508.66,295.79L507.69,299.56L507.48,300.05L507.48,300.08L507.34,302.00L502.53,300.30L499.31,300.44L498.57,300.44L498.55,300.68L501.49,303.43L500.40,307.47L500.97,309.12L501.36,316.56L500.72,317.04L497.03,315.05L493.35,317.42L494.35,320.12L491.87,322.14L492.59,322.90L493.86,324.45L493.99,325.13L494.55,325.94L494.60,326.02L495.49,325.17L495.73,324.64L497.78,324.65L497.85,324.70L497.90,324.58L502.23,325.48L503.52,324.95L507.58,315.93L512.25,309.14L514.99,296.36L514.95,295.73L514.78,295.62Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M219.59,277.23L219.94,279.82L217.71,282.34L218.00,282.67L219.25,286.75L219.18,291.75L219.84,294.18L215.98,299.19L214.11,302.71L214.20,302.96L220.44,307.27L224.65,308.29L225.21,308.53L225.39,308.30L234.18,316.82L236.75,316.09L241.39,317.80L240.03,321.96L241.64,323.01L241.80,323.28L241.85,323.15L243.38,312.42L241.30,308.09L242.40,304.37L242.01,302.05L246.98,302.01L249.73,300.71L250.59,303.95L251.17,303.79L251.11,303.55L249.09,298.55L249.79,296.29L248.35,291.49L249.77,286.64L243.66,286.29L241.70,283.38L234.55,281.53L234.85,278.56L233.81,270.68L236.69,266.71L238.88,265.78L239.00,265.58L239.17,264.08L236.34,265.07L232.63,267.80L229.90,267.91L229.33,269.53L226.97,269.32L225.01,273.40L220.84,279.06L219.67,277.31L219.59,277.23Z " data-iso="COL" data-name="Colombia" data-pop="45644023.0"/><path d="M194.42,268.71L193.99,271.01L196.39,272.02L202.35,278.93L202.54,279.33L203.14,276.18L202.59,275.12L203.82,273.95L203.69,273.81L202.21,272.29L201.32,270.77L200.91,269.30L200.84,269.16L199.94,269.81L197.83,268.70L194.43,268.64L194.42,268.71Z " data-iso="CRI" data-name="Costa Rica" data-pop="4253877.0"/><path d="M211.35,225.27L204.42,227.06L202.60,229.34L211.44,227.32L210.88,228.73L214.78,229.22L220.34,232.84L223.96,234.32L222.89,237.12L232.71,236.34L228.73,232.64L225.26,231.39L220.41,228.13L211.35,225.27Z " data-iso="CUB" data-name="Cuba" data-pop="11451652.0"/><path d="M556.06,182.22L554.62,181.52L553.10,181.32L552.69,182.15L552.52,182.11L554.59,182.22L555.37,182.66L556.30,182.49L556.06,182.22Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M552.34,182.07L552.08,183.78L552.64,183.98L556.37,182.56L556.30,182.49L555.37,182.66L554.59,182.22L552.52,182.11L552.34,182.07Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M497.36,126.74L491.40,128.28L490.71,129.01L492.33,131.96L495.04,133.74L495.18,133.91L495.25,133.94L497.63,134.24L498.28,133.16L503.69,134.42L503.77,134.50L503.83,134.23L506.07,133.35L506.72,132.88L508.55,131.34L508.62,131.33L508.60,131.23L507.65,129.98L503.35,128.20L502.75,129.24L498.64,126.60L497.62,126.67L497.39,126.68L497.36,126.74Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M494.56,115.84L493.98,115.52L494.63,116.42L494.95,116.38L495.07,116.39L495.01,116.23L495.04,116.12L494.56,115.84Z M480.33,113.28L479.37,117.83L476.49,118.24L476.62,118.39L473.46,123.58L474.15,124.51L473.82,126.52L473.68,127.05L473.72,127.11L474.35,127.58L474.09,129.16L474.08,129.22L474.06,129.31L474.07,129.52L474.77,131.33L474.76,131.53L474.86,131.51L479.71,133.50L478.29,137.95L478.43,138.00L478.66,138.08L480.38,137.95L481.47,137.63L483.18,137.98L483.67,138.24L483.74,138.21L488.55,138.59L490.97,137.60L493.25,138.40L495.15,133.98L495.18,133.91L495.04,133.74L492.33,131.96L490.71,129.01L491.40,128.28L497.36,126.74L497.39,126.68L497.40,126.63L496.60,123.34L496.94,122.48L495.22,116.87L495.20,116.86L491.81,114.56L490.61,114.37L483.11,113.23L483.09,113.17L481.64,113.10L480.89,112.93L480.28,112.90L480.33,113.28Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M589.93,266.84L590.21,265.39L590.60,264.60L589.67,262.92L589.62,262.75L588.59,263.77L588.30,263.94L587.48,263.51L587.39,263.61L587.11,264.12L585.82,268.93L586.06,269.02L589.03,268.87L589.27,268.86L589.63,268.17L589.95,267.55L590.20,267.07L589.93,266.84Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M490.30,109.94L489.31,108.83L487.06,110.05L488.67,113.34L490.30,109.94Z M480.28,112.90L480.89,112.93L481.64,113.10L483.09,113.17L482.99,112.82L485.66,107.48L484.15,105.89L480.24,112.63L480.28,112.90Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M239.58,243.78L248.94,243.00L250.05,241.61L246.70,239.45L245.55,237.80L240.19,237.58L240.05,237.64L238.98,241.61L239.42,243.66L239.58,243.78Z " data-iso="DOM" data-name="Dominican Rep." data-pop="9650054.0"/><path d="M480.99,175.87L468.45,175.92L460.36,177.54L451.69,182.42L451.10,182.35L453.81,193.18L447.44,194.56L445.81,197.41L441.91,200.48L438.33,201.38L431.81,205.40L431.74,208.24L431.72,209.12L431.71,209.72L431.69,210.45L432.25,210.85L438.90,215.62L439.46,216.02L442.43,218.18L443.10,218.69L444.01,219.37L467.25,237.38L469.41,239.91L470.37,239.70L471.03,239.55L478.70,234.94L480.17,233.49L491.99,225.09L493.52,224.00L493.22,223.36L489.59,220.28L485.77,214.83L485.37,200.05L485.65,199.87L485.45,199.02L479.43,186.92L481.69,182.42L481.43,179.85L482.28,175.78L480.99,175.87Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M214.29,303.53L210.39,305.35L210.58,306.69L208.07,311.63L208.13,316.54L209.86,317.82L211.51,317.02L209.85,320.20L209.78,320.25L209.46,323.17L214.94,324.44L217.12,319.03L220.97,317.30L224.35,313.62L225.32,311.55L225.03,308.66L225.21,308.53L224.65,308.29L220.44,307.27L214.20,302.96L214.29,303.53Z " data-iso="ECU" data-name="Ecuador" data-pop="14573101.0"/><path d="M558.10,196.00L553.33,196.73L548.91,194.93L544.24,197.36L537.70,195.74L531.71,195.18L531.46,194.74L530.52,200.22L531.53,203.63L532.86,228.66L532.89,229.46L534.05,229.46L549.03,229.46L552.36,229.46L568.76,229.46L568.75,229.39L565.00,226.05L565.01,222.49L563.10,220.56L558.84,212.74L557.27,208.25L554.75,205.05L553.51,200.96L556.19,205.84L557.86,207.71L560.68,202.73L560.83,202.57L559.88,200.00L559.42,199.09L558.65,197.11L558.34,196.35L558.21,196.04L558.16,195.94L558.10,196.00Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M569.20,257.21L569.26,257.20L572.35,257.61L573.27,255.08L575.23,256.61L579.04,256.34L582.20,257.61L587.11,263.24L587.39,263.61L587.48,263.51L588.30,263.94L588.59,263.77L589.62,262.75L589.50,262.33L581.66,254.97L578.10,252.64L575.94,245.85L574.90,243.78L571.56,246.99L570.18,247.31L569.06,256.18L569.20,257.21Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M432.78,157.92L437.71,157.89L437.87,165.05L436.30,165.97L436.21,174.91L436.88,174.80L442.14,178.29L444.95,176.56L449.50,176.57L454.85,173.51L457.99,169.02L457.33,165.27L459.58,161.90L466.04,158.54L466.67,156.40L466.59,156.18L464.78,156.48L464.24,156.32L462.78,156.09L462.35,155.92L462.27,155.95L462.01,156.09L461.53,155.76L461.57,155.60L461.34,155.26L456.71,154.78L452.52,152.72L452.42,152.74L441.18,151.88L432.67,152.98L431.80,153.55L432.57,157.97L432.78,157.92Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M520.00,103.00L521.93,102.37L523.78,103.01L527.89,104.15L527.95,104.14L527.94,104.06L528.30,103.24L527.53,100.16L528.62,97.70L528.60,97.75L522.09,97.58L517.29,98.64L520.00,102.87L520.00,103.00Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M569.20,257.21L569.00,258.17L564.73,269.00L563.66,269.29L562.28,274.17L562.28,274.36L562.28,274.51L559.13,279.76L559.35,280.21L566.19,288.48L566.24,288.54L566.23,288.66L568.48,292.07L572.12,292.96L575.02,295.13L579.37,295.81L583.25,292.90L586.27,293.95L586.72,293.95L586.81,293.76L590.51,291.57L596.00,290.66L604.45,280.44L605.18,279.59L604.13,279.59L591.20,274.65L590.34,273.26L589.23,269.00L589.27,268.86L589.03,268.87L586.06,269.02L585.82,268.93L587.11,264.12L587.39,263.61L587.11,263.24L582.20,257.61L579.04,256.34L575.23,256.61L573.27,255.08L572.35,257.61L569.26,257.20L569.20,257.21Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M505.89,67.58L506.55,67.75L512.66,70.33L514.90,74.39L514.36,75.72L515.81,77.51L516.00,77.49L518.56,78.32L518.80,79.58L512.51,85.36L510.65,85.70L511.14,92.58L515.81,96.62L516.85,96.06L527.43,94.28L527.51,94.27L534.33,88.51L534.39,85.69L531.33,84.16L529.46,79.90L529.61,76.83L527.08,74.27L524.91,69.66L525.31,67.66L525.45,67.62L525.26,67.50L525.46,65.66L522.31,64.48L516.25,68.92L511.81,68.68L508.12,66.87L506.00,67.48L505.89,67.58Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M299.63,491.04L298.34,493.29L299.19,494.60L301.58,493.08L299.63,491.04Z " data-iso="FLK" data-name="Falkland Is." data-pop="3140.0"/><path d="M290.64,289.02L289.69,290.25L289.07,299.81L289.03,299.85L289.11,299.89L291.75,299.91L294.32,300.26L298.26,293.65L298.25,293.52L294.92,289.32L290.86,288.83L290.64,289.02Z M484.19,154.85L481.69,156.93L483.72,159.63L484.19,154.85Z M464.12,125.96L462.69,126.22L461.74,128.63L458.05,130.67L457.10,132.07L452.52,130.73L453.63,134.35L444.67,134.70L446.40,137.11L452.12,138.99L453.71,142.35L454.08,148.27L452.98,152.61L452.52,152.72L456.71,154.78L461.34,155.26L461.57,155.60L461.65,155.50L461.96,155.46L462.36,155.56L462.37,155.84L462.35,155.92L462.78,156.09L464.24,156.32L464.78,156.48L466.59,156.18L466.55,156.07L466.10,154.74L469.21,152.38L473.46,153.53L475.98,153.46L477.87,151.70L478.19,151.57L478.29,151.43L478.35,151.47L478.36,151.51L478.51,151.45L478.13,150.17L476.99,149.64L476.76,144.04L476.97,143.84L476.92,143.72L475.70,142.04L474.37,143.06L478.10,138.16L478.43,138.00L478.29,137.95L479.71,133.50L474.86,131.51L474.76,131.53L474.58,131.45L474.15,131.42L474.03,131.53L473.34,131.35L473.25,131.24L473.03,131.23L470.68,129.17L469.37,129.83L464.33,125.86L464.12,125.96Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M498.49,300.21L498.06,300.09L493.21,299.93L492.54,300.18L492.50,300.41L492.51,301.24L492.53,304.58L487.15,304.47L487.10,304.61L487.78,307.99L485.16,310.61L487.40,316.78L491.57,321.81L491.87,322.14L494.35,320.12L493.35,317.42L497.03,315.05L500.72,317.04L501.36,316.56L500.97,309.12L500.40,307.47L501.49,303.43L498.55,300.68L498.57,300.44L498.49,300.21Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M558.61,196.04L558.60,195.79L558.90,194.99L558.67,195.36L558.16,195.94L558.21,196.04L558.34,196.35L558.61,196.04Z " data-iso="GAZ" data-name="Gaza" data-pop="1604238.0"/><path d="M438.65,112.27L436.41,114.22L436.86,115.23L441.16,115.65L441.42,115.75L441.52,111.85L438.75,112.39L438.65,112.27Z M449.60,100.88L443.67,102.35L444.26,102.89L443.03,111.27L444.96,108.95L444.30,112.62L448.55,112.70L449.44,117.61L446.66,119.64L446.30,121.81L443.48,123.17L448.72,124.85L442.50,128.96L447.61,128.81L453.74,126.55L459.39,126.59L461.22,125.66L460.96,123.29L461.95,120.19L456.77,117.00L457.14,115.68L450.35,107.61L452.75,103.86L446.91,103.97L449.60,100.88Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M588.54,158.05L586.27,156.02L574.18,153.39L571.38,152.27L569.57,152.68L570.23,153.06L573.13,154.77L573.99,155.09L575.36,158.76L574.92,159.42L575.85,159.73L580.60,160.82L580.61,160.88L580.75,160.85L582.78,160.51L584.86,160.28L584.92,160.23L585.46,159.76L589.38,160.95L589.66,160.24L588.56,158.22L588.60,158.10L588.54,158.05Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M456.63,268.26L449.10,268.87L448.71,270.62L449.23,274.10L449.26,274.29L449.29,274.47L449.55,279.29L447.57,284.82L448.95,289.13L448.24,289.83L448.03,289.84L447.95,289.98L448.05,290.01L451.38,291.15L460.48,287.41L460.96,286.55L461.21,286.41L459.38,284.08L459.16,274.59L457.53,268.66L457.34,268.45L456.63,268.26Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M422.44,263.79L419.14,263.94L416.48,262.91L415.49,262.87L415.48,263.16L414.24,266.53L412.21,267.41L411.38,269.07L411.35,269.45L413.24,271.55L414.02,271.98L416.65,275.73L416.68,275.83L419.37,272.80L420.96,272.46L424.48,274.63L425.68,277.81L425.92,277.85L426.07,277.84L428.27,278.35L428.71,280.64L431.32,281.06L431.43,281.16L431.60,281.01L433.10,276.77L433.64,275.72L432.93,271.99L433.01,271.85L433.06,271.61L430.51,265.56L423.03,265.27L422.56,263.93L422.65,263.84L422.44,263.79Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M406.96,260.07L407.50,260.48L406.21,261.17L406.22,261.48L409.14,260.54L415.17,260.51L414.26,259.79L406.87,259.60L406.96,260.07Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M415.49,262.87L414.47,262.87L411.00,262.85L409.02,263.72L406.34,264.01L407.17,264.55L408.07,265.58L410.22,267.08L411.23,268.82L411.38,269.07L412.21,267.41L414.24,266.53L415.48,263.16L415.49,262.87Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M492.50,300.41L491.79,300.41L488.34,300.41L488.00,300.25L487.79,299.93L487.72,300.77L487.12,302.65L486.85,303.03L487.17,304.39L487.15,304.47L492.53,304.58L492.51,301.24L492.50,300.41Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M531.90,158.72L531.55,158.62L531.49,159.89L529.40,160.32L522.71,160.11L522.40,160.07L522.24,160.07L519.29,161.44L517.39,161.78L517.01,161.80L517.00,162.07L516.33,164.41L515.39,165.00L514.56,165.86L514.86,166.11L519.12,170.82L518.47,172.58L522.49,177.10L523.83,175.50L524.15,172.12L525.72,172.39L522.19,168.79L523.13,168.58L521.83,163.06L523.94,164.51L526.63,163.97L524.97,162.16L531.35,162.09L531.44,162.24L532.24,161.28L532.09,160.42L532.16,158.79L531.90,158.72Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M334.97,64.84L331.60,63.72L332.21,66.91L334.97,64.84Z M398.22,28.32L382.74,28.46L366.78,29.83L374.42,30.02L367.46,31.19L365.37,32.18L355.11,30.70L352.60,31.60L350.92,31.04L339.51,32.57L332.67,32.49L331.60,33.70L319.49,35.30L323.12,36.44L319.44,38.46L311.45,39.55L302.11,41.29L308.25,43.24L314.97,42.98L314.31,43.56L303.68,44.31L309.21,45.56L308.53,47.08L318.17,46.66L319.58,46.29L329.40,48.64L328.49,49.07L332.50,51.41L332.14,55.85L333.65,55.90L330.70,60.42L332.98,60.54L335.54,59.04L339.43,61.33L337.80,63.16L331.70,62.70L340.39,65.20L338.01,67.05L332.74,68.87L331.83,74.26L328.63,76.42L334.70,74.26L329.66,76.98L334.01,79.40L334.63,80.99L333.09,88.23L336.38,93.40L342.24,92.46L342.54,94.26L346.50,96.04L348.61,95.82L351.97,90.57L352.38,87.63L357.33,84.65L359.55,81.66L357.96,80.44L360.38,78.39L364.22,78.07L367.36,75.82L367.54,77.56L373.30,76.04L381.44,70.76L381.57,69.84L385.24,70.24L389.50,69.63L397.58,67.62L400.88,65.92L405.83,64.29L394.87,64.07L390.37,63.29L392.18,61.70L398.62,60.89L401.52,61.25L403.58,63.32L407.70,62.90L407.77,61.07L400.31,57.57L397.20,56.63L400.49,56.02L404.81,57.77L407.42,57.55L407.76,56.04L403.81,54.65L403.43,53.59L407.60,55.02L411.48,54.37L411.96,53.35L408.05,52.32L414.16,52.14L410.82,49.87L414.69,49.42L413.66,46.65L415.26,44.89L410.91,42.37L413.01,40.34L417.55,38.63L415.76,36.42L422.43,36.12L427.78,34.17L433.36,32.77L425.89,32.17L421.28,33.12L416.65,32.80L410.48,34.36L414.43,32.49L413.80,31.61L409.38,32.38L406.49,31.78L397.64,31.41L409.31,31.12L412.37,30.00L405.37,29.32L393.68,29.35L405.39,29.05L398.22,28.32Z " data-iso="GRL" data-name="Greenland" data-pop="57600.0"/><path d="M185.81,244.46L180.80,245.16L180.14,247.47L181.54,250.71L177.84,250.71L175.69,256.17L176.84,257.31L178.79,258.39L180.44,258.38L180.82,258.48L181.94,259.07L182.14,258.47L184.36,256.60L184.42,256.64L184.51,256.48L185.13,255.73L188.39,251.94L187.37,251.14L187.50,251.50L187.26,251.81L186.59,251.43L186.43,251.36L185.76,251.32L185.40,251.36L186.31,245.33L186.45,244.46L185.81,244.46Z " data-iso="GTM" data-name="Guatemala" data-pop="13276517.0"/><path d="M281.26,288.28L280.90,285.76L278.98,283.92L277.01,284.93L277.48,283.02L276.55,280.53L273.06,277.68L272.95,277.62L273.42,278.69L270.65,281.24L271.82,282.83L270.56,283.98L269.69,288.74L270.32,289.58L270.60,289.51L273.89,294.11L272.94,295.34L273.65,302.02L276.98,303.57L280.39,301.34L283.13,301.27L283.26,301.22L283.14,301.10L280.79,296.10L279.87,296.12L279.00,290.94L281.29,288.34L281.26,288.28Z " data-iso="GUY" data-name="Guyana" data-pop="772298.0"/><path d="M801.79,227.50L801.34,227.42L801.27,227.47L801.06,227.61L801.05,227.71L800.76,227.91L801.80,227.52L801.79,227.50Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M188.39,251.94L185.13,255.73L184.51,256.48L184.42,256.64L184.50,256.65L187.97,258.17L189.00,258.52L188.80,260.28L188.93,260.36L189.44,260.33L189.78,260.44L190.17,261.40L190.12,261.78L192.15,260.58L192.23,258.97L202.43,254.63L203.59,254.57L203.40,254.40L195.96,250.96L192.44,251.82L188.68,252.04L188.39,251.94Z " data-iso="HND" data-name="Honduras" data-pop="7792854.0"/><path d="M509.68,156.17L509.56,156.00L509.44,155.85L509.42,155.72L509.17,155.63L507.35,154.69L505.89,154.07L509.14,155.84L509.68,156.17Z M503.10,141.83L502.85,141.74L500.74,142.87L500.80,144.16L495.19,145.28L495.03,145.40L503.46,152.24L504.92,152.77L506.80,154.30L501.35,147.92L502.45,146.84L510.24,147.57L510.42,147.56L510.38,147.43L511.05,146.12L510.27,145.69L509.85,143.90L509.85,143.82L509.84,143.82L507.29,144.39L506.85,144.32L503.26,141.88L503.10,141.83Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M239.42,243.66L238.98,241.61L240.05,237.64L239.87,237.71L235.03,237.62L237.14,238.63L237.65,241.80L231.35,242.19L233.20,243.36L239.19,243.37L239.42,243.66Z " data-iso="HTI" data-name="Haiti" data-pop="9035536.0"/><path d="M517.90,135.21L513.84,134.67L508.83,137.32L504.53,136.54L504.45,136.56L504.31,136.71L503.29,138.20L502.66,138.79L502.26,140.17L501.85,140.55L502.37,140.57L502.55,141.05L503.07,141.75L503.10,141.83L503.26,141.88L506.85,144.32L507.29,144.39L509.84,143.82L509.85,143.82L509.91,143.82L510.50,143.62L511.33,143.27L513.40,143.14L513.50,143.20L513.60,143.11L515.66,142.73L517.90,138.31L520.09,136.85L520.15,136.77L520.09,136.72L519.08,135.87L518.60,135.69L518.21,135.14L517.95,135.17L517.90,135.21Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M826.42,341.63L823.39,341.87L826.55,344.59L828.61,344.26L826.42,341.63Z M841.55,340.18L840.96,340.52L840.75,340.71L840.52,340.85L840.11,340.98L839.97,341.42L839.53,341.82L838.80,341.52L838.61,341.63L837.56,344.15L839.72,344.40L841.68,342.32L841.92,342.13L842.12,340.97L842.30,340.73L841.66,340.09L841.55,340.18Z M835.18,338.91L835.95,337.90L830.86,338.69L828.60,337.58L826.00,339.21L835.18,338.91Z M788.37,329.60L784.39,329.27L782.40,332.37L795.61,336.11L797.85,337.26L805.96,337.75L809.92,339.47L808.64,335.41L805.38,335.50L804.10,332.89L797.89,332.78L792.02,332.18L788.37,329.60Z M857.84,318.38L855.70,318.29L852.01,319.66L858.07,320.03L860.96,321.93L861.13,320.77L857.84,318.38Z M784.78,314.11L783.37,313.60L781.95,315.45L783.95,315.94L784.56,318.24L785.72,316.95L784.78,314.11Z M890.95,340.72L891.51,332.58L891.44,331.76L892.48,317.47L891.79,317.46L882.80,313.45L878.37,316.27L875.11,320.20L871.49,315.99L871.30,311.73L866.14,309.42L862.74,311.13L865.78,316.16L870.04,317.52L865.79,317.74L867.21,322.25L869.87,320.58L870.62,321.63L883.04,327.67L884.35,332.92L885.66,335.25L884.78,337.41L888.43,336.80L890.81,340.60L890.95,340.72Z M842.96,304.60L842.85,302.53L837.99,304.84L831.20,303.41L828.06,305.68L827.22,310.88L826.36,311.39L824.36,320.59L826.45,322.56L826.36,323.95L830.82,317.69L830.50,320.85L833.40,325.46L836.42,323.83L834.62,320.92L833.58,314.20L838.36,311.59L836.80,310.85L831.40,312.93L828.62,311.25L829.67,306.27L841.55,306.47L842.96,304.60Z M851.74,305.12L851.20,306.40L855.36,307.38L853.23,303.15L851.74,305.12Z M820.28,293.44L820.64,293.86L821.20,293.68L821.18,293.55L821.07,293.21L820.64,293.28L820.34,293.27L820.28,293.44Z M795.05,301.29L793.70,306.25L796.95,312.70L797.61,317.75L799.75,319.12L802.13,318.47L810.55,320.58L811.03,322.83L816.18,319.31L817.20,316.36L816.52,314.27L820.32,310.13L820.34,306.94L823.66,303.44L819.93,295.07L820.09,293.29L820.11,293.26L814.27,293.18L811.78,301.39L808.37,303.65L804.63,302.59L798.91,305.02L797.13,303.74L795.82,300.91L795.05,301.29Z M754.97,289.48L751.17,288.18L751.00,289.29L759.29,300.00L762.42,302.82L767.11,311.10L768.75,315.06L773.26,322.32L777.61,326.29L783.63,328.42L784.02,324.41L782.40,316.57L781.14,316.79L778.69,311.80L776.77,310.21L777.50,307.12L775.63,306.40L771.64,302.36L765.75,297.48L757.92,289.46L754.97,289.48Z " data-iso="IDN" data-name="Indonesia" data-pop="240271522.0"/><path d="M696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.42,208.23L720.71,207.55L721.44,207.86L722.00,210.17L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.27,208.75L732.81,207.55L734.17,205.62L741.74,202.68L743.77,206.42L746.47,207.03L746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.11,229.67L723.54,230.75L723.48,228.95L719.95,232.19L718.71,236.44L716.41,237.00L711.79,243.55L708.26,247.04L707.84,249.23L705.64,249.66L702.75,251.71L703.45,260.41L702.73,271.28L701.36,271.34L700.44,274.82L694.31,278.13L692.13,274.39L689.15,266.35L687.15,263.26L684.94,256.67L681.59,250.77L677.69,237.23L676.30,228.87L675.69,231.13L673.40,233.50L671.41,233.97L666.25,229.48L665.87,227.95L668.95,227.39L669.65,225.53L667.54,226.66L662.43,223.24L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.08,186.00L689.65,191.47L687.25,191.54L689.17,195.53L696.63,199.84L696.76,200.10Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M438.78,112.12L435.89,112.09L435.92,114.24L431.49,117.20L432.16,118.42L429.89,123.45L432.64,124.48L440.32,121.58L441.51,119.04L441.27,115.77L441.16,115.65L436.86,115.23L436.41,114.22L438.65,112.27L438.78,112.12Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M585.33,166.08L585.23,166.07L583.27,166.99L586.52,174.99L586.52,175.04L586.53,175.07L588.96,179.13L591.25,179.78L591.50,182.27L590.16,186.58L598.05,194.24L597.97,197.09L600.99,200.83L601.12,200.78L605.38,199.98L610.68,208.21L617.70,212.47L621.33,213.07L623.39,211.56L628.38,214.50L641.77,217.97L641.93,217.94L642.14,214.48L644.83,212.76L645.65,210.57L643.99,207.88L641.18,205.92L638.05,201.90L637.37,201.20L637.43,201.11L638.00,200.23L638.92,195.72L636.20,194.72L633.83,185.97L634.87,185.17L635.20,180.74L635.10,180.50L635.00,180.36L633.99,176.83L631.75,176.85L628.32,173.96L622.10,171.65L619.14,171.29L612.76,174.32L612.97,174.90L608.22,176.91L602.57,175.02L597.64,170.57L597.61,170.41L595.48,166.97L594.38,165.96L590.71,168.74L590.53,168.73L590.03,168.71L589.63,168.87L589.47,168.83L588.90,168.73L587.58,168.38L585.40,166.15L585.33,166.08Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M586.41,174.96L583.81,174.75L580.58,174.26L579.88,175.09L579.61,175.16L579.61,175.21L577.17,177.29L577.15,181.69L571.61,188.06L570.84,188.57L571.14,189.36L572.02,191.73L572.80,192.62L572.41,193.05L573.08,193.17L580.57,196.30L583.97,198.91L594.88,204.06L595.39,203.94L595.80,203.35L596.84,200.69L597.88,200.34L599.30,200.75L599.30,200.65L600.42,200.85L600.72,200.91L600.99,200.83L597.97,197.09L598.05,194.24L590.16,186.58L591.50,182.27L591.25,179.78L588.96,179.13L586.53,175.07L586.52,175.04L586.41,174.96Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M420.20,76.19L418.00,75.41L413.91,77.43L408.55,76.80L407.68,77.98L405.28,77.76L403.75,75.57L399.55,78.10L404.71,78.63L404.41,79.88L400.77,80.58L404.03,81.55L401.92,83.59L405.73,83.35L407.91,84.58L411.65,85.06L421.85,81.86L424.54,79.92L422.07,76.75L420.20,76.19Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M562.37,190.69L562.46,189.59L562.55,189.42L562.30,188.57L562.33,188.35L562.26,188.41L561.35,189.48L561.12,189.63L560.24,189.61L560.18,190.02L559.65,192.79L559.38,193.87L558.91,194.97L558.90,194.99L558.60,195.79L558.61,196.04L558.34,196.35L558.65,197.11L559.42,199.09L559.88,200.00L560.83,202.57L561.01,202.29L561.28,199.99L561.29,198.81L561.76,195.93L561.79,195.37L561.67,195.36L560.51,194.67L561.58,192.06L561.77,192.08L561.75,191.27L561.85,191.05L562.19,190.88L562.35,190.86L562.37,190.69Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M502.23,171.18L493.41,172.19L493.56,173.15L500.85,176.65L502.23,171.18Z M484.86,161.69L483.83,160.55L480.93,161.60L481.60,167.66L485.00,167.13L484.86,161.69Z M486.32,140.55L486.21,141.00L483.60,142.07L482.52,144.12L480.85,142.17L477.07,143.92L476.97,143.84L476.76,144.04L476.99,149.64L478.13,150.17L478.51,151.45L479.18,151.32L481.99,149.13L486.20,151.15L487.08,154.28L494.60,160.40L502.23,164.86L503.91,168.61L502.71,172.19L503.66,172.18L506.40,167.04L504.98,164.34L505.92,163.00L509.81,165.47L508.52,162.49L502.51,159.44L503.26,158.37L497.47,155.91L491.86,149.11L491.59,145.53L495.74,144.89L495.57,145.03L495.17,143.65L494.54,142.46L495.29,141.96L495.33,141.75L494.75,141.63L490.99,140.30L491.01,139.79L486.40,140.58L486.32,140.55Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M222.90,242.16L220.36,242.20L220.60,243.63L225.87,244.11L222.90,242.16Z " data-iso="JAM" data-name="Jamaica" data-pop="2825928.0"/><path d="M572.80,192.62L572.02,191.73L571.14,189.36L570.84,188.57L570.14,189.06L565.52,192.36L564.51,192.20L562.67,190.93L562.35,190.86L562.19,190.88L561.85,191.05L561.75,191.27L561.77,192.08L561.89,192.64L561.86,193.55L562.01,194.34L561.81,195.07L561.79,195.37L561.76,195.93L561.29,198.81L561.28,199.99L561.01,202.29L561.06,202.54L561.01,203.02L564.95,203.01L569.58,198.89L566.70,195.82L572.02,193.47L572.41,193.05L572.80,192.62Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M840.52,187.74L837.01,188.75L840.26,191.27L840.34,195.63L842.45,196.53L843.87,194.68L842.19,187.92L840.52,187.74Z M848.90,185.39L845.15,186.00L844.00,188.41L849.72,188.66L848.90,185.39Z M857.15,159.94L855.79,165.26L856.35,165.35L857.33,171.94L853.83,176.37L851.66,180.27L843.55,180.72L839.70,184.90L839.27,186.40L843.04,186.89L842.77,185.50L851.47,184.10L853.88,188.16L855.00,182.51L859.57,184.17L859.97,182.41L863.07,182.19L864.15,183.08L865.15,179.69L864.42,178.92L862.02,171.44L862.47,166.22L857.15,159.94Z M859.17,150.21L851.09,145.30L850.57,145.68L853.87,152.81L851.04,155.65L854.00,159.76L852.78,156.52L856.65,155.65L861.70,157.58L862.48,154.26L864.46,154.16L864.53,152.52L859.17,150.21Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M682.93,181.00L682.13,181.02L681.66,180.90L680.36,180.52L680.00,180.35L680.21,180.67L680.52,181.16L681.08,182.02L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L682.93,181.00Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M593.35,142.23L598.56,139.73L603.14,140.23L604.35,142.91L603.82,145.08L605.19,145.93L600.22,145.84L597.77,149.37L601.46,153.55L605.24,154.85L605.65,158.12L605.80,158.49L610.28,156.63L614.62,160.30L615.85,160.11L615.97,160.12L615.80,159.30L613.16,147.11L627.87,149.39L631.19,152.42L638.01,152.21L639.16,151.63L643.23,154.61L643.77,157.69L645.16,157.73L646.47,160.63L651.40,162.49L652.97,159.96L657.27,156.97L657.47,156.83L657.28,156.67L657.88,155.11L664.08,155.22L664.08,154.15L679.79,155.00L683.12,156.63L683.63,157.04L683.68,156.97L683.92,153.19L680.10,147.07L684.24,145.87L686.69,146.66L685.68,144.73L685.83,140.19L692.84,139.18L691.51,135.87L694.67,132.74L694.95,132.81L694.79,132.59L692.24,130.41L691.28,131.37L688.43,130.80L680.84,126.55L673.03,126.86L663.64,118.27L659.34,115.98L659.59,114.46L654.29,117.69L651.98,117.75L651.12,116.08L644.77,115.24L643.58,112.75L639.86,111.55L636.03,112.04L635.03,113.01L625.66,115.15L619.01,115.89L619.55,118.20L622.05,118.98L619.62,119.44L621.06,124.50L622.70,126.67L616.94,127.40L614.35,125.97L610.73,125.97L607.61,127.63L597.30,123.76L594.52,123.97L588.72,127.74L589.07,130.07L585.70,128.25L584.64,134.58L586.82,137.31L589.53,137.60L593.46,142.40L593.35,142.23Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M566.24,288.54L565.68,289.19L563.55,291.65L562.93,292.37L562.32,293.08L562.81,294.27L565.18,299.52L565.44,302.29L562.30,307.53L562.17,311.12L562.18,311.73L562.41,311.73L573.74,320.71L578.47,324.91L578.49,324.81L581.55,318.93L582.95,317.22L585.26,314.82L585.71,314.21L584.01,311.26L583.97,298.00L586.34,294.58L586.72,293.95L586.27,293.95L583.25,292.90L579.37,295.81L575.02,295.13L572.12,292.96L568.48,292.07L566.23,288.66L566.24,288.54Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M683.12,156.63L679.79,155.00L664.08,154.15L664.08,155.22L657.88,155.11L657.28,156.67L657.47,156.83L657.54,156.76L657.37,157.98L659.49,160.72L664.98,161.88L659.42,163.92L659.35,163.98L659.37,164.04L654.89,164.94L655.24,166.52L661.48,166.32L663.89,167.66L667.50,166.76L667.67,166.79L667.90,166.75L670.22,163.07L674.48,163.57L676.57,161.21L683.75,157.25L683.63,157.04L683.12,156.63Z M660.36,165.21L659.82,164.91L659.49,164.51L660.36,165.21Z M658.98,165.45L658.46,165.44L658.34,165.32L658.98,165.45Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.02,256.92L774.02,256.63L770.64,259.77L773.20,266.33L773.19,266.21L774.14,269.17L775.63,268.65L775.83,270.62L777.67,270.50L778.21,270.97L782.48,266.42L786.67,264.35L786.11,255.80L786.04,255.60Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M821.46,172.85L821.85,175.70L824.59,179.97L824.32,181.95L826.42,184.48L832.65,182.07L831.56,177.75L826.57,171.34L825.18,169.74L821.85,171.11L821.46,172.75L821.46,172.85Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M518.24,156.71L516.65,153.84L515.40,153.46L515.06,154.67L514.72,154.77L514.36,154.88L513.92,155.01L513.86,155.11L514.02,155.73L514.01,155.77L514.12,155.85L514.87,156.61L515.40,157.10L515.64,158.00L515.60,158.16L515.64,158.19L516.15,157.46L518.31,156.83L518.31,156.83L518.24,156.71Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M599.30,200.75L597.88,200.34L596.84,200.69L595.80,203.35L595.39,203.94L595.97,204.02L598.70,205.63L599.00,205.97L601.28,205.93L601.09,205.61L599.43,202.07L599.96,202.23L599.30,200.89L599.30,200.75Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L770.83,243.29L770.82,243.31L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.56,228.43Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M562.45,188.23L563.62,186.83L563.11,183.88L562.20,184.05L562.23,184.35L561.39,185.42L561.36,186.20L560.34,189.33L560.24,189.61L561.12,189.63L561.35,189.48L562.26,188.41L562.33,188.35L562.45,188.23Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M431.32,281.06L428.71,280.64L428.27,278.35L426.07,277.84L425.92,277.85L425.91,277.96L425.82,278.47L422.11,283.49L422.77,284.27L424.32,285.62L429.40,290.11L433.93,292.56L434.28,292.62L433.25,285.89L432.02,285.59L431.49,281.20L431.43,281.16L431.32,281.06Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M531.34,194.53L522.48,190.20L516.57,192.71L515.70,198.93L514.00,199.73L508.63,196.80L504.99,196.14L502.61,192.93L498.06,190.65L491.64,189.48L491.19,189.25L491.28,192.01L487.29,195.43L487.66,197.87L486.00,199.68L485.65,199.87L485.37,200.05L485.77,214.83L489.59,220.28L493.22,223.36L493.52,224.00L495.10,224.41L498.46,225.43L499.28,226.21L502.63,225.87L502.63,225.87L503.72,225.28L505.60,224.26L512.50,228.24L528.76,237.58L530.24,238.43L530.22,237.98L530.92,236.64L533.20,236.62L532.97,231.25L532.89,229.46L532.86,228.66L531.53,203.63L530.52,200.22L531.46,194.74L531.34,194.53Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M483.93,139.81L483.86,139.52L483.81,139.43L483.75,139.18L483.72,139.13L483.61,139.47L483.61,139.73L483.64,139.86L483.68,139.85L483.89,139.87L483.93,139.81Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M703.29,273.11L702.93,279.41L704.86,286.69L709.23,284.90L709.61,282.13L706.66,276.25L703.29,273.11Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M542.42,415.98L544.35,412.34L542.01,410.64L538.50,413.66L537.90,415.40L540.16,417.92L542.42,415.98Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M512.19,111.62L512.35,111.64L512.51,111.40L512.65,110.94L512.45,111.23L512.19,111.62Z M512.32,109.15L512.42,109.85L512.96,111.42L513.08,111.67L513.08,111.69L517.42,113.12L517.19,113.82L517.32,114.58L517.45,114.75L517.58,114.62L519.34,115.47L519.48,116.09L519.51,116.16L519.71,116.23L524.81,114.90L525.16,113.14L527.26,111.89L526.91,110.49L526.90,110.34L526.76,110.32L524.27,108.87L514.85,107.86L512.28,108.99L512.32,109.15Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M474.06,129.21L473.41,129.35L473.05,130.30L473.32,131.18L473.25,131.24L473.34,131.35L474.03,131.53L474.15,131.42L474.58,131.45L474.76,131.53L474.77,131.33L474.07,129.52L474.06,129.31L474.08,129.22L474.06,129.21Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M527.89,104.15L523.78,103.01L521.93,102.37L520.00,103.00L519.98,103.29L518.66,105.99L513.46,103.99L512.13,108.36L512.28,108.99L514.85,107.86L524.27,108.87L526.76,110.32L526.90,110.34L526.96,110.30L528.02,109.79L528.70,109.88L530.63,108.74L530.71,108.75L530.75,108.59L529.15,105.96L529.33,105.33L528.25,104.15L527.95,104.14L527.89,104.15Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M799.69,228.74L799.73,228.72L799.86,228.65L799.86,228.65L799.78,228.56L799.69,228.58L799.67,228.67L799.67,228.74L799.69,228.74Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M266.06,243.42L266.02,243.39L265.90,243.38L265.74,243.47L265.71,243.55L266.05,243.55L266.06,243.42Z " data-iso="MAF" data-name="St. Martin" data-pop="29820.0"/><path d="M406.20,231.53L413.36,230.60L415.97,223.16L420.08,219.50L422.55,214.70L425.00,211.44L428.28,212.02L431.47,210.94L431.32,209.12L431.72,209.12L431.74,208.24L431.81,205.40L438.33,201.38L441.91,200.48L445.81,197.41L447.44,194.56L453.81,193.18L451.10,182.35L450.51,182.28L444.98,182.14L441.56,179.63L440.39,179.90L437.86,185.84L433.29,188.56L429.12,194.54L429.00,200.30L425.91,204.51L421.94,207.42L419.06,208.19L417.32,211.94L414.33,214.49L412.00,220.54L409.79,222.82L406.47,229.81L406.20,231.53Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M478.36,151.51L478.35,151.47L478.29,151.43L478.19,151.57L478.36,151.51Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M535.93,145.39L539.94,140.84L537.24,136.71L533.47,135.13L530.30,135.56L530.26,135.68L530.52,135.66L534.78,140.15L535.07,140.80L535.63,145.29L535.80,145.51L535.93,145.39Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M609.34,352.57L608.38,351.31L606.35,356.12L604.35,356.80L603.81,360.49L592.91,366.81L591.36,370.33L591.34,373.54L592.31,377.63L591.82,380.20L588.19,390.04L588.97,392.35L588.61,395.33L589.45,397.62L593.67,399.66L600.61,392.72L607.50,373.71L609.36,363.37L611.21,361.53L610.98,358.32L609.34,352.57Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M114.30,192.26L115.52,197.80L115.30,199.20L117.88,203.95L117.94,208.21L115.54,208.45L118.78,212.48L122.32,215.39L121.72,219.24L125.87,223.68L126.65,226.27L128.60,224.13L125.55,221.04L125.89,219.15L125.02,214.62L121.91,205.01L119.42,198.87L120.05,193.86L124.81,196.45L124.21,197.84L128.76,208.62L129.08,210.90L131.54,213.80L130.64,214.96L136.03,222.21L139.55,232.61L137.77,235.24L143.31,242.63L147.51,243.90L150.61,246.66L157.26,249.87L164.02,252.06L168.47,249.46L171.18,250.77L175.61,256.09L175.69,256.17L177.84,250.71L181.54,250.71L180.14,247.47L180.80,245.16L185.81,244.46L186.45,244.46L186.49,244.15L188.69,242.20L189.39,242.10L189.47,241.95L190.55,242.82L195.36,232.50L193.40,231.34L184.46,233.00L182.41,238.95L179.34,242.20L178.59,241.51L170.26,243.17L165.58,238.98L163.35,232.66L162.80,227.20L164.56,220.86L167.06,215.96L167.27,215.21L162.02,213.64L157.81,201.62L154.17,201.58L151.58,204.28L148.15,198.59L144.81,194.33L139.54,194.70L139.18,195.91L130.86,195.93L122.24,192.20L121.23,190.97L114.32,191.58L114.30,192.26Z " data-iso="MEX" data-name="Mexico" data-pop="111211789.0"/><path d="M520.42,156.57L518.80,156.76L518.47,156.85L518.31,156.83L518.31,156.83L516.15,157.46L515.64,158.19L515.60,158.16L515.57,158.20L515.37,159.41L516.98,161.72L517.01,161.80L517.39,161.78L519.29,161.44L522.24,160.07L522.40,160.07L522.43,160.00L522.42,159.11L522.54,158.72L520.97,157.12L520.49,156.60L520.42,156.57Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M469.41,239.91L467.25,237.38L444.01,219.37L443.10,218.69L442.05,218.69L437.87,219.51L440.73,252.77L429.54,252.77L428.79,252.32L423.94,253.75L421.92,252.71L420.57,255.46L420.03,255.23L420.31,255.81L422.67,261.91L422.67,263.57L422.65,263.84L422.56,263.93L423.03,265.27L430.51,265.56L433.06,271.61L433.01,271.85L433.10,271.85L438.33,269.85L438.39,271.50L440.49,270.86L440.59,270.91L440.64,270.71L441.33,265.90L444.00,263.52L444.84,260.61L447.44,260.70L447.61,259.35L455.23,254.38L457.57,254.60L458.21,254.86L458.25,254.68L461.52,253.57L468.29,252.82L470.11,249.68L470.38,240.33L470.37,239.70L469.41,239.91Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.83,229.66L737.27,232.07L736.71,233.78L736.92,234.05L739.19,235.27L745.27,245.34L744.79,250.51L746.11,249.13L746.25,251.31L753.39,247.16L755.96,253.00L756.32,255.05L760.51,268.00L760.56,271.80L760.70,271.75L763.00,266.07L760.36,258.32L757.33,253.82L758.38,253.10L758.35,249.87L753.29,242.03L754.12,239.26L760.18,235.26L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L762.90,230.95L759.14,230.31L754.35,223.21L750.77,222.67L750.05,220.50L752.09,212.98L751.06,209.42L748.80,207.22L748.67,207.12L748.15,206.60L747.79,206.60L746.65,206.97L746.58,207.10Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M511.22,152.27L509.83,154.06L509.34,154.27L509.47,155.71L509.42,155.72L509.44,155.85L509.56,156.00L509.68,156.17L509.79,156.19L510.02,156.37L510.79,156.82L511.69,157.89L512.15,158.18L512.83,155.48L513.08,155.56L513.96,155.76L514.01,155.77L514.02,155.73L513.86,155.11L513.92,155.01L514.36,154.88L514.72,154.77L514.72,154.68L513.06,153.77L512.74,153.58L511.30,152.32L511.30,152.27L511.22,152.27Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M773.17,130.07L765.64,128.93L761.66,131.63L757.25,132.35L752.43,131.98L745.18,128.50L738.98,129.05L733.18,127.62L731.61,125.11L721.73,122.41L720.44,126.02L722.71,129.37L721.71,129.87L713.36,129.56L708.08,127.38L701.05,129.28L698.99,131.46L696.19,132.54L696.18,132.54L696.27,132.70L697.47,134.65L707.08,140.06L709.06,143.21L708.90,145.25L713.74,146.97L719.90,148.35L722.78,149.71L730.76,154.91L737.42,155.69L754.98,158.52L758.36,156.68L765.65,156.09L767.87,154.96L770.13,150.86L770.70,147.39L773.73,147.99L775.31,145.81L778.38,145.48L781.31,141.52L784.88,140.91L787.86,141.22L779.73,136.62L775.15,137.67L773.41,130.73L773.41,130.25L773.17,130.07Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M555.60,404.22L554.92,401.25L558.88,397.88L562.97,395.99L564.33,391.11L562.79,379.43L568.51,374.36L571.65,370.97L575.93,369.07L578.97,366.90L581.86,361.51L581.37,354.54L581.94,345.90L581.79,345.53L575.62,348.92L571.68,349.90L565.45,349.50L564.77,349.51L564.36,349.50L562.86,351.78L565.35,357.81L566.70,365.19L565.00,368.23L562.46,366.22L562.01,364.73L562.48,359.64L559.95,359.73L559.20,358.33L559.08,358.23L558.41,358.48L553.92,360.24L551.99,360.88L550.26,363.57L550.29,364.06L550.27,364.63L556.98,367.45L557.89,369.82L557.05,380.46L552.28,387.93L551.84,388.30L551.84,388.49L553.43,396.34L552.97,400.82L553.01,401.08L553.07,401.13L553.28,402.00L553.21,402.24L553.34,403.10L553.28,404.25L553.54,404.23L553.99,404.33L555.26,404.29L555.59,404.28L555.60,404.22Z M563.97,351.42L563.86,351.05L563.97,351.03L563.97,351.42Z M563.74,351.07L563.44,351.09L563.48,350.96L563.74,351.07Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M443.10,218.69L442.43,218.18L439.46,216.02L438.90,215.62L432.25,210.85L431.69,210.45L431.68,211.05L431.61,215.09L423.76,215.09L421.62,216.01L421.40,224.18L406.31,231.86L406.00,233.73L406.18,232.89L407.86,234.28L408.81,244.20L407.15,249.94L407.11,251.54L408.07,249.06L413.27,248.62L416.66,250.75L419.97,255.20L420.03,255.23L420.57,255.46L421.92,252.71L423.94,253.75L428.79,252.32L429.54,252.77L440.73,252.77L437.87,219.51L442.05,218.69L443.10,218.69Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M563.97,351.42L563.97,351.03L563.86,351.05L563.97,351.42Z M563.74,351.07L563.48,350.96L563.44,351.09L563.74,351.07Z M558.73,341.75L558.74,341.85L560.27,346.67L559.74,346.92L559.39,353.01L557.79,356.57L558.93,357.97L559.08,358.23L559.20,358.33L559.95,359.73L562.48,359.64L562.01,364.73L562.46,366.22L565.00,368.23L566.70,365.19L565.35,357.81L562.86,351.78L564.36,349.50L564.77,349.51L564.75,349.39L563.02,343.00L562.03,342.07L558.78,341.72L558.73,341.75Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M820.68,292.97L820.51,292.93L820.37,292.98L820.39,293.14L820.34,293.27L820.64,293.28L821.07,293.21L820.68,292.97Z M766.08,285.57L768.15,293.99L772.72,300.13L776.49,302.63L779.26,303.20L776.97,298.25L776.59,292.47L775.63,289.36L772.62,286.00L772.08,285.86L768.72,287.55L768.94,286.14L765.94,285.15L766.08,285.57Z M813.15,292.51L812.47,292.48L812.15,290.66L811.63,292.61L810.87,293.70L809.23,291.75L809.20,291.75L806.54,296.22L802.23,297.96L800.77,303.17L796.03,301.41L795.82,300.91L797.13,303.74L798.91,305.02L804.63,302.59L808.37,303.65L811.78,301.39L814.27,293.18L820.11,293.26L820.20,293.16L823.22,292.23L825.10,288.99L817.31,283.33L813.22,290.54L813.15,292.51Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M527.70,371.43L522.50,372.51L514.79,371.67L513.52,370.35L500.20,370.39L497.44,368.81L493.29,369.82L493.21,370.60L493.34,372.51L499.72,386.02L500.73,387.54L501.41,396.01L503.22,406.22L506.02,410.35L506.34,410.64L508.23,408.53L509.30,410.93L514.34,411.80L516.85,410.04L517.37,398.34L517.43,396.83L517.43,396.74L517.74,388.76L520.80,386.86L521.11,378.76L522.05,373.61L528.13,372.51L530.88,372.78L534.22,371.75L534.35,371.77L533.86,371.20L532.79,370.78L529.32,371.07L528.66,371.22L527.70,371.43Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M954.59,380.56L954.78,382.66L956.45,385.15L960.81,388.02L954.59,380.56Z " data-iso="NCL" data-name="New Caledonia" data-pop="227436.0"/><path d="M502.63,225.87L499.28,226.21L498.46,225.43L495.10,224.41L493.52,224.00L491.99,225.09L480.17,233.49L478.70,234.94L471.03,239.55L470.37,239.70L470.38,240.33L470.11,249.68L468.29,252.82L461.52,253.57L458.25,254.68L458.21,254.86L458.17,255.03L460.91,261.70L462.34,263.01L464.73,265.48L464.87,265.65L464.94,265.29L465.12,264.34L468.38,266.04L468.57,266.37L468.75,266.24L470.24,260.07L474.35,258.58L477.83,260.40L481.39,260.50L484.35,262.03L487.00,262.38L489.61,260.52L495.85,261.01L498.63,259.19L499.17,259.18L498.84,257.65L501.38,251.86L504.67,247.71L505.21,236.97L503.02,227.94L502.63,225.87L502.63,225.87Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M468.57,266.37L468.45,266.60L469.17,270.88L467.11,275.34L466.08,275.84L465.89,285.41L466.09,285.39L470.26,285.26L474.78,291.56L476.90,292.54L483.89,291.17L483.93,291.17L485.27,287.02L489.25,283.60L491.68,284.92L494.53,281.05L495.70,277.46L498.18,273.70L499.60,269.31L502.20,266.25L500.93,263.09L500.61,261.42L500.20,260.78L499.67,259.95L499.17,259.18L498.63,259.19L495.85,261.01L489.61,260.52L487.00,262.38L484.35,262.03L481.39,260.50L477.83,260.40L474.35,258.58L470.24,260.07L468.75,266.24L468.57,266.37Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M190.10,261.88L191.38,264.40L192.39,266.22L194.43,268.54L194.43,268.64L197.83,268.70L199.94,269.81L200.84,269.16L200.62,269.10L201.81,261.91L202.47,258.14L203.49,254.70L203.59,254.57L202.43,254.63L192.23,258.97L192.15,260.58L190.12,261.78L190.10,261.88Z " data-iso="NIC" data-name="Nicaragua" data-pop="5891199.0"/><path d="M468.58,124.95L468.30,124.83L467.96,124.97L466.73,124.84L466.53,124.89L468.39,125.34L468.58,124.95Z M472.87,126.97L473.02,127.02L473.15,127.04L473.68,127.05L473.82,126.52L474.15,124.51L473.46,123.58L476.62,118.39L476.25,118.33L470.99,119.48L467.80,124.79L468.65,124.81L469.97,124.74L472.87,126.97L472.87,126.97Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M486.54,99.17L489.08,95.67L489.77,91.63L487.86,90.45L487.10,85.42L491.37,81.56L492.53,76.50L496.72,73.33L497.30,71.05L505.58,67.59L505.89,67.58L506.00,67.48L508.12,66.87L511.81,68.68L516.25,68.92L522.31,64.48L525.46,65.66L525.26,67.50L525.45,67.62L525.80,67.54L526.27,66.78L529.40,66.09L529.41,65.32L529.05,65.28L524.33,64.23L529.26,63.85L522.91,61.76L519.08,63.44L519.17,62.12L513.86,62.00L511.82,64.72L510.07,63.55L508.68,65.17L504.79,64.83L503.43,66.40L502.26,65.43L496.73,68.82L497.86,69.61L494.16,70.42L492.76,73.21L488.90,75.57L485.84,80.61L481.03,84.11L482.21,85.11L478.68,85.35L473.87,88.24L469.96,89.87L470.89,91.20L476.45,92.20L475.06,92.79L470.32,92.54L471.91,95.62L470.99,97.18L472.54,99.09L471.81,100.53L475.51,102.50L479.36,101.58L484.06,98.37L486.53,99.07L486.54,99.17Z M503.45,40.23L500.85,40.45L503.11,42.83L506.35,43.15L507.01,41.83L503.45,40.23Z M492.63,36.86L491.14,36.60L492.11,39.24L488.60,37.21L482.03,37.07L480.66,38.39L483.33,40.21L493.17,40.06L493.29,40.88L487.66,43.13L493.33,45.58L496.99,41.74L502.91,39.86L497.58,38.72L492.63,36.86Z M501.02,36.00L505.83,38.58L509.63,38.24L514.17,36.47L505.68,36.15L505.05,35.45L501.02,36.00Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M719.21,208.30L717.08,208.52L711.16,206.89L707.20,204.60L706.59,203.50L697.83,199.48L696.94,200.33L696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.21,208.30Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M947.57,456.03L947.20,453.69L932.56,464.24L927.79,465.97L918.08,472.60L921.50,473.96L925.44,474.66L936.25,466.16L941.27,465.28L949.83,457.67L951.52,455.11L947.57,456.03Z M961.00,433.35L960.63,440.55L961.66,441.06L958.12,445.86L953.63,449.25L955.89,451.31L955.21,453.28L952.29,456.58L954.55,456.50L962.48,450.31L964.62,448.20L968.22,446.30L970.30,442.78L966.24,444.28L961.55,440.18L962.28,439.36L962.67,433.79L961.00,433.35Z " data-iso="NZL" data-name="New Zealand" data-pop="4213418.0"/><path d="M623.74,226.92L624.01,227.33L625.37,229.44L624.66,233.38L622.73,237.18L615.67,240.06L615.26,240.23L615.42,240.58L618.01,246.31L618.24,246.42L619.27,248.64L619.89,248.37L624.32,247.51L626.62,244.21L628.93,243.84L637.79,227.62L636.54,227.07L626.87,219.69L626.46,218.74L624.73,219.14L624.12,222.47L623.71,226.39L623.74,226.92Z M625.08,214.85L625.43,216.19L625.57,216.35L625.91,216.33L625.91,216.12L626.06,214.68L625.27,214.33L625.08,214.85Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M679.87,180.29L678.38,179.81L676.65,176.98L672.57,175.42L672.41,175.47L672.13,175.61L664.06,179.36L665.15,181.07L662.88,186.49L662.92,188.58L661.41,189.57L660.96,193.73L654.76,196.02L653.07,197.80L653.15,201.28L647.26,202.88L638.56,201.59L637.37,201.20L638.05,201.90L641.18,205.92L643.99,207.88L645.65,210.57L644.83,212.76L642.14,214.48L641.93,217.94L641.88,218.00L655.91,216.51L659.57,221.64L662.27,222.99L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.08,182.02L680.52,181.16L680.21,180.67L680.00,180.35L679.87,180.29Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M203.82,273.95L202.59,275.12L203.14,276.18L202.54,279.33L202.62,279.23L204.58,278.76L209.20,282.35L211.26,281.37L210.01,278.82L214.39,276.02L217.26,278.23L217.63,282.24L217.71,282.34L219.94,279.82L219.59,277.23L218.64,276.41L213.68,273.98L205.18,276.24L204.01,274.14L203.82,273.95Z " data-iso="PAN" data-name="Panama" data-pop="3360474.0"/><path d="M241.64,323.01L240.03,321.96L241.39,317.80L236.75,316.09L234.18,316.82L225.39,308.30L225.21,308.53L225.03,308.66L225.32,311.55L224.35,313.62L220.97,317.30L217.12,319.03L214.94,324.44L209.46,323.17L209.78,320.25L209.24,320.63L207.24,325.57L208.30,328.27L207.55,329.78L210.82,331.90L214.46,337.47L218.95,346.86L219.37,348.47L224.43,356.44L224.29,358.65L228.32,363.23L235.78,367.54L243.39,373.50L243.64,373.75L245.30,372.84L245.38,372.47L245.88,370.98L246.09,370.74L246.09,370.73L245.99,360.32L246.98,358.79L246.23,357.04L247.11,352.82L244.44,348.05L244.01,347.27L243.72,347.28L240.76,347.48L240.52,343.24L235.82,343.88L233.75,341.76L229.77,335.14L233.45,326.25L238.70,323.69L241.79,323.51L241.80,323.28L241.64,323.01Z " data-iso="PER" data-name="Peru" data-pop="29546963.0"/><path d="M844.86,274.86L842.92,273.62L843.40,275.96L836.33,277.74L832.93,282.44L833.53,283.46L834.91,280.43L839.43,281.09L839.48,282.75L843.83,288.16L844.74,286.80L843.70,284.26L844.75,282.01L846.33,284.11L847.17,282.53L844.86,274.86Z M836.11,275.78L836.69,270.35L835.01,269.27L834.92,272.12L833.69,273.53L836.11,275.78Z M833.23,266.66L831.87,266.27L832.02,268.93L834.38,269.49L835.18,268.16L833.23,266.66Z M825.25,241.59L824.10,241.84L823.61,245.10L824.54,250.17L822.78,249.80L824.34,255.08L825.86,254.97L830.96,258.88L832.86,261.01L832.50,258.46L835.02,261.35L837.65,261.58L833.40,257.45L831.20,257.73L828.29,252.72L830.50,246.94L828.72,242.00L825.25,241.59Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M925.99,323.49L922.78,327.52L915.00,327.69L914.84,328.74L918.56,330.61L921.84,330.11L925.56,328.02L925.99,323.49Z M892.48,317.47L892.48,317.48L892.48,317.72L891.44,331.76L891.51,332.58L890.95,340.72L891.40,341.09L898.28,339.08L899.16,336.72L903.71,336.01L906.87,336.99L910.85,343.56L919.53,346.15L917.94,343.92L918.50,342.76L912.15,336.28L912.91,330.91L906.74,327.44L906.93,325.37L900.20,320.40L892.57,317.47L892.48,317.47Z M929.14,325.14L929.42,322.81L926.52,319.76L922.62,317.93L928.34,322.90L929.14,325.14Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M508.98,114.48L504.98,113.13L501.06,114.08L495.14,116.18L495.04,116.12L495.01,116.23L495.07,116.39L495.43,116.43L495.99,116.55L495.84,117.07L495.22,116.87L496.94,122.48L496.60,123.34L497.40,126.63L497.39,126.68L497.62,126.67L498.64,126.60L502.75,129.24L503.35,128.20L507.65,129.98L508.60,131.23L508.62,131.33L508.91,131.38L512.81,131.77L516.27,131.68L518.65,132.82L518.83,132.85L518.94,132.84L519.68,132.89L521.52,128.34L520.97,124.65L520.80,124.41L520.58,124.07L519.42,121.88L520.98,120.49L519.95,117.31L519.51,116.16L519.48,116.09L519.34,115.47L517.58,114.62L517.45,114.75L517.36,114.77L515.87,114.74L509.09,114.40L508.98,114.48Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M811.64,164.84L815.17,166.52L815.59,168.86L817.01,169.52L815.37,171.51L821.42,172.72L821.46,172.75L821.85,171.11L825.18,169.74L824.96,169.54L821.47,167.65L821.07,165.61L825.38,161.51L824.11,159.15L825.63,156.73L825.72,156.64L825.59,156.55L825.05,156.03L824.86,155.81L824.72,155.69L822.34,154.95L821.66,156.93L818.93,158.07L820.11,159.89L816.97,159.29L811.59,164.81L811.64,164.84Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M432.48,158.31L430.95,167.00L432.30,171.31L431.61,175.44L435.96,174.95L436.21,174.91L436.30,165.97L437.87,165.05L437.71,157.89L432.78,157.92L432.48,158.31Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M281.47,379.68L278.35,377.12L275.58,377.16L270.39,378.41L268.73,387.52L268.68,387.70L268.77,387.80L271.64,391.10L274.81,393.53L284.41,398.13L285.20,399.79L282.89,405.53L289.38,406.58L291.71,406.32L294.32,401.25L294.19,399.71L294.15,399.19L294.70,394.21L290.63,392.54L290.25,390.79L282.79,387.25L281.56,380.53L281.47,380.27L281.47,379.68Z " data-iso="PRY" data-name="Paraguay" data-pop="6995655.0"/><path d="M611.63,219.94L610.65,214.52L609.43,217.23L609.88,219.21L609.80,219.43L610.00,219.82L611.26,220.08L611.63,219.94Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M535.63,145.29L535.07,140.80L534.78,140.15L530.52,135.66L530.26,135.68L530.14,135.72L525.75,137.57L523.72,136.91L520.24,136.71L520.15,136.77L520.09,136.85L517.90,138.31L515.66,142.73L513.60,143.11L513.50,143.20L513.68,143.40L516.25,146.07L518.08,148.22L520.86,149.75L520.91,149.78L521.12,149.93L531.53,150.33L532.51,150.11L537.52,151.54L537.51,151.34L538.04,147.77L537.90,147.38L540.00,146.42L540.02,146.18L538.11,145.97L536.52,146.07L536.13,145.87L535.80,145.51L535.63,145.29Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M833.06,114.62L834.34,117.97L833.14,118.02L837.42,124.03L839.27,125.43L849.88,143.27L850.67,141.09L854.15,143.48L853.86,142.31L847.74,136.98L846.35,132.41L849.10,132.38L833.06,114.62Z M512.35,111.64L512.19,111.62L512.07,111.80L511.00,112.74L509.70,113.81L509.47,114.11L509.09,114.40L515.87,114.74L517.36,114.77L517.45,114.75L517.32,114.58L517.19,113.82L517.42,113.12L513.08,111.69L513.10,112.22L511.51,112.64L512.12,111.96L512.35,111.64Z M35.73,67.87L35.42,67.74L20.71,79.82L26.84,76.80L26.34,78.51L30.83,78.31L36.12,81.89L36.89,80.54L39.54,79.88L41.29,78.10L43.85,78.43L48.16,75.79L47.23,74.02L43.80,73.48L40.71,75.55L38.75,75.00L41.49,71.72L37.57,69.75L35.73,67.87Z M48.09,59.97L45.36,60.09L43.21,61.70L49.85,61.03L48.09,59.97Z M582.05,54.91L578.79,54.93L575.65,59.99L579.81,60.50L580.57,62.06L585.09,62.68L590.53,62.49L584.17,59.11L584.68,55.22L582.05,54.91Z M780.97,49.02L780.13,49.51L786.25,50.63L790.59,49.62L780.97,49.02Z M764.59,47.74L760.90,46.72L759.83,49.40L763.64,50.64L766.79,50.17L773.27,50.57L770.44,48.78L773.83,49.74L776.84,48.42L766.70,46.88L764.59,47.74Z M605.46,46.60L605.88,44.69L599.66,45.83L591.84,46.44L584.51,49.10L580.83,49.71L581.49,50.64L579.18,53.10L585.67,54.74L589.00,50.94L594.21,48.86L605.46,46.60Z M529.41,65.32L529.40,66.09L526.27,66.78L525.80,67.54L525.45,67.62L525.31,67.66L524.91,69.66L527.08,74.27L529.61,76.83L529.46,79.90L531.33,84.16L534.39,85.69L534.33,88.51L527.51,94.27L528.46,94.16L530.91,95.39L528.71,97.47L528.62,97.70L527.53,100.16L528.30,103.24L527.94,104.06L527.95,104.14L528.25,104.15L529.33,105.33L529.15,105.96L530.75,108.59L530.71,108.75L531.11,109.04L534.42,110.28L538.20,110.66L538.31,111.83L541.58,116.66L542.59,119.04L542.32,122.33L542.35,122.42L542.40,122.42L547.47,121.58L549.43,125.35L553.82,128.45L554.97,128.23L560.48,129.92L560.97,129.46L566.49,132.23L565.49,133.08L566.69,135.65L563.85,137.15L562.61,139.75L563.31,139.46L561.82,141.71L563.95,143.26L559.25,146.44L569.25,152.49L569.57,152.68L571.38,152.27L574.18,153.39L586.27,156.02L588.54,158.05L588.60,158.10L588.92,158.17L593.07,160.51L594.68,158.26L594.37,158.05L590.79,154.04L587.91,149.14L593.53,142.56L593.46,142.40L589.53,137.60L586.82,137.31L584.64,134.58L585.70,128.25L589.07,130.07L588.72,127.74L594.52,123.97L597.30,123.76L607.61,127.63L610.73,125.97L614.35,125.97L616.94,127.40L622.70,126.67L621.06,124.50L619.62,119.44L622.05,118.98L619.55,118.20L619.01,115.89L625.66,115.15L635.03,113.01L636.03,112.04L639.86,111.55L643.58,112.75L644.77,115.24L651.12,116.08L651.98,117.75L654.29,117.69L659.59,114.46L659.34,115.98L663.64,118.27L673.03,126.86L680.84,126.55L688.43,130.80L691.28,131.37L692.24,130.41L694.79,132.59L694.95,132.81L695.22,132.84L695.36,132.79L695.42,132.68L696.04,132.53L696.18,132.54L696.19,132.54L698.99,131.46L701.05,129.28L708.08,127.38L713.36,129.56L721.71,129.87L722.71,129.37L720.44,126.02L721.73,122.41L731.61,125.11L733.18,127.62L738.98,129.05L745.18,128.50L752.43,131.98L757.25,132.35L761.66,131.63L765.64,128.93L773.17,130.07L773.41,130.25L774.12,130.55L777.21,131.32L779.92,129.41L779.00,128.24L779.09,124.13L779.99,122.85L777.60,118.76L781.27,117.70L790.99,119.20L796.35,123.51L803.95,130.95L810.18,132.41L816.53,137.66L822.46,136.24L826.78,141.83L826.72,146.88L823.00,147.15L825.69,154.32L824.97,155.70L824.86,155.81L825.05,156.03L825.59,156.55L825.72,156.64L825.80,156.55L831.98,155.24L836.00,152.30L838.98,142.70L839.27,133.12L836.18,127.76L834.92,124.06L835.38,123.03L831.40,119.21L832.11,118.35L825.31,115.02L823.86,117.41L817.04,114.06L812.52,113.48L815.05,109.31L815.88,106.00L818.30,103.19L818.10,101.20L821.16,98.07L827.04,97.93L828.59,98.64L833.90,97.93L835.94,98.36L836.40,96.77L839.61,97.46L843.24,99.70L848.26,98.55L847.99,96.56L849.44,90.59L854.21,89.83L857.00,90.07L857.64,91.73L860.39,93.94L863.85,90.22L862.21,87.78L864.02,87.32L867.66,92.69L864.19,98.87L864.52,99.93L860.47,103.41L861.41,106.90L864.09,111.41L878.95,126.30L880.05,121.72L879.23,120.62L879.27,115.93L880.80,113.93L882.92,113.41L879.78,110.91L879.65,108.35L871.23,96.98L871.34,95.88L877.09,95.44L878.03,96.51L881.38,94.09L884.80,94.59L888.19,96.13L887.87,94.32L890.56,90.46L895.12,88.44L895.60,87.44L901.63,88.41L895.88,84.43L894.38,79.82L879.68,67.74L866.25,64.96L853.26,64.35L854.26,65.79L858.34,67.55L858.06,68.22L851.21,66.87L848.53,65.49L837.73,65.53L835.01,66.54L829.11,65.06L826.75,62.86L821.17,61.57L816.05,61.40L806.92,61.73L804.21,60.57L794.84,57.81L792.55,57.72L790.03,58.90L784.47,56.84L774.07,57.36L776.61,60.36L767.75,59.87L765.10,60.56L760.18,58.94L759.85,62.44L755.88,61.33L749.92,58.47L747.07,55.04L737.27,53.74L735.32,55.90L724.25,55.09L723.37,54.09L718.76,53.85L712.51,54.34L711.57,53.75L703.14,53.49L703.93,54.49L700.37,55.30L697.58,54.84L700.11,53.79L708.07,49.24L699.48,45.37L690.25,44.71L686.07,43.45L680.07,42.80L676.77,43.97L677.29,45.79L675.81,47.18L672.88,46.59L667.65,47.47L667.20,46.95L655.78,48.40L651.20,49.70L649.13,52.01L651.28,53.22L638.43,54.16L643.42,57.77L647.86,59.23L651.11,63.03L649.28,63.81L648.80,61.99L646.84,61.69L647.91,59.70L635.78,57.57L631.76,58.71L632.20,59.92L639.57,61.68L631.43,60.89L629.22,58.85L628.80,64.14L631.69,67.25L635.38,66.98L639.79,67.98L641.66,69.94L640.50,71.41L636.87,67.75L632.82,68.44L634.82,71.45L633.70,73.82L628.31,75.76L629.94,72.00L625.24,62.21L622.25,60.33L622.42,56.70L614.72,55.85L613.16,60.06L611.34,62.22L618.91,67.94L618.86,69.77L614.84,68.07L605.20,65.65L599.51,65.12L598.04,65.71L600.44,67.73L596.82,69.38L595.70,67.68L592.68,68.78L587.06,69.59L585.09,67.79L581.38,68.50L575.62,70.53L570.99,74.02L569.17,74.34L564.37,72.34L568.03,70.82L565.66,69.27L559.68,68.88L561.90,69.96L563.73,76.88L562.12,75.91L556.43,76.84L555.36,80.03L546.31,80.22L550.55,83.34L549.78,83.51L542.27,80.66L540.82,78.79L541.11,77.05L538.14,75.91L536.39,74.09L542.76,75.67L550.56,76.69L556.15,74.07L554.72,71.61L540.09,66.85L531.89,64.81L529.84,65.36L529.41,65.32Z M674.35,38.52L671.80,38.22L670.68,40.91L673.36,41.43L681.52,40.49L680.31,39.65L674.35,38.52Z M661.00,36.22L655.56,36.38L653.43,37.55L659.82,39.15L666.91,39.65L667.00,37.18L661.00,36.22Z M656.13,33.97L649.24,34.18L648.14,35.95L653.46,36.60L659.74,36.02L656.13,33.97Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M551.58,311.96L551.12,312.13L548.92,313.10L548.82,313.11L548.70,313.19L547.43,315.99L546.58,316.89L546.78,317.73L547.06,317.86L547.11,317.67L549.17,318.13L550.39,316.76L551.74,316.71L551.82,316.72L551.94,316.71L552.75,316.24L552.63,313.73L551.60,312.02L551.70,311.96L551.58,311.96Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M431.71,209.72L431.72,209.12L431.32,209.12L431.47,210.94L428.28,212.02L425.00,211.44L422.55,214.70L420.08,219.50L415.97,223.16L413.36,230.60L406.20,231.53L406.18,231.68L405.85,233.55L406.00,233.73L406.31,231.86L421.40,224.18L421.62,216.01L423.76,215.09L431.61,215.09L431.68,211.05L431.69,210.45L431.71,209.72Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M572.41,193.05L572.02,193.47L566.70,195.82L569.58,198.89L564.95,203.01L561.01,203.02L560.75,205.29L560.69,207.41L562.08,207.76L568.74,217.62L570.20,221.22L578.27,235.57L581.57,238.45L584.47,244.21L587.94,249.35L587.99,249.63L588.97,246.09L598.49,246.55L602.17,246.25L606.46,241.71L614.55,240.34L615.26,240.23L615.67,240.06L622.73,237.18L624.66,233.38L625.37,229.44L624.01,227.33L623.74,226.92L623.57,227.21L615.74,226.10L612.43,221.98L612.28,221.23L612.18,221.23L611.49,221.04L611.62,220.55L611.49,220.24L611.26,220.08L610.00,219.82L609.80,219.43L609.54,219.14L606.57,212.09L603.03,209.22L601.49,206.27L601.28,205.93L599.00,205.97L598.70,205.63L595.97,204.02L595.39,203.94L594.88,204.06L583.97,198.91L580.57,196.30L573.08,193.17L572.41,193.05Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M532.89,229.46L532.97,231.25L533.20,236.62L530.92,236.64L530.22,237.98L530.24,238.43L530.30,240.03L530.68,251.96L527.57,253.97L525.94,256.16L525.58,260.53L524.44,262.19L527.81,268.76L527.71,269.15L527.94,269.59L530.20,273.07L530.16,274.79L531.51,277.11L531.81,277.20L531.81,277.20L531.85,277.10L533.71,274.13L536.77,270.93L539.48,274.28L543.76,274.84L551.17,272.51L553.49,273.15L556.81,267.98L558.98,266.74L562.28,274.36L562.28,274.36L562.28,274.36L562.28,274.17L563.66,269.29L564.73,269.00L569.00,258.17L569.20,257.21L569.06,256.18L570.18,247.31L571.56,246.99L574.90,243.78L574.78,243.54L570.89,239.88L570.17,234.63L568.85,230.28L568.76,229.46L552.36,229.46L549.03,229.46L534.05,229.46L532.89,229.46Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M531.81,277.20L531.81,277.20L531.96,277.25L535.06,281.17L538.74,284.46L541.80,289.63L542.02,289.91L542.13,290.16L546.78,292.13L549.65,292.70L552.60,295.54L552.67,295.69L552.76,295.50L556.07,295.27L559.31,294.30L561.61,293.92L562.32,293.08L562.93,292.37L563.55,291.65L565.68,289.19L566.24,288.54L566.19,288.48L559.35,280.21L559.13,279.76L562.28,274.51L562.28,274.36L562.28,274.36L562.28,274.36L558.98,266.74L556.81,267.98L553.49,273.15L551.17,272.51L543.76,274.84L539.48,274.28L536.77,270.93L533.71,274.13L531.85,277.10L531.81,277.20Z " data-iso="SDS" data-name="S. Sudan" data-pop="8260490.0"/><path d="M419.97,255.20L416.66,250.75L413.27,248.62L408.07,249.06L407.11,251.54L407.00,251.92L405.09,255.83L406.80,259.24L406.87,259.60L414.26,259.79L415.17,260.51L409.14,260.54L406.22,261.48L406.24,261.78L406.25,263.19L406.24,263.85L406.34,264.01L409.02,263.72L411.00,262.85L414.47,262.87L415.49,262.87L416.48,262.91L419.14,263.94L422.44,263.79L422.65,263.84L422.67,263.57L422.67,261.91L420.31,255.81L420.03,255.23L419.97,255.20Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M416.74,276.05L419.54,281.94L421.99,283.35L422.11,283.49L425.82,278.47L425.91,277.96L425.92,277.85L425.68,277.81L424.48,274.63L420.96,272.46L419.37,272.80L416.68,275.83L416.74,276.05Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M184.36,256.60L182.14,258.47L181.94,259.07L182.30,259.26L185.54,260.69L187.60,261.12L188.72,260.33L188.80,260.28L189.00,258.52L187.97,258.17L184.50,256.65L184.42,256.64L184.36,256.60Z " data-iso="SLV" data-name="El Salvador" data-pop="7185218.0"/><path d="M607.59,267.95L595.55,270.87L593.84,270.90L590.82,267.62L590.20,267.07L589.95,267.55L589.63,268.17L589.27,268.86L589.23,269.00L590.34,273.26L591.20,274.65L604.13,279.59L605.18,279.59L605.61,278.79L607.96,274.40L607.89,272.53L607.69,267.94L607.59,267.95Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M586.02,313.79L591.70,305.93L594.36,303.19L599.63,299.32L602.15,296.42L607.48,288.53L613.23,275.62L613.87,271.53L613.26,265.34L608.07,267.89L607.69,267.94L607.89,272.53L607.96,274.40L605.61,278.79L605.18,279.59L604.45,280.44L596.00,290.66L590.51,291.57L586.81,293.76L586.72,293.95L586.34,294.58L583.97,298.00L584.01,311.26L585.71,314.21L586.02,313.79Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M509.85,143.82L509.85,143.90L510.27,145.69L511.05,146.12L510.38,147.43L510.42,147.56L510.52,147.55L510.88,148.92L511.46,152.09L511.30,152.27L511.30,152.32L512.74,153.58L513.06,153.77L514.72,154.68L514.72,154.77L515.06,154.67L515.40,153.46L516.65,153.84L518.24,156.71L518.31,156.83L518.47,156.85L518.80,156.76L520.42,156.57L520.49,156.60L520.71,156.54L520.68,154.72L521.34,154.57L520.81,149.85L520.91,149.78L520.86,149.75L518.08,148.22L516.25,146.07L513.68,143.40L513.50,143.20L513.40,143.14L511.33,143.27L510.50,143.62L509.91,143.82L509.85,143.82Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M290.88,288.51L288.60,286.77L282.02,286.75L281.32,288.41L281.29,288.34L279.00,290.94L279.87,296.12L280.79,296.10L283.14,301.10L283.26,301.22L283.35,301.25L285.10,299.26L286.67,299.44L288.89,299.84L289.03,299.85L289.07,299.81L289.69,290.25L290.64,289.02L290.88,288.51Z " data-iso="SUR" data-name="Suriname" data-pop="481267.0"/><path d="M518.65,132.82L516.27,131.68L512.81,131.77L508.91,131.38L508.62,131.33L508.55,131.34L506.72,132.88L506.07,133.35L503.83,134.23L503.77,134.50L503.76,134.53L503.56,135.04L503.58,135.23L504.28,136.44L504.45,136.56L504.53,136.54L508.83,137.32L513.84,134.67L517.90,135.21L517.95,135.17L517.93,134.60L518.38,133.99L518.49,133.54L518.80,132.99L518.83,132.85L518.65,132.82Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M503.07,141.75L502.55,141.05L502.37,140.57L501.85,140.55L501.70,140.62L498.46,141.54L497.70,142.18L495.45,141.77L495.33,141.75L495.29,141.96L494.54,142.46L495.17,143.65L495.57,145.03L495.36,145.21L495.19,145.28L500.80,144.16L500.74,142.87L502.85,141.74L503.10,141.83L503.07,141.75Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M505.89,67.58L505.58,67.59L497.30,71.05L496.72,73.33L492.53,76.50L491.37,81.56L487.10,85.42L487.86,90.45L489.77,91.63L489.08,95.67L486.54,99.17L486.29,99.00L489.66,106.20L491.04,107.50L491.34,110.96L494.98,110.81L494.68,109.60L498.92,108.66L500.07,103.20L498.52,97.82L505.40,96.89L500.91,93.74L500.70,87.92L508.94,82.62L509.07,80.41L511.47,77.39L515.18,77.58L515.81,77.51L514.36,75.72L514.90,74.39L512.66,70.33L506.55,67.75L505.89,67.58Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M552.93,401.12L550.68,405.68L552.70,405.93L553.19,404.20L553.28,404.25L553.34,403.10L553.21,402.24L553.28,402.00L553.07,401.13L553.01,401.08L552.93,401.12Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M265.70,243.57L265.80,243.65L265.99,243.73L266.04,243.64L266.05,243.55L265.71,243.55L265.70,243.57Z " data-iso="SXM" data-name="Sint Maarten" data-pop="37429.0"/><path d="M579.41,174.73L571.15,176.69L567.69,175.90L565.62,176.83L563.23,176.35L561.46,179.44L561.33,179.68L561.22,180.67L561.68,181.21L561.89,183.25L562.20,184.05L563.11,183.88L563.62,186.83L562.45,188.23L562.33,188.35L562.30,188.57L562.55,189.42L562.46,189.59L562.37,190.69L562.35,190.86L562.67,190.93L564.51,192.20L565.52,192.36L570.14,189.06L570.84,188.57L571.61,188.06L577.15,181.69L577.17,177.29L579.61,175.21L579.61,175.16L579.41,174.73Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M528.76,237.58L512.50,228.24L505.60,224.26L503.72,225.28L502.63,225.87L503.02,227.94L505.21,236.97L504.67,247.71L501.38,251.86L498.84,257.65L499.17,259.18L499.67,259.95L500.20,260.78L500.61,261.42L501.16,261.43L503.04,263.49L505.64,272.41L501.30,272.51L500.59,273.91L505.36,281.00L505.20,281.29L505.53,281.32L509.54,280.89L511.86,279.64L515.84,276.23L521.40,274.56L524.19,270.51L527.58,269.12L527.71,269.15L527.81,268.76L524.44,262.19L525.58,260.53L525.94,256.16L527.57,253.97L530.68,251.96L530.30,240.03L530.24,238.43L528.76,237.58Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M459.52,268.92L459.23,269.02L459.03,268.89L458.04,268.61L457.34,268.45L457.53,268.66L459.16,274.59L459.38,284.08L461.21,286.41L461.59,286.20L462.55,285.95L461.69,273.98L459.89,271.05L460.23,269.27L460.31,268.88L459.52,268.92Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M760.37,273.02L761.21,278.67L764.59,282.78L765.11,284.05L765.94,285.15L768.94,286.14L768.72,287.55L772.08,285.86L771.11,285.03L764.97,277.18L762.91,275.20L762.08,271.29L764.00,264.01L763.63,260.83L766.53,260.16L773.14,266.34L773.20,266.33L770.64,259.77L774.02,256.63L779.02,256.92L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.18,235.26L754.12,239.26L753.29,242.03L758.35,249.87L758.38,253.10L757.33,253.82L760.36,258.32L763.00,266.07L760.70,271.75L760.37,273.02Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M658.98,165.45L658.34,165.32L658.46,165.44L658.98,165.45Z M652.75,174.94L652.79,175.05L660.29,170.46L662.21,171.36L663.88,176.11L668.98,173.86L673.19,174.69L673.24,174.72L673.30,174.66L672.06,170.53L668.91,169.80L667.73,166.98L667.67,166.79L667.50,166.76L663.89,167.66L661.48,166.32L655.24,166.52L654.89,164.94L659.37,164.04L659.35,163.98L659.18,163.99L657.66,161.58L649.92,167.53L652.38,169.58L652.80,174.67L652.75,174.94Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M615.97,160.12L615.85,160.11L614.62,160.30L610.28,156.63L605.80,158.49L606.30,159.38L609.40,157.39L612.41,160.83L610.47,162.52L608.01,161.66L608.37,165.20L611.71,168.88L612.67,174.07L612.76,174.32L619.14,171.29L622.10,171.65L628.32,173.96L631.75,176.85L633.99,176.83L635.00,180.36L635.10,180.50L635.33,180.46L638.31,182.04L640.42,181.12L640.35,179.69L644.00,177.91L644.26,175.34L648.91,174.32L649.05,174.30L648.93,173.91L648.91,172.22L645.75,171.12L635.28,164.70L631.34,160.37L627.55,159.84L626.75,157.87L622.30,156.59L618.96,160.33L616.73,160.16L615.97,160.12Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M839.33,341.21L838.80,341.52L839.53,341.82L839.97,341.42L840.11,340.98L839.33,341.21Z M841.66,340.09L842.30,340.73L842.12,340.97L841.92,342.13L842.39,341.74L848.51,338.81L848.14,337.85L843.18,338.78L842.00,339.79L841.66,340.09Z " data-iso="TLS" data-name="East Timor" data-pop="1131612.0"/><path d="M270.15,271.96L270.07,269.46L268.34,269.94L267.39,272.19L270.15,271.96Z " data-iso="TTO" data-name="Trinidad and Tobago" data-pop="1310000.0"/><path d="M482.28,175.78L481.43,179.85L481.69,182.42L479.43,186.92L485.45,199.02L485.65,199.87L486.00,199.68L487.66,197.87L487.29,195.43L491.28,192.01L491.19,189.25L490.88,189.10L488.06,187.53L487.25,185.07L489.82,181.86L489.64,176.00L487.36,176.03L485.99,174.64L482.99,175.56L482.28,175.78Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M561.46,179.44L563.23,176.35L565.62,176.83L567.69,175.90L571.15,176.69L579.41,174.73L579.61,175.16L579.88,175.09L580.58,174.26L583.81,174.75L586.41,174.96L586.52,175.04L586.52,174.99L583.27,166.99L585.23,166.07L585.33,166.08L585.22,165.95L585.16,165.89L585.04,165.73L583.61,164.68L582.63,164.75L580.67,161.04L580.61,160.88L580.60,160.82L575.85,159.73L574.92,159.42L574.70,159.76L570.38,161.33L567.66,161.20L559.89,159.75L556.72,157.61L549.44,158.40L544.84,160.96L539.89,160.90L542.24,162.20L539.99,163.44L533.53,163.40L532.06,166.73L534.07,166.39L533.09,169.96L536.87,174.97L542.40,178.21L548.00,176.26L552.44,179.01L554.99,178.48L556.58,176.97L559.10,176.86L561.61,179.14L561.46,179.44Z M531.90,158.72L532.16,158.79L532.09,160.42L532.24,161.28L531.44,162.24L531.54,162.39L533.61,162.59L537.72,161.01L536.56,158.23L536.59,157.82L535.08,157.90L531.89,158.62L531.90,158.72Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M822.04,227.22L821.11,217.77L820.08,218.55L818.79,225.32L819.82,227.19L822.04,227.22Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M551.70,311.96L551.60,312.02L552.63,313.73L552.75,316.24L551.94,316.71L551.82,316.72L551.76,316.81L551.39,320.97L551.15,321.65L549.18,324.06L548.21,324.04L548.21,324.21L548.00,325.94L550.26,332.85L552.07,337.09L552.16,337.41L552.23,337.67L555.16,339.95L555.38,339.95L558.56,341.66L558.73,341.75L558.78,341.72L562.03,342.07L563.02,343.00L564.75,349.39L564.77,349.51L565.45,349.50L571.68,349.90L575.62,348.92L581.79,345.53L581.76,345.45L578.45,338.31L579.32,333.23L577.30,330.76L578.41,325.21L578.47,324.91L573.74,320.71L562.41,311.73L562.18,311.73L561.84,311.73L553.61,311.73L553.06,311.73L551.73,311.95L551.70,311.96Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M562.17,311.12L562.30,307.53L565.44,302.29L565.18,299.52L562.81,294.27L562.32,293.08L561.61,293.92L559.31,294.30L556.07,295.27L552.76,295.50L552.67,295.69L552.84,295.79L552.36,299.39L553.74,300.05L553.03,302.14L549.90,305.75L548.83,313.00L548.82,313.11L548.92,313.10L551.12,312.13L551.58,311.96L551.70,311.96L551.73,311.95L553.06,311.73L553.61,311.73L561.84,311.73L562.18,311.73L562.17,311.12Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M542.35,122.42L541.84,122.39L538.38,124.55L530.17,123.61L520.82,124.39L520.80,124.41L520.97,124.65L521.52,128.34L519.68,132.89L518.94,132.84L518.83,132.85L518.80,132.99L518.49,133.54L518.38,133.99L517.93,134.60L517.95,135.17L518.21,135.14L518.60,135.69L519.08,135.87L520.09,136.72L520.15,136.77L520.24,136.71L523.72,136.91L525.75,137.57L530.14,135.72L530.26,135.68L530.30,135.56L533.47,135.13L537.24,136.71L539.94,140.84L535.93,145.39L535.80,145.51L536.13,145.87L536.52,146.07L538.11,145.97L540.02,146.18L540.04,145.89L542.47,141.64L549.28,142.96L547.73,145.67L555.19,147.79L558.69,146.87L558.20,145.49L554.56,144.63L554.75,142.03L562.52,139.79L562.61,139.75L563.85,137.15L566.69,135.65L565.49,133.08L566.49,132.23L560.97,129.46L560.48,129.92L554.97,128.23L553.82,128.45L549.43,125.35L547.47,121.58L542.40,122.42L542.35,122.42Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M287.45,416.29L287.37,416.43L286.89,417.74L286.86,420.71L286.97,424.50L287.13,424.84L287.23,429.68L289.24,431.71L298.02,433.34L301.68,429.20L301.81,429.07L300.79,424.61L299.76,423.01L290.07,416.29L287.66,416.55L287.45,416.29Z " data-iso="URY" data-name="Uruguay" data-pop="3494382.0"/><path d="M123.46,133.61L121.67,138.77L121.94,136.10L117.03,135.59L115.56,142.06L114.93,142.60L108.12,154.12L106.92,157.27L103.72,168.73L106.11,175.77L105.28,177.95L107.22,182.45L106.88,184.62L114.23,188.84L114.33,191.56L114.32,191.58L121.23,190.97L122.24,192.20L130.86,195.93L139.18,195.91L139.54,194.70L144.81,194.33L148.15,198.59L151.58,204.28L154.17,201.58L157.81,201.62L162.02,213.64L167.27,215.21L167.34,214.97L167.88,208.47L170.17,206.73L175.66,204.00L176.57,201.76L177.91,202.32L184.62,202.28L186.51,201.60L188.05,203.59L191.59,202.64L192.36,200.94L190.56,200.19L198.25,198.67L198.42,199.64L202.55,198.91L205.37,201.42L210.24,200.96L212.33,204.10L211.26,208.44L213.21,214.55L214.81,217.35L216.61,217.84L218.28,214.60L218.62,210.74L217.55,202.64L217.37,197.55L221.65,191.98L232.68,184.15L235.44,182.76L237.21,180.24L235.79,179.34L238.22,178.73L238.94,170.20L240.08,172.07L244.92,167.17L247.30,163.66L247.19,162.38L251.33,160.32L259.98,158.74L257.42,156.53L258.76,154.37L266.40,149.55L271.16,147.70L271.06,146.61L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.46,133.61Z M110.86,108.09L109.96,109.90L111.35,113.24L112.30,111.88L110.86,108.09Z M64.85,103.16L60.76,103.77L58.58,106.15L64.06,104.74L64.85,103.16Z M36.47,84.32L35.28,85.29L39.17,86.17L42.11,85.36L36.47,84.32Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.56,112.38L117.79,111.19L117.89,110.82L118.74,109.77L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L128.73,65.69L125.16,64.32L116.41,64.16L101.37,61.54L99.09,62.00L98.35,60.67L93.61,62.10L87.58,62.90L82.39,64.08L74.68,67.17L67.41,68.04L66.40,70.59L67.55,73.49L71.60,73.74L73.15,75.60L69.98,74.06L69.75,76.03L67.80,76.77L65.50,75.12L62.95,75.18L51.66,77.97L54.76,81.71L59.48,81.84L66.13,80.33L63.29,83.75L53.29,85.52L49.96,86.99L42.63,91.14L43.87,93.12L42.36,95.03L42.70,96.65L46.28,98.93L44.48,100.56L47.39,99.70L50.90,99.97L51.02,101.24L53.50,99.78L55.12,100.92L46.52,106.40L39.78,109.89L38.66,109.33L33.97,110.58L33.79,111.91L36.39,110.47L41.28,109.78L52.71,105.84L55.17,104.40L66.13,100.09L65.43,98.89L76.74,93.06L80.70,91.80L82.61,92.89L73.14,96.73L73.85,98.49L83.72,95.15L85.08,93.25L87.62,92.06L95.02,95.84L96.55,95.70L109.25,101.42L108.70,99.67L110.99,99.13L110.02,101.28L111.96,101.45L113.05,99.80L114.77,101.21L114.60,103.80L113.15,105.32L115.77,108.53L114.90,113.28L114.95,113.35Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M660.36,165.21L659.49,164.51L659.82,164.91L660.36,165.21Z M615.97,160.12L616.73,160.16L618.96,160.33L622.30,156.59L626.75,157.87L627.55,159.84L631.34,160.37L635.28,164.70L645.75,171.12L648.91,172.22L648.93,173.91L649.05,174.30L649.91,174.22L650.63,174.35L651.77,174.63L652.71,174.84L652.75,174.94L652.80,174.67L652.38,169.58L649.92,167.53L657.66,161.58L659.18,163.99L659.35,163.98L659.42,163.92L664.98,161.88L659.49,160.72L657.37,157.98L657.54,156.76L657.47,156.83L657.27,156.97L652.97,159.96L651.40,162.49L646.47,160.63L645.16,157.73L643.77,157.69L643.23,154.61L639.16,151.63L638.01,152.21L631.19,152.42L627.87,149.39L613.16,147.11L615.80,159.30L615.97,160.12Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M238.88,265.78L236.69,266.71L233.81,270.68L234.85,278.56L234.55,281.53L241.70,283.38L243.66,286.29L249.77,286.64L248.35,291.49L249.79,296.29L249.09,298.55L251.11,303.55L251.17,303.79L251.96,304.61L255.49,305.68L261.95,300.22L260.00,298.96L259.95,293.96L263.68,295.32L267.74,292.84L270.41,289.62L270.32,289.58L269.69,288.74L270.56,283.98L271.82,282.83L270.65,281.24L273.42,278.69L272.95,277.62L272.50,277.38L269.18,277.44L270.69,274.72L266.59,273.07L264.38,270.54L260.46,270.80L258.35,272.08L254.62,270.74L248.33,270.67L247.68,268.28L243.97,267.14L242.99,264.65L242.70,266.96L237.94,269.65L239.05,274.77L237.61,275.84L236.36,274.03L237.14,266.62L238.78,265.95L238.88,265.78Z " data-iso="VEN" data-name="Venezuela" data-pop="26814843.0"/><path d="M765.33,228.09L765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L786.11,255.80L786.67,264.35L782.48,266.42L778.21,270.97L778.51,271.22L779.85,273.09L779.88,276.72L783.86,274.59L783.52,271.64L785.04,272.94L791.90,267.66L792.62,261.86L791.87,258.64L789.70,253.19L786.08,249.52L778.04,240.33L780.38,233.99L780.00,233.18L783.41,231.25L783.55,231.21L779.46,229.45L779.07,226.65L772.96,225.50L770.61,227.51L765.45,227.96L765.33,228.09Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M561.58,192.06L560.51,194.67L561.67,195.36L561.79,195.37L561.81,195.07L562.01,194.34L561.86,193.55L561.89,192.64L561.77,192.08L561.58,192.06Z " data-iso="WEB" data-name="West Bank" data-pop="2514845.0"/><path d="M615.26,240.23L614.55,240.34L606.46,241.71L602.17,246.25L598.49,246.55L588.97,246.09L587.99,249.63L588.18,250.85L587.78,253.71L588.68,254.77L592.36,263.11L598.08,260.29L601.29,259.75L606.37,257.95L607.45,256.49L616.86,252.20L617.77,249.28L619.27,248.64L618.24,246.42L618.01,246.31L615.42,240.58L615.26,240.23Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M546.08,387.55L545.37,387.62L542.51,389.35L538.96,392.53L538.08,394.91L535.11,396.87L534.06,399.81L530.29,400.31L526.45,398.80L523.20,403.52L519.06,403.32L518.49,397.74L517.57,396.94L517.43,396.83L517.37,398.34L516.85,410.04L514.34,411.80L509.30,410.93L508.23,408.53L506.34,410.64L506.43,410.73L509.61,419.28L511.05,421.88L509.86,426.26L512.38,431.30L515.75,432.81L520.99,431.33L534.67,429.13L545.73,420.37L550.30,413.38L554.18,409.14L555.41,405.11L555.59,404.28L555.26,404.29L553.99,404.33L553.54,404.23L553.28,404.25L553.19,404.20L552.70,405.93L550.68,405.68L552.93,401.12L553.01,401.08L552.97,400.82L553.43,396.34L551.84,388.49L551.84,388.30L551.57,388.10L546.99,387.38L546.12,387.55L546.08,387.55Z M542.01,410.64L544.35,412.34L542.42,415.98L540.16,417.92L537.90,415.40L538.50,413.66L542.01,410.64Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M558.56,341.66L555.38,339.95L555.16,339.95L552.23,337.67L552.16,337.41L551.62,337.51L544.85,341.28L545.51,343.27L544.74,349.94L546.61,352.27L548.87,351.58L548.74,355.92L542.27,351.98L540.85,349.52L539.49,350.94L532.20,348.77L531.22,347.01L531.11,346.99L531.17,347.46L530.56,354.60L524.85,354.60L524.58,365.18L528.07,370.62L528.66,371.22L529.32,371.07L532.79,370.78L533.86,371.20L534.35,371.77L534.93,371.95L539.69,372.36L541.66,369.86L549.84,364.06L550.29,364.06L550.26,363.57L551.99,360.88L553.92,360.24L558.41,358.48L559.08,358.23L558.93,357.97L557.79,356.57L559.39,353.01L559.74,346.92L560.27,346.67L558.74,341.85L558.73,341.75L558.56,341.66Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M552.28,387.93L557.05,380.46L557.89,369.82L556.98,367.45L550.27,364.63L550.29,364.06L549.84,364.06L541.66,369.86L539.69,372.36L534.93,371.95L534.35,371.77L534.28,371.94L536.63,377.42L540.09,381.40L542.01,385.09L545.17,386.18L545.94,387.42L546.08,387.55L546.12,387.55L546.99,387.38L551.57,388.10L551.84,388.30L552.28,387.93Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/><path d="M793.38,236.65L788.34,237.46L787.64,241.88L788.74,242.48L792.70,241.29L793.38,236.65Z M773.41,130.25L773.41,130.73L775.15,137.67L779.73,136.62L787.86,141.22L784.88,140.91L781.31,141.52L778.38,145.48L775.31,145.81L773.73,147.99L770.70,147.39L770.13,150.86L767.87,154.96L765.65,156.09L758.36,156.68L754.98,158.52L737.42,155.69L730.76,154.91L722.78,149.71L719.90,148.35L713.74,146.97L708.90,145.25L709.06,143.21L707.08,140.06L697.47,134.65L696.27,132.70L696.18,132.54L696.04,132.53L695.42,132.68L695.36,132.79L695.22,132.84L694.95,132.81L694.67,132.74L691.51,135.87L692.84,139.18L685.83,140.19L685.68,144.73L686.69,146.66L684.24,145.87L680.10,147.07L683.92,153.19L683.68,156.97L683.63,157.04L683.75,157.25L676.57,161.21L674.48,163.57L670.22,163.07L667.90,166.75L667.67,166.79L667.73,166.98L668.91,169.80L672.06,170.53L673.30,174.66L673.24,174.72L673.10,174.75L672.28,174.70L671.81,174.99L672.36,175.44L672.41,175.47L672.57,175.42L676.65,176.98L678.38,179.81L679.87,180.29L680.00,180.35L680.36,180.52L681.66,180.90L682.13,181.02L682.93,181.00L683.13,180.94L683.14,180.96L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.28,185.83L687.46,185.74L690.08,183.81L690.33,181.16L694.21,181.82L696.47,180.26L700.12,181.44L706.68,179.76L706.94,178.72L713.29,177.63L716.76,178.88L717.18,181.47L718.63,183.28L719.27,186.64L721.00,188.11L724.66,188.77L730.41,191.10L733.38,191.78L734.58,191.08L739.71,194.52L741.01,194.39L743.88,191.54L746.58,193.56L750.07,200.49L748.70,207.13L748.68,207.13L748.80,207.22L751.06,209.42L752.09,212.98L750.05,220.50L750.77,222.67L754.35,223.21L759.14,230.31L762.90,230.95L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.45,227.96L770.61,227.51L772.96,225.50L779.07,226.65L779.46,229.45L783.55,231.21L783.82,231.15L788.33,230.62L790.88,235.68L790.66,233.54L795.30,229.99L797.29,230.25L799.66,228.75L799.67,228.74L799.67,228.67L799.69,228.58L799.78,228.56L799.86,228.64L798.69,226.17L799.00,226.07L800.79,227.54L801.06,227.61L801.27,227.47L801.34,227.42L801.79,227.50L801.97,227.32L805.02,226.87L809.96,223.29L813.30,220.03L813.63,218.21L815.44,217.35L813.91,215.17L814.12,212.25L816.13,210.92L816.69,208.11L818.64,206.83L818.36,201.16L816.05,199.88L816.58,197.39L811.93,193.56L815.48,194.16L811.53,191.12L811.16,189.85L806.74,184.71L803.91,183.27L806.89,176.99L810.82,175.74L810.60,174.11L803.51,173.32L802.58,175.00L800.01,174.37L798.98,171.82L796.13,171.32L794.13,167.92L797.84,166.94L797.81,165.71L801.14,161.62L804.86,163.55L803.73,167.02L804.98,167.61L811.54,164.79L811.59,164.81L816.97,159.29L820.11,159.89L818.93,158.07L821.66,156.93L822.34,154.95L824.72,155.69L824.86,155.81L824.97,155.70L825.69,154.32L823.00,147.15L826.72,146.88L826.78,141.83L822.46,136.24L816.53,137.66L810.18,132.41L803.95,130.95L796.35,123.51L790.99,119.20L781.27,117.70L777.60,118.76L779.99,122.85L779.09,124.13L779.00,128.24L779.92,129.41L777.21,131.32L774.12,130.55L773.41,130.25Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 1000 525" height="525px" pretty_print="False" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 1000 525" width="1000px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="525.010727376" padding="0.03" w="1000"><proj flip="auto" id="naturalearth" lon0="0"/><bbox h="463.56" w="884.64" x="95.31" y="-3.13"/></view></views></metadata><g class="" id="countries"><path d="M687.20,185.87L688.68,188.96L687.36,191.79L689.20,195.61L690.07,195.53L697.12,200.63L699.84,199.56L705.90,203.27L710.26,206.83L714.66,207.55L721.73,209.91L723.60,207.40L725.44,206.87L729.91,208.10L733.01,208.00L734.28,205.51L737.93,203.26L741.81,202.63L743.27,206.36L748.57,207.11L748.70,207.13L750.07,200.49L746.58,193.56L743.88,191.54L741.01,194.39L739.71,194.52L734.58,191.08L733.38,191.78L730.41,191.10L724.66,188.77L721.00,188.11L719.27,186.64L718.63,183.28L717.18,181.47L716.76,178.88L713.29,177.63L706.94,178.72L706.68,179.76L700.12,181.44L696.47,180.26L694.21,181.82L690.33,181.16L690.08,183.81L687.46,185.74L687.20,185.87Z " data-iso="TIB" data-name="Tibet" data-pop="3000000.0"/><path d="M673.19,174.69L668.98,173.86L663.88,176.11L662.21,171.36L660.29,170.46L652.79,175.05L652.75,174.94L652.71,174.84L651.77,174.63L650.63,174.35L649.91,174.22L649.05,174.30L648.91,174.32L644.26,175.34L644.00,177.91L640.35,179.69L640.42,181.12L638.31,182.04L635.33,180.46L635.10,180.50L635.20,180.74L634.87,185.17L633.83,185.97L636.20,194.72L638.92,195.72L638.00,200.23L637.37,201.20L638.56,201.59L647.26,202.88L653.15,201.28L653.07,197.80L654.76,196.02L660.96,193.73L661.41,189.57L662.92,188.58L662.88,186.49L665.15,181.07L664.06,179.36L672.13,175.61L672.41,175.47L672.36,175.44L671.81,174.99L672.28,174.70L673.10,174.75L673.24,174.72L673.19,174.69Z " data-iso="AFG" data-name="Afghanistan" data-pop="28400000.0"/><path d="M497.63,329.25L496.11,331.69L497.04,332.99L498.63,339.18L497.68,340.32L500.01,347.19L499.22,352.05L495.96,356.17L493.42,368.46L493.29,369.82L497.44,368.81L500.20,370.39L513.52,370.35L514.79,371.67L522.50,372.51L527.70,371.43L528.66,371.22L528.07,370.62L524.58,365.18L524.85,354.60L530.56,354.60L531.17,347.46L531.11,346.99L530.99,347.06L526.02,348.16L526.03,345.29L524.59,341.97L524.60,334.27L520.99,334.14L520.98,332.92L518.09,333.28L516.45,336.73L511.64,337.08L508.18,329.22L497.82,329.09L497.63,329.25Z M497.85,324.70L497.78,324.65L495.73,324.64L495.49,325.17L494.60,326.02L494.66,326.13L495.08,327.17L495.17,327.68L495.14,328.62L495.18,328.72L496.02,328.57L497.10,325.06L497.81,324.76L497.85,324.70Z " data-iso="AGO" data-name="Angola" data-pop="12799293.0"/><path d="M513.96,155.76L513.08,155.56L512.83,155.48L512.15,158.18L512.51,158.22L512.54,162.01L512.78,163.15L514.52,165.54L514.56,165.86L515.39,165.00L516.33,164.41L517.00,162.07L517.01,161.80L516.98,161.72L515.37,159.41L515.57,158.20L515.60,158.16L515.64,158.00L515.40,157.10L514.87,156.61L514.12,155.85L514.01,155.77L513.96,155.76Z " data-iso="ALB" data-name="Albania" data-pop="3639453.0"/><path d="M462.37,155.84L462.36,155.56L461.96,155.46L461.65,155.50L461.57,155.60L461.53,155.76L462.01,156.09L462.27,155.95L462.35,155.92L462.37,155.84Z " data-iso="AND" data-name="Andorra" data-pop="83888.0"/><path d="M625.07,214.89L620.77,221.26L614.05,222.37L612.37,221.05L612.28,221.23L612.43,221.98L615.74,226.10L623.57,227.21L623.74,226.92L623.71,226.39L624.12,222.47L624.73,219.14L626.46,218.74L626.40,218.60L626.14,216.62L625.91,216.33L625.57,216.35L625.43,216.19L625.08,214.85L625.07,214.89Z " data-iso="ARE" data-name="United Arab Emirates" data-pop="4798491.0"/><path d="M274.97,495.77L276.60,500.53L276.92,501.45L277.52,503.23L277.59,503.17L284.17,503.64L286.19,502.51L280.14,500.52L275.17,495.92L274.97,495.77Z M255.24,389.81L255.88,390.45L255.32,394.16L252.16,396.31L253.36,405.13L251.10,409.45L250.29,412.92L250.30,418.86L251.52,423.92L253.48,427.42L254.06,430.80L252.33,439.05L252.72,442.16L254.46,446.97L253.55,448.64L253.46,454.29L255.17,458.76L257.26,467.03L259.01,467.24L258.49,469.14L259.72,476.54L259.17,479.63L260.04,480.52L258.61,486.36L260.61,489.21L262.73,489.02L265.42,493.51L270.67,493.57L275.12,494.76L275.20,494.59L271.15,490.21L274.10,486.18L273.87,484.39L277.18,478.22L270.65,472.91L271.13,471.24L275.36,467.37L274.89,464.93L276.69,462.35L274.83,460.96L278.54,461.45L277.66,459.00L274.30,458.96L272.96,454.35L276.92,455.57L280.82,454.38L280.03,447.62L286.37,447.33L292.58,443.42L293.53,438.41L289.69,433.20L287.37,431.63L286.65,428.78L286.96,424.83L286.97,424.50L286.86,420.71L286.89,417.74L287.37,416.43L287.45,416.29L287.56,416.12L291.72,409.70L297.17,405.26L296.51,400.33L294.42,399.71L294.19,399.71L294.32,401.25L291.71,406.32L289.38,406.58L282.89,405.53L285.20,399.79L284.41,398.13L274.81,393.53L271.64,391.10L268.77,387.80L268.68,387.70L268.63,387.64L265.50,386.87L263.71,389.59L261.37,387.23L256.43,387.64L255.32,389.64L255.24,389.81Z " data-iso="ARG" data-name="Argentina" data-pop="40913584.0"/><path d="M584.92,160.23L584.86,160.28L582.78,160.51L580.75,160.85L580.61,160.88L580.67,161.04L582.63,164.75L583.61,164.68L585.04,165.73L585.16,165.89L585.44,165.83L587.24,166.63L588.15,166.45L589.32,168.56L589.47,168.83L589.63,168.87L590.03,168.71L590.53,168.73L590.47,168.41L589.31,166.27L587.57,164.98L585.01,160.39L584.92,160.23Z " data-iso="ARM" data-name="Armenia" data-pop="2967004.0"/><path d="M645.61,483.58L643.96,485.63L646.97,485.59L649.11,484.12L645.61,483.58Z " data-iso="ATF" data-name="Fr. S. and Antarctic Lands" data-pop="140.0"/><path d="M869.03,454.28L867.11,457.98L866.20,461.88L868.01,463.94L873.54,460.93L877.95,454.85L877.34,454.26L869.03,454.28Z M896.50,350.86L895.13,346.40L891.73,352.28L892.09,353.81L888.73,365.59L886.03,370.41L881.28,370.10L871.45,361.76L873.34,357.95L873.60,355.69L877.20,352.27L874.52,352.53L870.58,350.97L865.97,349.97L862.45,348.09L864.33,351.46L858.58,352.34L855.95,355.12L852.99,359.58L853.53,361.22L849.19,360.87L845.35,357.42L841.60,359.10L838.71,362.33L837.37,365.75L836.05,366.54L833.49,370.41L832.12,366.89L829.29,370.05L829.11,372.39L825.49,377.24L822.39,379.11L818.26,379.66L817.00,380.62L808.17,383.38L803.66,386.22L801.99,388.39L801.31,386.64L797.88,394.95L798.54,402.27L796.87,399.79L796.41,403.24L797.74,412.53L796.93,417.63L797.53,421.71L794.30,428.70L793.38,428.25L796.04,433.54L800.74,433.53L807.01,429.90L811.72,429.37L816.77,429.95L822.70,425.98L827.51,423.73L829.33,423.92L836.45,421.74L844.61,421.71L848.36,423.47L851.81,429.66L851.62,432.08L857.77,428.93L857.19,432.74L854.83,434.44L857.32,434.10L858.99,431.63L860.20,432.73L858.98,435.89L861.37,434.83L860.80,443.96L863.44,445.72L866.25,445.95L868.27,447.27L873.72,443.97L876.10,446.93L883.53,443.73L887.13,443.51L889.68,441.04L892.49,436.57L897.79,430.58L907.35,420.77L912.90,411.49L913.58,405.52L914.57,402.32L914.43,396.93L911.04,392.09L911.05,388.87L908.65,388.44L908.40,383.72L907.45,380.20L901.93,376.38L896.50,350.86Z " data-iso="AUS" data-name="Australia" data-pop="21262641.0"/><path d="M503.69,134.42L498.28,133.16L497.63,134.24L495.25,133.94L495.18,133.91L495.15,133.98L493.25,138.40L490.97,137.60L488.55,138.59L483.74,138.21L483.67,138.24L483.76,138.29L483.96,138.44L483.92,138.70L483.72,139.13L483.75,139.18L483.81,139.43L483.86,139.52L483.93,139.81L483.89,139.87L484.00,139.87L486.02,140.13L486.32,140.43L486.32,140.55L486.40,140.58L491.01,139.79L490.99,140.30L494.75,141.63L495.33,141.75L495.45,141.77L497.70,142.18L498.46,141.54L501.70,140.62L501.85,140.55L502.26,140.17L502.66,138.79L503.29,138.20L504.31,136.71L504.45,136.56L504.28,136.44L503.58,135.23L503.56,135.04L503.76,134.53L503.77,134.50L503.69,134.42Z " data-iso="AUT" data-name="Austria" data-pop="8210281.0"/><path d="M585.16,165.89L585.22,165.95L585.33,166.08L585.40,166.15L587.58,168.38L588.90,168.73L589.47,168.83L589.32,168.56L588.15,166.45L587.24,166.63L585.44,165.83L585.16,165.89Z M588.60,158.10L588.56,158.22L589.66,160.24L589.38,160.95L585.46,159.76L584.92,160.23L585.01,160.39L587.57,164.98L589.31,166.27L590.47,168.41L590.53,168.73L590.71,168.74L594.38,165.96L595.48,166.97L597.61,170.41L597.33,169.06L598.49,164.14L600.76,163.83L594.98,158.47L594.68,158.26L593.07,160.51L588.92,158.17L588.60,158.10Z " data-iso="AZE" data-name="Azerbaijan" data-pop="8238672.0"/><path d="M551.74,316.71L550.39,316.76L549.17,318.13L547.11,317.67L547.06,317.86L547.06,318.00L547.70,319.05L547.66,321.31L548.14,323.50L548.21,324.04L549.18,324.06L551.15,321.65L551.39,320.97L551.76,316.81L551.82,316.72L551.74,316.71Z " data-iso="BDI" data-name="Burundi" data-pop="8988091.0"/><path d="M466.20,124.98L465.49,125.28L464.33,125.86L469.37,129.83L470.68,129.17L473.03,131.23L473.25,131.24L473.32,131.18L473.05,130.30L473.41,129.35L474.06,129.21L474.08,129.22L474.09,129.16L474.35,127.58L473.72,127.11L473.68,127.05L473.15,127.04L473.41,127.04L473.24,126.85L472.88,126.95L472.87,126.97L469.97,124.74L468.39,125.34L466.53,124.89L466.20,124.98Z " data-iso="BEL" data-name="Belgium" data-pop="10414336.0"/><path d="M468.38,266.04L465.12,264.34L464.94,265.29L464.87,265.65L464.79,265.86L463.62,267.36L460.39,268.89L460.31,268.88L460.23,269.27L459.89,271.05L461.69,273.98L462.55,285.95L463.15,285.80L464.59,285.56L465.89,285.41L466.08,275.84L467.11,275.34L469.17,270.88L468.45,266.60L468.57,266.37L468.38,266.04Z " data-iso="BEN" data-name="Benin" data-pop="8791832.0"/><path d="M457.57,254.60L455.23,254.38L447.61,259.35L447.44,260.70L444.84,260.61L444.00,263.52L441.33,265.90L440.64,270.71L440.59,270.91L440.78,271.15L444.24,273.70L445.90,272.73L449.20,274.38L449.26,274.29L449.23,274.10L448.71,270.62L449.10,268.87L456.63,268.26L457.34,268.45L458.04,268.61L459.03,268.89L459.23,269.02L459.52,268.92L460.31,268.88L460.39,268.89L463.62,267.36L464.79,265.86L464.87,265.65L464.73,265.48L462.34,263.01L460.91,261.70L458.17,255.03L458.21,254.86L457.57,254.60Z " data-iso="BFA" data-name="Burkina Faso" data-pop="15746232.0"/><path d="M726.22,229.39L730.13,226.20L732.77,226.58L736.66,233.79L736.71,233.78L737.27,232.07L736.83,229.66L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.22,229.39Z " data-iso="BGD" data-name="Bangladesh" data-pop="156050883.0"/><path d="M520.91,149.78L520.81,149.85L521.34,154.57L520.68,154.72L520.71,156.54L520.49,156.60L520.97,157.12L522.54,158.72L522.42,159.11L522.43,160.00L522.40,160.07L522.71,160.11L529.40,160.32L531.49,159.89L531.55,158.62L531.90,158.72L531.89,158.62L535.08,157.90L536.59,157.82L536.48,157.54L534.92,156.05L535.59,155.20L537.55,152.39L537.52,151.54L532.51,150.11L531.53,150.33L521.12,149.93L520.91,149.78Z " data-iso="BGR" data-name="Bulgaria" data-pop="7204687.0"/><path d="M509.42,155.72L509.47,155.71L509.34,154.27L509.83,154.06L511.22,152.27L511.30,152.27L511.46,152.09L510.88,148.92L510.52,147.55L510.42,147.56L510.24,147.57L502.45,146.84L501.35,147.92L509.17,155.63L509.42,155.72Z " data-iso="BIH" data-name="Bosnia and Herz." data-pop="4613414.0"/><path d="M530.63,108.74L528.70,109.88L528.02,109.79L526.96,110.30L526.90,110.34L526.91,110.49L527.26,111.89L525.16,113.14L524.81,114.90L519.71,116.23L519.51,116.16L519.95,117.31L520.98,120.49L519.42,121.88L520.58,124.07L520.80,124.41L520.82,124.39L530.17,123.61L538.38,124.55L541.84,122.39L542.35,122.42L542.32,122.33L542.59,119.04L541.58,116.66L538.31,111.83L538.20,110.66L534.42,110.28L531.11,109.04L530.71,108.75L530.63,108.74Z " data-iso="BLR" data-name="Belarus" data-pop="9648533.0"/><path d="M189.39,242.10L188.69,242.20L186.49,244.15L186.45,244.46L186.31,245.33L185.40,251.36L185.76,251.32L186.43,251.36L186.40,251.12L188.51,248.70L189.23,245.53L189.18,242.51L189.39,242.10Z " data-iso="BLZ" data-name="Belize" data-pop="307899.0"/><path d="M281.67,380.22L279.82,369.76L279.62,366.36L274.12,366.30L272.73,362.27L273.30,360.39L272.46,357.43L262.11,352.70L260.16,352.59L257.64,349.98L256.61,342.84L253.02,343.51L246.52,347.79L244.37,347.26L244.01,347.27L244.44,348.05L247.11,352.82L246.23,357.04L246.98,358.79L245.99,360.32L246.09,370.73L246.09,370.74L246.18,371.14L249.71,381.45L251.61,384.87L253.18,389.81L254.75,389.93L255.24,389.81L255.32,389.64L256.43,387.64L261.37,387.23L263.71,389.59L265.50,386.87L268.63,387.64L268.68,387.70L268.73,387.52L270.39,378.41L275.58,377.16L278.35,377.12L281.47,379.68L281.47,380.27L281.67,380.22Z " data-iso="BOL" data-name="Bolivia" data-pop="9775246.0"/><path d="M304.39,308.97L301.25,309.13L301.40,314.21L305.81,313.20L308.20,309.21L304.39,308.97Z M270.32,289.58L270.41,289.62L267.74,292.84L263.68,295.32L259.95,293.96L260.00,298.96L261.95,300.22L255.49,305.68L251.96,304.61L251.17,303.79L250.59,303.95L249.73,300.71L246.98,302.01L242.01,302.05L242.40,304.37L241.30,308.09L243.38,312.42L241.85,323.15L241.80,323.28L241.79,323.51L238.70,323.69L233.45,326.25L229.77,335.14L233.75,341.76L235.82,343.88L240.52,343.24L240.76,347.48L243.72,347.28L244.01,347.27L244.37,347.26L246.52,347.79L253.02,343.51L256.61,342.84L257.64,349.98L260.16,352.59L262.11,352.70L272.46,357.43L273.30,360.39L272.73,362.27L274.12,366.30L279.62,366.36L279.82,369.76L281.67,380.22L281.47,380.27L281.56,380.53L282.79,387.25L290.25,390.79L290.63,392.54L294.70,394.21L294.15,399.19L294.19,399.71L294.42,399.71L296.51,400.33L297.17,405.26L291.72,409.70L287.56,416.12L287.45,416.29L287.66,416.55L290.07,416.29L299.76,423.01L300.79,424.61L301.81,429.07L302.93,427.84L304.84,423.22L308.42,418.84L310.30,413.32L313.09,408.69L312.00,402.20L317.57,394.44L323.33,391.27L327.46,390.42L327.38,389.54L330.76,390.24L331.84,387.97L333.89,386.85L333.83,384.12L337.15,377.09L336.89,374.80L338.48,371.45L338.50,362.67L337.95,356.70L342.64,349.78L342.93,348.35L348.15,342.23L349.99,338.18L349.77,330.98L347.97,326.47L342.95,325.69L337.21,320.26L334.26,318.37L327.21,318.12L322.22,317.42L319.90,319.36L320.12,315.48L317.27,312.99L309.31,310.67L305.11,316.52L305.38,314.34L300.64,312.53L300.48,311.50L296.48,314.01L297.99,310.87L302.34,305.17L300.07,296.44L298.56,293.04L298.26,293.65L294.32,300.26L291.75,299.91L289.11,299.89L289.03,299.85L288.89,299.84L286.67,299.44L285.10,299.26L283.35,301.25L283.26,301.22L283.13,301.27L280.39,301.34L276.98,303.57L273.65,302.02L272.94,295.34L273.89,294.11L270.60,289.51L270.32,289.58Z " data-iso="BRA" data-name="Brazil" data-pop="198739269.0"/><path d="M812.15,290.66L812.47,292.48L813.15,292.51L812.15,290.66Z M812.20,290.43L812.03,290.22L811.57,290.49L809.58,291.76L809.23,291.75L810.87,293.70L811.63,292.61L812.15,290.66L812.20,290.43Z " data-iso="BRN" data-name="Brunei" data-pop="388190.0"/><path d="M730.00,208.60L728.59,207.63L725.08,206.80L722.27,209.81L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.00,208.60Z " data-iso="BTN" data-name="Bhutan" data-pop="691141.0"/><path d="M534.22,371.75L530.88,372.78L528.13,372.51L522.05,373.61L521.11,378.76L520.80,386.86L517.74,388.76L517.43,396.74L517.43,396.83L517.57,396.94L518.49,397.74L519.06,403.32L523.20,403.52L526.45,398.80L530.29,400.31L534.06,399.81L535.11,396.87L538.08,394.91L538.96,392.53L542.51,389.35L545.37,387.62L546.08,387.55L545.94,387.42L545.17,386.18L542.01,385.09L540.09,381.40L536.63,377.42L534.28,371.94L534.35,371.77L534.22,371.75Z " data-iso="BWA" data-name="Botswana" data-pop="1990876.0"/><path d="M527.58,269.12L524.19,270.51L521.40,274.56L515.84,276.23L511.86,279.64L509.54,280.89L505.53,281.32L505.20,281.29L504.89,281.88L503.32,284.74L502.60,288.53L502.90,291.49L507.33,299.71L507.48,300.05L507.69,299.56L508.66,295.79L510.90,295.24L514.78,295.62L514.95,295.73L514.91,295.02L516.33,290.69L525.10,292.96L536.22,289.19L541.13,289.59L542.02,289.91L541.80,289.63L538.74,284.46L535.06,281.17L531.96,277.25L531.81,277.20L531.51,277.11L530.16,274.79L530.20,273.07L527.94,269.59L527.71,269.15L527.58,269.12Z " data-iso="CAF" data-name="Central African Rep." data-pop="4511488.0"/><path d="M288.51,143.77L290.25,144.79L287.60,144.99L287.43,143.78L290.29,140.55L290.48,142.51L288.51,143.77Z M250.30,146.95L254.39,144.43L265.45,138.43L269.12,135.62L277.77,132.36L282.03,132.74L282.70,133.78L279.35,138.79L279.10,142.33L288.14,146.07L283.62,147.65L274.71,151.80L272.62,151.28L273.60,148.64L278.70,145.91L279.53,144.16L271.19,146.59L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L250.30,146.95Z M114.91,127.43L118.59,128.40L119.01,130.87L121.27,134.15L118.30,134.79L117.64,133.26L114.17,131.65L115.69,130.85L114.91,127.43Z M308.97,124.35L303.83,130.21L306.97,129.76L308.13,132.20L311.97,131.99L312.79,134.91L310.69,136.35L313.16,137.90L311.17,141.28L308.83,139.77L309.54,137.26L305.06,138.45L302.03,138.00L295.44,138.08L295.16,136.81L303.45,127.07L307.48,124.24L308.97,124.35Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.34,112.76L115.65,113.20L115.01,113.43L114.95,113.35Z M251.80,79.21L252.86,78.63L257.31,80.90L260.71,83.80L255.32,84.01L248.15,85.72L246.95,84.11L243.65,84.53L246.03,83.01L250.64,77.43L251.80,79.21Z M279.01,69.75L279.50,71.49L278.15,72.68L274.17,72.98L274.58,71.19L279.01,69.75Z M230.41,65.74L232.45,66.65L229.94,69.33L225.36,67.89L227.68,65.96L230.41,65.74Z M203.00,134.43L202.99,134.44L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.51,133.00L122.99,129.14L120.68,130.41L118.87,127.96L115.29,126.48L115.26,124.12L116.62,121.08L114.67,118.17L114.56,115.04L118.21,111.64L118.99,109.62L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L129.17,65.77L135.60,67.80L140.28,66.75L146.54,66.37L146.70,67.06L161.61,63.89L163.21,66.27L168.70,66.55L173.45,65.22L180.75,67.56L186.71,67.87L188.51,69.80L185.48,70.33L187.37,71.63L190.78,71.70L196.30,70.87L200.21,73.41L199.94,74.98L202.66,70.63L201.03,69.89L210.47,70.54L212.98,70.38L223.94,70.84L227.19,69.11L230.71,70.01L228.63,72.10L237.67,68.84L235.94,67.81L239.19,66.23L234.18,65.26L233.92,63.69L235.65,61.47L240.31,59.01L244.14,60.90L244.44,63.57L241.07,65.67L246.17,66.34L244.61,69.95L249.23,66.88L250.74,68.57L248.89,70.23L249.58,73.24L254.19,70.59L257.76,66.99L260.61,65.12L267.06,67.32L263.21,73.59L253.59,76.06L249.63,75.32L250.80,76.53L246.22,78.92L240.88,77.72L242.13,78.94L246.48,79.69L240.50,83.15L234.43,84.50L232.11,84.13L233.40,86.44L229.09,87.08L226.42,88.37L218.97,94.40L215.88,99.06L219.80,100.19L218.97,105.21L222.56,105.09L241.81,112.35L239.20,119.12L241.64,125.14L243.44,125.79L248.20,121.90L248.43,113.60L250.67,112.98L257.83,109.24L258.89,108.02L260.03,103.71L258.36,99.17L261.31,97.42L263.14,90.09L265.25,87.85L272.00,89.18L274.99,88.09L278.40,92.08L283.00,92.61L281.56,95.77L279.77,96.11L278.59,100.07L283.76,101.06L283.91,102.55L290.67,99.25L293.76,95.20L297.06,100.36L295.48,101.08L299.68,110.14L298.82,112.38L306.23,113.76L299.03,116.76L298.52,117.69L306.29,115.40L306.30,116.92L309.17,117.35L309.00,121.94L306.19,123.85L300.56,125.18L296.82,127.94L290.74,129.28L289.19,128.68L279.51,128.62L276.52,129.66L274.67,131.89L267.56,135.71L263.77,135.00L261.29,140.79L255.94,142.84L251.05,146.37L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L203.00,134.43Z M197.98,56.99L202.27,55.82L204.95,57.68L209.17,55.85L210.26,59.46L212.67,59.03L213.46,55.49L217.64,55.23L218.92,56.87L217.62,60.95L223.03,64.34L222.42,65.53L219.80,65.13L216.99,68.02L214.51,68.27L208.74,66.35L200.10,68.67L192.14,69.25L190.68,66.93L186.15,66.67L184.98,65.26L187.19,64.14L198.15,63.33L189.53,62.91L188.07,61.05L192.88,60.06L186.29,59.76L191.73,56.29L199.72,54.72L197.98,56.99Z M279.17,53.91L284.80,54.90L285.30,56.26L281.66,56.10L276.05,55.02L276.23,53.86L279.17,53.91Z M258.27,61.65L262.56,61.40L263.77,59.95L263.25,58.09L266.26,54.83L272.31,53.69L274.61,53.79L275.91,56.47L272.89,59.00L279.70,57.67L280.92,56.71L285.64,57.04L288.30,58.61L285.22,61.00L290.83,59.67L293.79,60.31L296.31,62.14L299.50,63.10L297.40,64.81L299.17,65.36L297.11,68.16L299.35,70.54L305.25,71.89L309.66,73.75L309.00,75.93L307.47,75.64L303.99,79.31L293.07,76.13L295.39,80.61L295.99,80.12L299.35,83.84L297.75,86.66L288.60,83.96L292.50,87.62L292.50,89.97L286.20,88.25L280.43,85.03L282.17,84.51L278.65,81.37L269.73,82.43L267.11,81.23L269.74,79.52L277.52,78.78L278.80,76.26L282.81,74.65L285.31,71.78L283.91,68.59L277.92,67.76L279.86,66.52L277.25,63.95L267.94,64.84L257.47,64.35L257.68,63.28L252.12,63.10L251.77,61.50L256.86,61.72L251.93,60.43L256.34,55.49L259.69,54.08L266.97,53.46L263.71,55.05L260.80,59.02L262.46,60.50L258.27,61.65Z M233.93,53.07L238.97,54.58L237.02,55.69L237.60,58.30L232.47,60.37L225.16,56.62L226.67,55.62L228.18,56.54L229.51,54.55L233.93,53.07Z M249.67,52.45L255.35,53.29L249.09,56.52L245.39,57.09L243.23,58.64L241.38,56.44L242.83,54.19L246.03,52.67L249.67,52.45Z M190.26,52.59L194.11,52.15L198.36,54.35L184.13,58.10L181.99,59.81L174.29,61.32L173.96,59.68L171.22,58.32L180.22,53.41L179.86,51.92L190.26,52.59Z M244.84,45.97L241.80,49.71L237.15,50.11L237.77,48.47L234.58,48.36L236.65,46.09L238.83,47.47L240.09,45.51L244.84,45.97Z M220.72,47.10L224.16,47.20L223.11,49.81L217.25,50.18L204.98,51.68L205.21,50.60L212.36,49.52L208.25,49.73L206.58,48.85L203.50,50.07L198.21,49.49L200.17,48.25L207.79,45.86L212.97,48.16L217.76,48.62L220.93,45.02L220.72,47.10Z M253.27,44.75L259.59,45.43L260.16,47.11L262.85,48.21L269.42,48.43L273.92,47.78L280.89,48.69L282.17,49.33L279.48,51.04L274.37,51.38L272.84,50.39L271.20,51.30L264.83,51.52L254.41,51.06L255.33,48.22L249.66,46.53L247.42,45.05L253.27,44.75Z M208.50,43.52L205.87,45.23L200.49,46.14L202.02,45.10L191.30,47.21L190.47,46.28L200.70,43.68L208.50,43.52Z M221.52,41.54L221.17,42.57L216.20,43.57L216.04,41.97L221.52,41.54Z M253.02,40.40L254.10,41.83L249.57,42.33L248.87,41.11L251.15,39.74L253.02,40.40Z M239.78,38.36L245.43,39.89L245.53,41.90L240.37,41.11L235.06,41.10L238.11,39.78L235.68,39.63L239.78,38.36Z M268.67,33.83L273.79,35.58L278.42,38.44L272.00,39.08L268.02,41.30L262.42,41.31L258.43,39.36L262.08,38.70L256.41,37.37L255.92,36.28L264.40,33.36L268.67,33.83Z M318.66,29.50L324.60,29.69L322.10,30.26L330.56,30.49L333.67,31.14L323.11,32.97L320.21,34.05L310.41,36.44L296.03,37.86L300.05,38.57L292.29,38.97L299.24,40.17L290.54,41.96L283.44,43.84L288.26,44.69L285.67,46.01L280.92,45.84L271.85,46.42L262.99,45.95L270.67,42.10L270.98,41.46L280.39,38.76L278.16,35.82L282.70,35.97L286.76,37.50L285.02,35.93L298.96,34.48L296.21,33.88L291.98,34.73L282.57,35.31L273.50,34.36L274.22,32.63L270.62,32.52L279.02,31.56L284.47,31.68L286.35,30.76L295.96,32.12L294.59,30.16L305.54,30.40L306.23,29.43L318.66,29.50Z " data-iso="CAN" data-name="Canada" data-pop="33487208.0"/><path d="M483.18,137.98L481.47,137.63L480.38,137.95L478.66,138.08L478.43,138.00L478.10,138.16L474.37,143.06L475.70,142.04L476.92,143.72L476.97,143.84L477.07,143.92L480.85,142.17L482.52,144.12L483.60,142.07L486.21,141.00L486.32,140.55L486.32,140.43L486.02,140.13L484.00,139.87L483.89,139.87L483.68,139.85L483.64,139.86L483.61,139.73L483.61,139.47L483.72,139.13L483.92,138.70L483.96,138.44L483.76,138.29L483.67,138.24L483.18,137.98Z " data-iso="CHE" data-name="Switzerland" data-pop="7604467.0"/><path d="M277.52,503.23L276.92,501.45L276.60,500.53L274.97,495.77L274.87,495.70L272.69,495.21L271.00,497.99L272.41,499.97L275.59,502.23L269.54,501.86L277.13,503.23L277.52,503.23Z M255.15,483.71L253.52,482.28L252.70,484.45L255.39,486.70L255.15,483.71Z M250.75,463.37L251.29,461.92L248.62,458.60L248.91,462.80L250.75,463.37Z M246.09,370.74L245.88,370.98L245.38,372.47L245.30,372.84L243.64,373.75L243.83,373.93L245.93,385.04L245.96,392.80L246.63,398.26L246.05,410.84L246.70,416.13L246.03,416.80L248.26,425.18L247.72,426.74L246.22,441.56L247.78,451.35L247.92,454.58L250.71,457.82L251.72,456.98L252.97,462.31L253.01,466.28L254.96,467.22L253.91,472.68L252.33,471.73L249.81,472.29L254.46,479.62L254.04,479.77L258.98,489.91L255.31,489.02L261.21,493.68L263.34,492.64L261.46,495.80L267.25,495.61L264.14,497.95L269.92,498.90L269.35,496.17L273.51,494.44L275.12,494.76L270.67,493.57L265.42,493.51L262.73,489.02L260.61,489.21L258.61,486.36L260.04,480.52L259.17,479.63L259.72,476.54L258.49,469.14L259.01,467.24L257.26,467.03L255.17,458.76L253.46,454.29L253.55,448.64L254.46,446.97L252.72,442.16L252.33,439.05L254.06,430.80L253.48,427.42L251.52,423.92L250.30,418.86L250.29,412.92L251.10,409.45L253.36,405.13L252.16,396.31L255.32,394.16L255.88,390.45L255.24,389.81L254.75,389.93L253.18,389.81L251.61,384.87L249.71,381.45L246.18,371.14L246.09,370.74Z " data-iso="CHL" data-name="Chile" data-pop="16601707.0"/><path d="M447.64,289.77L447.54,289.89L447.95,289.98L448.03,289.84L447.64,289.77Z M433.01,271.85L432.93,271.99L433.64,275.72L433.10,276.77L431.60,281.01L431.43,281.16L431.49,281.20L432.02,285.59L433.25,285.89L434.28,292.62L434.65,292.53L440.40,289.98L445.62,289.51L448.22,289.76L448.24,289.83L448.95,289.13L447.57,284.82L449.55,279.29L449.29,274.47L449.26,274.29L449.20,274.38L445.90,272.73L444.24,273.70L440.78,271.15L440.59,270.91L440.49,270.86L438.39,271.50L438.33,269.85L433.10,271.85L433.01,271.85Z " data-iso="CIV" data-name="Ivory Coast" data-pop="20617068.0"/><path d="M505.36,281.00L500.59,273.91L501.30,272.51L505.64,272.41L503.04,263.49L501.16,261.43L500.61,261.42L500.93,263.09L502.20,266.25L499.60,269.31L498.18,273.70L495.70,277.46L494.53,281.05L491.68,284.92L489.25,283.60L485.27,287.02L483.93,291.17L483.97,291.19L486.26,294.08L488.24,297.16L487.85,299.09L487.79,299.93L488.00,300.25L488.34,300.41L491.79,300.41L492.50,300.41L492.54,300.18L493.21,299.93L498.06,300.09L498.49,300.21L498.57,300.44L499.31,300.44L502.53,300.30L507.34,302.00L507.48,300.08L507.48,300.05L507.33,299.71L502.90,291.49L502.60,288.53L503.32,284.74L504.89,281.88L505.20,281.29L505.36,281.00Z " data-iso="CMR" data-name="Cameroon" data-pop="18879301.0"/><path d="M541.13,289.59L536.22,289.19L525.10,292.96L516.33,290.69L514.91,295.02L514.95,295.73L514.99,296.36L512.25,309.14L507.58,315.93L503.52,324.95L502.23,325.48L497.90,324.58L497.85,324.70L497.81,324.76L497.10,325.06L496.02,328.57L495.18,328.72L495.27,328.89L495.49,329.20L497.62,328.99L497.82,329.09L508.18,329.22L511.64,337.08L516.45,336.73L518.09,333.28L520.98,332.92L520.99,334.14L524.60,334.27L524.59,341.97L526.03,345.29L526.02,348.16L530.99,347.06L531.11,346.99L531.22,347.01L532.20,348.77L539.49,350.94L540.85,349.52L542.27,351.98L548.74,355.92L548.87,351.58L546.61,352.27L544.74,349.94L545.51,343.27L544.85,341.28L551.62,337.51L552.16,337.41L552.07,337.09L550.26,332.85L548.00,325.94L548.21,324.21L548.21,324.04L548.14,323.50L547.66,321.31L547.70,319.05L547.06,318.00L547.06,317.86L546.78,317.73L546.58,316.89L547.43,315.99L548.70,313.19L548.82,313.11L548.83,313.00L549.90,305.75L553.03,302.14L553.74,300.05L552.36,299.39L552.84,295.79L552.67,295.69L552.60,295.54L549.65,292.70L546.78,292.13L542.13,290.16L542.02,289.91L541.13,289.59Z " data-iso="COD" data-name="Congo (Kinshasa)" data-pop="68692542.0"/><path d="M514.78,295.62L510.90,295.24L508.66,295.79L507.69,299.56L507.48,300.05L507.48,300.08L507.34,302.00L502.53,300.30L499.31,300.44L498.57,300.44L498.55,300.68L501.49,303.43L500.40,307.47L500.97,309.12L501.36,316.56L500.72,317.04L497.03,315.05L493.35,317.42L494.35,320.12L491.87,322.14L492.59,322.90L493.86,324.45L493.99,325.13L494.55,325.94L494.60,326.02L495.49,325.17L495.73,324.64L497.78,324.65L497.85,324.70L497.90,324.58L502.23,325.48L503.52,324.95L507.58,315.93L512.25,309.14L514.99,296.36L514.95,295.73L514.78,295.62Z " data-iso="COG" data-name="Congo (Brazzaville)" data-pop="4012809.0"/><path d="M219.59,277.23L219.94,279.82L217.71,282.34L218.00,282.67L219.25,286.75L219.18,291.75L219.84,294.18L215.98,299.19L214.11,302.71L214.20,302.96L220.44,307.27L224.65,308.29L225.21,308.53L225.39,308.30L234.18,316.82L236.75,316.09L241.39,317.80L240.03,321.96L241.64,323.01L241.80,323.28L241.85,323.15L243.38,312.42L241.30,308.09L242.40,304.37L242.01,302.05L246.98,302.01L249.73,300.71L250.59,303.95L251.17,303.79L251.11,303.55L249.09,298.55L249.79,296.29L248.35,291.49L249.77,286.64L243.66,286.29L241.70,283.38L234.55,281.53L234.85,278.56L233.81,270.68L236.69,266.71L238.88,265.78L239.00,265.58L239.17,264.08L236.34,265.07L232.63,267.80L229.90,267.91L229.33,269.53L226.97,269.32L225.01,273.40L220.84,279.06L219.67,277.31L219.59,277.23Z " data-iso="COL" data-name="Colombia" data-pop="45644023.0"/><path d="M194.42,268.71L193.99,271.01L196.39,272.02L202.35,278.93L202.54,279.33L203.14,276.18L202.59,275.12L203.82,273.95L203.69,273.81L202.21,272.29L201.32,270.77L200.91,269.30L200.84,269.16L199.94,269.81L197.83,268.70L194.43,268.64L194.42,268.71Z " data-iso="CRI" data-name="Costa Rica" data-pop="4253877.0"/><path d="M211.35,225.27L204.42,227.06L202.60,229.34L211.44,227.32L210.88,228.73L214.78,229.22L220.34,232.84L223.96,234.32L222.89,237.12L232.71,236.34L228.73,232.64L225.26,231.39L220.41,228.13L211.35,225.27Z " data-iso="CUB" data-name="Cuba" data-pop="11451652.0"/><path d="M556.06,182.22L554.62,181.52L553.10,181.32L552.69,182.15L552.52,182.11L554.59,182.22L555.37,182.66L556.30,182.49L556.06,182.22Z " data-iso="CYN" data-name="N. Cyprus" data-pop="265100.0"/><path d="M552.34,182.07L552.08,183.78L552.64,183.98L556.37,182.56L556.30,182.49L555.37,182.66L554.59,182.22L552.52,182.11L552.34,182.07Z " data-iso="CYP" data-name="Cyprus" data-pop="531640.0"/><path d="M497.36,126.74L491.40,128.28L490.71,129.01L492.33,131.96L495.04,133.74L495.18,133.91L495.25,133.94L497.63,134.24L498.28,133.16L503.69,134.42L503.77,134.50L503.83,134.23L506.07,133.35L506.72,132.88L508.55,131.34L508.62,131.33L508.60,131.23L507.65,129.98L503.35,128.20L502.75,129.24L498.64,126.60L497.62,126.67L497.39,126.68L497.36,126.74Z " data-iso="CZE" data-name="Czech Rep." data-pop="10211904.0"/><path d="M494.56,115.84L493.98,115.52L494.63,116.42L494.95,116.38L495.07,116.39L495.01,116.23L495.04,116.12L494.56,115.84Z M480.33,113.28L479.37,117.83L476.49,118.24L476.62,118.39L473.46,123.58L474.15,124.51L473.82,126.52L473.68,127.05L473.72,127.11L474.35,127.58L474.09,129.16L474.08,129.22L474.06,129.31L474.07,129.52L474.77,131.33L474.76,131.53L474.86,131.51L479.71,133.50L478.29,137.95L478.43,138.00L478.66,138.08L480.38,137.95L481.47,137.63L483.18,137.98L483.67,138.24L483.74,138.21L488.55,138.59L490.97,137.60L493.25,138.40L495.15,133.98L495.18,133.91L495.04,133.74L492.33,131.96L490.71,129.01L491.40,128.28L497.36,126.74L497.39,126.68L497.40,126.63L496.60,123.34L496.94,122.48L495.22,116.87L495.20,116.86L491.81,114.56L490.61,114.37L483.11,113.23L483.09,113.17L481.64,113.10L480.89,112.93L480.28,112.90L480.33,113.28Z " data-iso="DEU" data-name="Germany" data-pop="82329758.0"/><path d="M589.93,266.84L590.21,265.39L590.60,264.60L589.67,262.92L589.62,262.75L588.59,263.77L588.30,263.94L587.48,263.51L587.39,263.61L587.11,264.12L585.82,268.93L586.06,269.02L589.03,268.87L589.27,268.86L589.63,268.17L589.95,267.55L590.20,267.07L589.93,266.84Z " data-iso="DJI" data-name="Djibouti" data-pop="516055.0"/><path d="M490.30,109.94L489.31,108.83L487.06,110.05L488.67,113.34L490.30,109.94Z M480.28,112.90L480.89,112.93L481.64,113.10L483.09,113.17L482.99,112.82L485.66,107.48L484.15,105.89L480.24,112.63L480.28,112.90Z " data-iso="DNK" data-name="Denmark" data-pop="5500510.0"/><path d="M239.58,243.78L248.94,243.00L250.05,241.61L246.70,239.45L245.55,237.80L240.19,237.58L240.05,237.64L238.98,241.61L239.42,243.66L239.58,243.78Z " data-iso="DOM" data-name="Dominican Rep." data-pop="9650054.0"/><path d="M480.99,175.87L468.45,175.92L460.36,177.54L451.69,182.42L451.10,182.35L453.81,193.18L447.44,194.56L445.81,197.41L441.91,200.48L438.33,201.38L431.81,205.40L431.74,208.24L431.72,209.12L431.71,209.72L431.69,210.45L432.25,210.85L438.90,215.62L439.46,216.02L442.43,218.18L443.10,218.69L444.01,219.37L467.25,237.38L469.41,239.91L470.37,239.70L471.03,239.55L478.70,234.94L480.17,233.49L491.99,225.09L493.52,224.00L493.22,223.36L489.59,220.28L485.77,214.83L485.37,200.05L485.65,199.87L485.45,199.02L479.43,186.92L481.69,182.42L481.43,179.85L482.28,175.78L480.99,175.87Z " data-iso="DZA" data-name="Algeria" data-pop="34178188.0"/><path d="M214.29,303.53L210.39,305.35L210.58,306.69L208.07,311.63L208.13,316.54L209.86,317.82L211.51,317.02L209.85,320.20L209.78,320.25L209.46,323.17L214.94,324.44L217.12,319.03L220.97,317.30L224.35,313.62L225.32,311.55L225.03,308.66L225.21,308.53L224.65,308.29L220.44,307.27L214.20,302.96L214.29,303.53Z " data-iso="ECU" data-name="Ecuador" data-pop="14573101.0"/><path d="M558.10,196.00L553.33,196.73L548.91,194.93L544.24,197.36L537.70,195.74L531.71,195.18L531.46,194.74L530.52,200.22L531.53,203.63L532.86,228.66L532.89,229.46L534.05,229.46L549.03,229.46L552.36,229.46L568.76,229.46L568.75,229.39L565.00,226.05L565.01,222.49L563.10,220.56L558.84,212.74L557.27,208.25L554.75,205.05L553.51,200.96L556.19,205.84L557.86,207.71L560.68,202.73L560.83,202.57L559.88,200.00L559.42,199.09L558.65,197.11L558.34,196.35L558.21,196.04L558.16,195.94L558.10,196.00Z " data-iso="EGY" data-name="Egypt" data-pop="83082869.0"/><path d="M569.20,257.21L569.26,257.20L572.35,257.61L573.27,255.08L575.23,256.61L579.04,256.34L582.20,257.61L587.11,263.24L587.39,263.61L587.48,263.51L588.30,263.94L588.59,263.77L589.62,262.75L589.50,262.33L581.66,254.97L578.10,252.64L575.94,245.85L574.90,243.78L571.56,246.99L570.18,247.31L569.06,256.18L569.20,257.21Z " data-iso="ERI" data-name="Eritrea" data-pop="5647168.0"/><path d="M432.78,157.92L437.71,157.89L437.87,165.05L436.30,165.97L436.21,174.91L436.88,174.80L442.14,178.29L444.95,176.56L449.50,176.57L454.85,173.51L457.99,169.02L457.33,165.27L459.58,161.90L466.04,158.54L466.67,156.40L466.59,156.18L464.78,156.48L464.24,156.32L462.78,156.09L462.35,155.92L462.27,155.95L462.01,156.09L461.53,155.76L461.57,155.60L461.34,155.26L456.71,154.78L452.52,152.72L452.42,152.74L441.18,151.88L432.67,152.98L431.80,153.55L432.57,157.97L432.78,157.92Z " data-iso="ESP" data-name="Spain" data-pop="40525002.0"/><path d="M520.00,103.00L521.93,102.37L523.78,103.01L527.89,104.15L527.95,104.14L527.94,104.06L528.30,103.24L527.53,100.16L528.62,97.70L528.60,97.75L522.09,97.58L517.29,98.64L520.00,102.87L520.00,103.00Z " data-iso="EST" data-name="Estonia" data-pop="1299371.0"/><path d="M569.20,257.21L569.00,258.17L564.73,269.00L563.66,269.29L562.28,274.17L562.28,274.36L562.28,274.51L559.13,279.76L559.35,280.21L566.19,288.48L566.24,288.54L566.23,288.66L568.48,292.07L572.12,292.96L575.02,295.13L579.37,295.81L583.25,292.90L586.27,293.95L586.72,293.95L586.81,293.76L590.51,291.57L596.00,290.66L604.45,280.44L605.18,279.59L604.13,279.59L591.20,274.65L590.34,273.26L589.23,269.00L589.27,268.86L589.03,268.87L586.06,269.02L585.82,268.93L587.11,264.12L587.39,263.61L587.11,263.24L582.20,257.61L579.04,256.34L575.23,256.61L573.27,255.08L572.35,257.61L569.26,257.20L569.20,257.21Z " data-iso="ETH" data-name="Ethiopia" data-pop="85237338.0"/><path d="M505.89,67.58L506.55,67.75L512.66,70.33L514.90,74.39L514.36,75.72L515.81,77.51L516.00,77.49L518.56,78.32L518.80,79.58L512.51,85.36L510.65,85.70L511.14,92.58L515.81,96.62L516.85,96.06L527.43,94.28L527.51,94.27L534.33,88.51L534.39,85.69L531.33,84.16L529.46,79.90L529.61,76.83L527.08,74.27L524.91,69.66L525.31,67.66L525.45,67.62L525.26,67.50L525.46,65.66L522.31,64.48L516.25,68.92L511.81,68.68L508.12,66.87L506.00,67.48L505.89,67.58Z " data-iso="FIN" data-name="Finland" data-pop="5250275.0"/><path d="M299.63,491.04L298.34,493.29L299.19,494.60L301.58,493.08L299.63,491.04Z " data-iso="FLK" data-name="Falkland Is." data-pop="3140.0"/><path d="M290.64,289.02L289.69,290.25L289.07,299.81L289.03,299.85L289.11,299.89L291.75,299.91L294.32,300.26L298.26,293.65L298.25,293.52L294.92,289.32L290.86,288.83L290.64,289.02Z M484.19,154.85L481.69,156.93L483.72,159.63L484.19,154.85Z M464.12,125.96L462.69,126.22L461.74,128.63L458.05,130.67L457.10,132.07L452.52,130.73L453.63,134.35L444.67,134.70L446.40,137.11L452.12,138.99L453.71,142.35L454.08,148.27L452.98,152.61L452.52,152.72L456.71,154.78L461.34,155.26L461.57,155.60L461.65,155.50L461.96,155.46L462.36,155.56L462.37,155.84L462.35,155.92L462.78,156.09L464.24,156.32L464.78,156.48L466.59,156.18L466.55,156.07L466.10,154.74L469.21,152.38L473.46,153.53L475.98,153.46L477.87,151.70L478.19,151.57L478.29,151.43L478.35,151.47L478.36,151.51L478.51,151.45L478.13,150.17L476.99,149.64L476.76,144.04L476.97,143.84L476.92,143.72L475.70,142.04L474.37,143.06L478.10,138.16L478.43,138.00L478.29,137.95L479.71,133.50L474.86,131.51L474.76,131.53L474.58,131.45L474.15,131.42L474.03,131.53L473.34,131.35L473.25,131.24L473.03,131.23L470.68,129.17L469.37,129.83L464.33,125.86L464.12,125.96Z " data-iso="FRA" data-name="France" data-pop="64057792.0"/><path d="M498.49,300.21L498.06,300.09L493.21,299.93L492.54,300.18L492.50,300.41L492.51,301.24L492.53,304.58L487.15,304.47L487.10,304.61L487.78,307.99L485.16,310.61L487.40,316.78L491.57,321.81L491.87,322.14L494.35,320.12L493.35,317.42L497.03,315.05L500.72,317.04L501.36,316.56L500.97,309.12L500.40,307.47L501.49,303.43L498.55,300.68L498.57,300.44L498.49,300.21Z " data-iso="GAB" data-name="Gabon" data-pop="1514993.0"/><path d="M558.61,196.04L558.60,195.79L558.90,194.99L558.67,195.36L558.16,195.94L558.21,196.04L558.34,196.35L558.61,196.04Z " data-iso="PSE" data-name="Palestine" data-pop="1604238.0"/><path d="M438.65,112.27L436.41,114.22L436.86,115.23L441.16,115.65L441.42,115.75L441.52,111.85L438.75,112.39L438.65,112.27Z M449.60,100.88L443.67,102.35L444.26,102.89L443.03,111.27L444.96,108.95L444.30,112.62L448.55,112.70L449.44,117.61L446.66,119.64L446.30,121.81L443.48,123.17L448.72,124.85L442.50,128.96L447.61,128.81L453.74,126.55L459.39,126.59L461.22,125.66L460.96,123.29L461.95,120.19L456.77,117.00L457.14,115.68L450.35,107.61L452.75,103.86L446.91,103.97L449.60,100.88Z " data-iso="GBR" data-name="United Kingdom" data-pop="61113205.0"/><path d="M588.54,158.05L586.27,156.02L574.18,153.39L571.38,152.27L569.57,152.68L570.23,153.06L573.13,154.77L573.99,155.09L575.36,158.76L574.92,159.42L575.85,159.73L580.60,160.82L580.61,160.88L580.75,160.85L582.78,160.51L584.86,160.28L584.92,160.23L585.46,159.76L589.38,160.95L589.66,160.24L588.56,158.22L588.60,158.10L588.54,158.05Z " data-iso="GEO" data-name="Georgia" data-pop="4615807.0"/><path d="M456.63,268.26L449.10,268.87L448.71,270.62L449.23,274.10L449.26,274.29L449.29,274.47L449.55,279.29L447.57,284.82L448.95,289.13L448.24,289.83L448.03,289.84L447.95,289.98L448.05,290.01L451.38,291.15L460.48,287.41L460.96,286.55L461.21,286.41L459.38,284.08L459.16,274.59L457.53,268.66L457.34,268.45L456.63,268.26Z " data-iso="GHA" data-name="Ghana" data-pop="23832495.0"/><path d="M422.44,263.79L419.14,263.94L416.48,262.91L415.49,262.87L415.48,263.16L414.24,266.53L412.21,267.41L411.38,269.07L411.35,269.45L413.24,271.55L414.02,271.98L416.65,275.73L416.68,275.83L419.37,272.80L420.96,272.46L424.48,274.63L425.68,277.81L425.92,277.85L426.07,277.84L428.27,278.35L428.71,280.64L431.32,281.06L431.43,281.16L431.60,281.01L433.10,276.77L433.64,275.72L432.93,271.99L433.01,271.85L433.06,271.61L430.51,265.56L423.03,265.27L422.56,263.93L422.65,263.84L422.44,263.79Z " data-iso="GIN" data-name="Guinea" data-pop="10057975.0"/><path d="M406.96,260.07L407.50,260.48L406.21,261.17L406.22,261.48L409.14,260.54L415.17,260.51L414.26,259.79L406.87,259.60L406.96,260.07Z " data-iso="GMB" data-name="Gambia" data-pop="1782893.0"/><path d="M415.49,262.87L414.47,262.87L411.00,262.85L409.02,263.72L406.34,264.01L407.17,264.55L408.07,265.58L410.22,267.08L411.23,268.82L411.38,269.07L412.21,267.41L414.24,266.53L415.48,263.16L415.49,262.87Z " data-iso="GNB" data-name="Guinea Bissau" data-pop="1533964.0"/><path d="M492.50,300.41L491.79,300.41L488.34,300.41L488.00,300.25L487.79,299.93L487.72,300.77L487.12,302.65L486.85,303.03L487.17,304.39L487.15,304.47L492.53,304.58L492.51,301.24L492.50,300.41Z " data-iso="GNQ" data-name="Eq. Guinea" data-pop="633441.0"/><path d="M531.90,158.72L531.55,158.62L531.49,159.89L529.40,160.32L522.71,160.11L522.40,160.07L522.24,160.07L519.29,161.44L517.39,161.78L517.01,161.80L517.00,162.07L516.33,164.41L515.39,165.00L514.56,165.86L514.86,166.11L519.12,170.82L518.47,172.58L522.49,177.10L523.83,175.50L524.15,172.12L525.72,172.39L522.19,168.79L523.13,168.58L521.83,163.06L523.94,164.51L526.63,163.97L524.97,162.16L531.35,162.09L531.44,162.24L532.24,161.28L532.09,160.42L532.16,158.79L531.90,158.72Z " data-iso="GRC" data-name="Greece" data-pop="10737428.0"/><path d="M334.97,64.84L331.60,63.72L332.21,66.91L334.97,64.84Z M398.22,28.32L382.74,28.46L366.78,29.83L374.42,30.02L367.46,31.19L365.37,32.18L355.11,30.70L352.60,31.60L350.92,31.04L339.51,32.57L332.67,32.49L331.60,33.70L319.49,35.30L323.12,36.44L319.44,38.46L311.45,39.55L302.11,41.29L308.25,43.24L314.97,42.98L314.31,43.56L303.68,44.31L309.21,45.56L308.53,47.08L318.17,46.66L319.58,46.29L329.40,48.64L328.49,49.07L332.50,51.41L332.14,55.85L333.65,55.90L330.70,60.42L332.98,60.54L335.54,59.04L339.43,61.33L337.80,63.16L331.70,62.70L340.39,65.20L338.01,67.05L332.74,68.87L331.83,74.26L328.63,76.42L334.70,74.26L329.66,76.98L334.01,79.40L334.63,80.99L333.09,88.23L336.38,93.40L342.24,92.46L342.54,94.26L346.50,96.04L348.61,95.82L351.97,90.57L352.38,87.63L357.33,84.65L359.55,81.66L357.96,80.44L360.38,78.39L364.22,78.07L367.36,75.82L367.54,77.56L373.30,76.04L381.44,70.76L381.57,69.84L385.24,70.24L389.50,69.63L397.58,67.62L400.88,65.92L405.83,64.29L394.87,64.07L390.37,63.29L392.18,61.70L398.62,60.89L401.52,61.25L403.58,63.32L407.70,62.90L407.77,61.07L400.31,57.57L397.20,56.63L400.49,56.02L404.81,57.77L407.42,57.55L407.76,56.04L403.81,54.65L403.43,53.59L407.60,55.02L411.48,54.37L411.96,53.35L408.05,52.32L414.16,52.14L410.82,49.87L414.69,49.42L413.66,46.65L415.26,44.89L410.91,42.37L413.01,40.34L417.55,38.63L415.76,36.42L422.43,36.12L427.78,34.17L433.36,32.77L425.89,32.17L421.28,33.12L416.65,32.80L410.48,34.36L414.43,32.49L413.80,31.61L409.38,32.38L406.49,31.78L397.64,31.41L409.31,31.12L412.37,30.00L405.37,29.32L393.68,29.35L405.39,29.05L398.22,28.32Z " data-iso="GRL" data-name="Greenland" data-pop="57600.0"/><path d="M185.81,244.46L180.80,245.16L180.14,247.47L181.54,250.71L177.84,250.71L175.69,256.17L176.84,257.31L178.79,258.39L180.44,258.38L180.82,258.48L181.94,259.07L182.14,258.47L184.36,256.60L184.42,256.64L184.51,256.48L185.13,255.73L188.39,251.94L187.37,251.14L187.50,251.50L187.26,251.81L186.59,251.43L186.43,251.36L185.76,251.32L185.40,251.36L186.31,245.33L186.45,244.46L185.81,244.46Z " data-iso="GTM" data-name="Guatemala" data-pop="13276517.0"/><path d="M281.26,288.28L280.90,285.76L278.98,283.92L277.01,284.93L277.48,283.02L276.55,280.53L273.06,277.68L272.95,277.62L273.42,278.69L270.65,281.24L271.82,282.83L270.56,283.98L269.69,288.74L270.32,289.58L270.60,289.51L273.89,294.11L272.94,295.34L273.65,302.02L276.98,303.57L280.39,301.34L283.13,301.27L283.26,301.22L283.14,301.10L280.79,296.10L279.87,296.12L279.00,290.94L281.29,288.34L281.26,288.28Z " data-iso="GUY" data-name="Guyana" data-pop="772298.0"/><path d="M801.79,227.50L801.34,227.42L801.27,227.47L801.06,227.61L801.05,227.71L800.76,227.91L801.80,227.52L801.79,227.50Z " data-iso="HKG" data-name="Hong Kong" data-pop="7055071.0"/><path d="M188.39,251.94L185.13,255.73L184.51,256.48L184.42,256.64L184.50,256.65L187.97,258.17L189.00,258.52L188.80,260.28L188.93,260.36L189.44,260.33L189.78,260.44L190.17,261.40L190.12,261.78L192.15,260.58L192.23,258.97L202.43,254.63L203.59,254.57L203.40,254.40L195.96,250.96L192.44,251.82L188.68,252.04L188.39,251.94Z " data-iso="HND" data-name="Honduras" data-pop="7792854.0"/><path d="M509.68,156.17L509.56,156.00L509.44,155.85L509.42,155.72L509.17,155.63L507.35,154.69L505.89,154.07L509.14,155.84L509.68,156.17Z M503.10,141.83L502.85,141.74L500.74,142.87L500.80,144.16L495.19,145.28L495.03,145.40L503.46,152.24L504.92,152.77L506.80,154.30L501.35,147.92L502.45,146.84L510.24,147.57L510.42,147.56L510.38,147.43L511.05,146.12L510.27,145.69L509.85,143.90L509.85,143.82L509.84,143.82L507.29,144.39L506.85,144.32L503.26,141.88L503.10,141.83Z " data-iso="HRV" data-name="Croatia" data-pop="4489409.0"/><path d="M239.42,243.66L238.98,241.61L240.05,237.64L239.87,237.71L235.03,237.62L237.14,238.63L237.65,241.80L231.35,242.19L233.20,243.36L239.19,243.37L239.42,243.66Z " data-iso="HTI" data-name="Haiti" data-pop="9035536.0"/><path d="M517.90,135.21L513.84,134.67L508.83,137.32L504.53,136.54L504.45,136.56L504.31,136.71L503.29,138.20L502.66,138.79L502.26,140.17L501.85,140.55L502.37,140.57L502.55,141.05L503.07,141.75L503.10,141.83L503.26,141.88L506.85,144.32L507.29,144.39L509.84,143.82L509.85,143.82L509.91,143.82L510.50,143.62L511.33,143.27L513.40,143.14L513.50,143.20L513.60,143.11L515.66,142.73L517.90,138.31L520.09,136.85L520.15,136.77L520.09,136.72L519.08,135.87L518.60,135.69L518.21,135.14L517.95,135.17L517.90,135.21Z " data-iso="HUN" data-name="Hungary" data-pop="9905596.0"/><path d="M826.42,341.63L823.39,341.87L826.55,344.59L828.61,344.26L826.42,341.63Z M841.55,340.18L840.96,340.52L840.75,340.71L840.52,340.85L840.11,340.98L839.97,341.42L839.53,341.82L838.80,341.52L838.61,341.63L837.56,344.15L839.72,344.40L841.68,342.32L841.92,342.13L842.12,340.97L842.30,340.73L841.66,340.09L841.55,340.18Z M835.18,338.91L835.95,337.90L830.86,338.69L828.60,337.58L826.00,339.21L835.18,338.91Z M788.37,329.60L784.39,329.27L782.40,332.37L795.61,336.11L797.85,337.26L805.96,337.75L809.92,339.47L808.64,335.41L805.38,335.50L804.10,332.89L797.89,332.78L792.02,332.18L788.37,329.60Z M857.84,318.38L855.70,318.29L852.01,319.66L858.07,320.03L860.96,321.93L861.13,320.77L857.84,318.38Z M784.78,314.11L783.37,313.60L781.95,315.45L783.95,315.94L784.56,318.24L785.72,316.95L784.78,314.11Z M890.95,340.72L891.51,332.58L891.44,331.76L892.48,317.47L891.79,317.46L882.80,313.45L878.37,316.27L875.11,320.20L871.49,315.99L871.30,311.73L866.14,309.42L862.74,311.13L865.78,316.16L870.04,317.52L865.79,317.74L867.21,322.25L869.87,320.58L870.62,321.63L883.04,327.67L884.35,332.92L885.66,335.25L884.78,337.41L888.43,336.80L890.81,340.60L890.95,340.72Z M842.96,304.60L842.85,302.53L837.99,304.84L831.20,303.41L828.06,305.68L827.22,310.88L826.36,311.39L824.36,320.59L826.45,322.56L826.36,323.95L830.82,317.69L830.50,320.85L833.40,325.46L836.42,323.83L834.62,320.92L833.58,314.20L838.36,311.59L836.80,310.85L831.40,312.93L828.62,311.25L829.67,306.27L841.55,306.47L842.96,304.60Z M851.74,305.12L851.20,306.40L855.36,307.38L853.23,303.15L851.74,305.12Z M820.28,293.44L820.64,293.86L821.20,293.68L821.18,293.55L821.07,293.21L820.64,293.28L820.34,293.27L820.28,293.44Z M795.05,301.29L793.70,306.25L796.95,312.70L797.61,317.75L799.75,319.12L802.13,318.47L810.55,320.58L811.03,322.83L816.18,319.31L817.20,316.36L816.52,314.27L820.32,310.13L820.34,306.94L823.66,303.44L819.93,295.07L820.09,293.29L820.11,293.26L814.27,293.18L811.78,301.39L808.37,303.65L804.63,302.59L798.91,305.02L797.13,303.74L795.82,300.91L795.05,301.29Z M754.97,289.48L751.17,288.18L751.00,289.29L759.29,300.00L762.42,302.82L767.11,311.10L768.75,315.06L773.26,322.32L777.61,326.29L783.63,328.42L784.02,324.41L782.40,316.57L781.14,316.79L778.69,311.80L776.77,310.21L777.50,307.12L775.63,306.40L771.64,302.36L765.75,297.48L757.92,289.46L754.97,289.48Z " data-iso="IDN" data-name="Indonesia" data-pop="240271522.0"/><path d="M696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.42,208.23L720.71,207.55L721.44,207.86L722.00,210.17L722.21,210.34L724.78,212.49L730.87,212.19L731.73,210.43L730.03,208.75L730.27,208.75L732.81,207.55L734.17,205.62L741.74,202.68L743.77,206.42L746.47,207.03L746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.70,229.27L734.73,223.40L731.95,224.51L731.90,221.90L734.55,219.21L732.30,218.09L726.27,217.32L723.21,214.05L720.80,215.48L722.38,217.99L721.46,219.70L723.88,222.25L723.68,223.43L726.09,229.11L726.11,229.67L723.54,230.75L723.48,228.95L719.95,232.19L718.71,236.44L716.41,237.00L711.79,243.55L708.26,247.04L707.84,249.23L705.64,249.66L702.75,251.71L703.45,260.41L702.73,271.28L701.36,271.34L700.44,274.82L694.31,278.13L692.13,274.39L689.15,266.35L687.15,263.26L684.94,256.67L681.59,250.77L677.69,237.23L676.30,228.87L675.69,231.13L673.40,233.50L671.41,233.97L666.25,229.48L665.87,227.95L668.95,227.39L669.65,225.53L667.54,226.66L662.43,223.24L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.08,186.00L689.65,191.47L687.25,191.54L689.17,195.53L696.63,199.84L696.76,200.10Z " data-iso="IND" data-name="India" data-pop="1166079217.0"/><path d="M438.78,112.12L435.89,112.09L435.92,114.24L431.49,117.20L432.16,118.42L429.89,123.45L432.64,124.48L440.32,121.58L441.51,119.04L441.27,115.77L441.16,115.65L436.86,115.23L436.41,114.22L438.65,112.27L438.78,112.12Z " data-iso="IRL" data-name="Ireland" data-pop="4203200.0"/><path d="M585.33,166.08L585.23,166.07L583.27,166.99L586.52,174.99L586.52,175.04L586.53,175.07L588.96,179.13L591.25,179.78L591.50,182.27L590.16,186.58L598.05,194.24L597.97,197.09L600.99,200.83L601.12,200.78L605.38,199.98L610.68,208.21L617.70,212.47L621.33,213.07L623.39,211.56L628.38,214.50L641.77,217.97L641.93,217.94L642.14,214.48L644.83,212.76L645.65,210.57L643.99,207.88L641.18,205.92L638.05,201.90L637.37,201.20L637.43,201.11L638.00,200.23L638.92,195.72L636.20,194.72L633.83,185.97L634.87,185.17L635.20,180.74L635.10,180.50L635.00,180.36L633.99,176.83L631.75,176.85L628.32,173.96L622.10,171.65L619.14,171.29L612.76,174.32L612.97,174.90L608.22,176.91L602.57,175.02L597.64,170.57L597.61,170.41L595.48,166.97L594.38,165.96L590.71,168.74L590.53,168.73L590.03,168.71L589.63,168.87L589.47,168.83L588.90,168.73L587.58,168.38L585.40,166.15L585.33,166.08Z " data-iso="IRN" data-name="Iran" data-pop="66429284.0"/><path d="M586.41,174.96L583.81,174.75L580.58,174.26L579.88,175.09L579.61,175.16L579.61,175.21L577.17,177.29L577.15,181.69L571.61,188.06L570.84,188.57L571.14,189.36L572.02,191.73L572.80,192.62L572.41,193.05L573.08,193.17L580.57,196.30L583.97,198.91L594.88,204.06L595.39,203.94L595.80,203.35L596.84,200.69L597.88,200.34L599.30,200.75L599.30,200.65L600.42,200.85L600.72,200.91L600.99,200.83L597.97,197.09L598.05,194.24L590.16,186.58L591.50,182.27L591.25,179.78L588.96,179.13L586.53,175.07L586.52,175.04L586.41,174.96Z " data-iso="IRQ" data-name="Iraq" data-pop="28945657.0"/><path d="M420.20,76.19L418.00,75.41L413.91,77.43L408.55,76.80L407.68,77.98L405.28,77.76L403.75,75.57L399.55,78.10L404.71,78.63L404.41,79.88L400.77,80.58L404.03,81.55L401.92,83.59L405.73,83.35L407.91,84.58L411.65,85.06L421.85,81.86L424.54,79.92L422.07,76.75L420.20,76.19Z " data-iso="ISL" data-name="Iceland" data-pop="306694.0"/><path d="M562.37,190.69L562.46,189.59L562.55,189.42L562.30,188.57L562.33,188.35L562.26,188.41L561.35,189.48L561.12,189.63L560.24,189.61L560.18,190.02L559.65,192.79L559.38,193.87L558.91,194.97L558.90,194.99L558.60,195.79L558.61,196.04L558.34,196.35L558.65,197.11L559.42,199.09L559.88,200.00L560.83,202.57L561.01,202.29L561.28,199.99L561.29,198.81L561.76,195.93L561.79,195.37L561.67,195.36L560.51,194.67L561.58,192.06L561.77,192.08L561.75,191.27L561.85,191.05L562.19,190.88L562.35,190.86L562.37,190.69Z " data-iso="ISR" data-name="Israel" data-pop="7233701.0"/><path d="M502.23,171.18L493.41,172.19L493.56,173.15L500.85,176.65L502.23,171.18Z M484.86,161.69L483.83,160.55L480.93,161.60L481.60,167.66L485.00,167.13L484.86,161.69Z M486.32,140.55L486.21,141.00L483.60,142.07L482.52,144.12L480.85,142.17L477.07,143.92L476.97,143.84L476.76,144.04L476.99,149.64L478.13,150.17L478.51,151.45L479.18,151.32L481.99,149.13L486.20,151.15L487.08,154.28L494.60,160.40L502.23,164.86L503.91,168.61L502.71,172.19L503.66,172.18L506.40,167.04L504.98,164.34L505.92,163.00L509.81,165.47L508.52,162.49L502.51,159.44L503.26,158.37L497.47,155.91L491.86,149.11L491.59,145.53L495.74,144.89L495.57,145.03L495.17,143.65L494.54,142.46L495.29,141.96L495.33,141.75L494.75,141.63L490.99,140.30L491.01,139.79L486.40,140.58L486.32,140.55Z " data-iso="ITA" data-name="Italy" data-pop="58126212.0"/><path d="M222.90,242.16L220.36,242.20L220.60,243.63L225.87,244.11L222.90,242.16Z " data-iso="JAM" data-name="Jamaica" data-pop="2825928.0"/><path d="M572.80,192.62L572.02,191.73L571.14,189.36L570.84,188.57L570.14,189.06L565.52,192.36L564.51,192.20L562.67,190.93L562.35,190.86L562.19,190.88L561.85,191.05L561.75,191.27L561.77,192.08L561.89,192.64L561.86,193.55L562.01,194.34L561.81,195.07L561.79,195.37L561.76,195.93L561.29,198.81L561.28,199.99L561.01,202.29L561.06,202.54L561.01,203.02L564.95,203.01L569.58,198.89L566.70,195.82L572.02,193.47L572.41,193.05L572.80,192.62Z " data-iso="JOR" data-name="Jordan" data-pop="6342948.0"/><path d="M840.52,187.74L837.01,188.75L840.26,191.27L840.34,195.63L842.45,196.53L843.87,194.68L842.19,187.92L840.52,187.74Z M848.90,185.39L845.15,186.00L844.00,188.41L849.72,188.66L848.90,185.39Z M857.15,159.94L855.79,165.26L856.35,165.35L857.33,171.94L853.83,176.37L851.66,180.27L843.55,180.72L839.70,184.90L839.27,186.40L843.04,186.89L842.77,185.50L851.47,184.10L853.88,188.16L855.00,182.51L859.57,184.17L859.97,182.41L863.07,182.19L864.15,183.08L865.15,179.69L864.42,178.92L862.02,171.44L862.47,166.22L857.15,159.94Z M859.17,150.21L851.09,145.30L850.57,145.68L853.87,152.81L851.04,155.65L854.00,159.76L852.78,156.52L856.65,155.65L861.70,157.58L862.48,154.26L864.46,154.16L864.53,152.52L859.17,150.21Z " data-iso="JPN" data-name="Japan" data-pop="127078679.0"/><path d="M682.93,181.00L682.13,181.02L681.66,180.90L680.36,180.52L680.00,180.35L680.21,180.67L680.52,181.16L681.08,182.02L681.28,182.33L681.57,182.11L681.88,181.88L682.88,181.13L683.13,180.94L682.93,181.00Z " data-iso="KAS" data-name="" data-pop="6000.0"/><path d="M593.35,142.23L598.56,139.73L603.14,140.23L604.35,142.91L603.82,145.08L605.19,145.93L600.22,145.84L597.77,149.37L601.46,153.55L605.24,154.85L605.65,158.12L605.80,158.49L610.28,156.63L614.62,160.30L615.85,160.11L615.97,160.12L615.80,159.30L613.16,147.11L627.87,149.39L631.19,152.42L638.01,152.21L639.16,151.63L643.23,154.61L643.77,157.69L645.16,157.73L646.47,160.63L651.40,162.49L652.97,159.96L657.27,156.97L657.47,156.83L657.28,156.67L657.88,155.11L664.08,155.22L664.08,154.15L679.79,155.00L683.12,156.63L683.63,157.04L683.68,156.97L683.92,153.19L680.10,147.07L684.24,145.87L686.69,146.66L685.68,144.73L685.83,140.19L692.84,139.18L691.51,135.87L694.67,132.74L694.95,132.81L694.79,132.59L692.24,130.41L691.28,131.37L688.43,130.80L680.84,126.55L673.03,126.86L663.64,118.27L659.34,115.98L659.59,114.46L654.29,117.69L651.98,117.75L651.12,116.08L644.77,115.24L643.58,112.75L639.86,111.55L636.03,112.04L635.03,113.01L625.66,115.15L619.01,115.89L619.55,118.20L622.05,118.98L619.62,119.44L621.06,124.50L622.70,126.67L616.94,127.40L614.35,125.97L610.73,125.97L607.61,127.63L597.30,123.76L594.52,123.97L588.72,127.74L589.07,130.07L585.70,128.25L584.64,134.58L586.82,137.31L589.53,137.60L593.46,142.40L593.35,142.23Z " data-iso="KAZ" data-name="Kazakhstan" data-pop="15399437.0"/><path d="M566.24,288.54L565.68,289.19L563.55,291.65L562.93,292.37L562.32,293.08L562.81,294.27L565.18,299.52L565.44,302.29L562.30,307.53L562.17,311.12L562.18,311.73L562.41,311.73L573.74,320.71L578.47,324.91L578.49,324.81L581.55,318.93L582.95,317.22L585.26,314.82L585.71,314.21L584.01,311.26L583.97,298.00L586.34,294.58L586.72,293.95L586.27,293.95L583.25,292.90L579.37,295.81L575.02,295.13L572.12,292.96L568.48,292.07L566.23,288.66L566.24,288.54Z " data-iso="KEN" data-name="Kenya" data-pop="39002772.0"/><path d="M683.12,156.63L679.79,155.00L664.08,154.15L664.08,155.22L657.88,155.11L657.28,156.67L657.47,156.83L657.54,156.76L657.37,157.98L659.49,160.72L664.98,161.88L659.42,163.92L659.35,163.98L659.37,164.04L654.89,164.94L655.24,166.52L661.48,166.32L663.89,167.66L667.50,166.76L667.67,166.79L667.90,166.75L670.22,163.07L674.48,163.57L676.57,161.21L683.75,157.25L683.63,157.04L683.12,156.63Z M660.36,165.21L659.82,164.91L659.49,164.51L660.36,165.21Z M658.98,165.45L658.46,165.44L658.34,165.32L658.98,165.45Z " data-iso="KGZ" data-name="Kyrgyzstan" data-pop="5431747.0"/><path d="M786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.02,256.92L774.02,256.63L770.64,259.77L773.20,266.33L773.19,266.21L774.14,269.17L775.63,268.65L775.83,270.62L777.67,270.50L778.21,270.97L782.48,266.42L786.67,264.35L786.11,255.80L786.04,255.60Z " data-iso="KHM" data-name="Cambodia" data-pop="14494293.0"/><path d="M821.46,172.85L821.85,175.70L824.59,179.97L824.32,181.95L826.42,184.48L832.65,182.07L831.56,177.75L826.57,171.34L825.18,169.74L821.85,171.11L821.46,172.75L821.46,172.85Z " data-iso="KOR" data-name="S. Korea" data-pop="48508972.0"/><path d="M518.24,156.71L516.65,153.84L515.40,153.46L515.06,154.67L514.72,154.77L514.36,154.88L513.92,155.01L513.86,155.11L514.02,155.73L514.01,155.77L514.12,155.85L514.87,156.61L515.40,157.10L515.64,158.00L515.60,158.16L515.64,158.19L516.15,157.46L518.31,156.83L518.31,156.83L518.24,156.71Z " data-iso="KOS" data-name="Kosovo" data-pop="1804838.0"/><path d="M599.30,200.75L597.88,200.34L596.84,200.69L595.80,203.35L595.39,203.94L595.97,204.02L598.70,205.63L599.00,205.97L601.28,205.93L601.09,205.61L599.43,202.07L599.96,202.23L599.30,200.89L599.30,200.75Z " data-iso="KWT" data-name="Kuwait" data-pop="2691158.0"/><path d="M765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L785.89,255.75L783.96,256.93L781.94,258.41L779.08,256.98L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L770.83,243.29L770.82,243.31L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.56,228.43Z " data-iso="LAO" data-name="Laos" data-pop="6834942.0"/><path d="M562.45,188.23L563.62,186.83L563.11,183.88L562.20,184.05L562.23,184.35L561.39,185.42L561.36,186.20L560.34,189.33L560.24,189.61L561.12,189.63L561.35,189.48L562.26,188.41L562.33,188.35L562.45,188.23Z " data-iso="LBN" data-name="Lebanon" data-pop="4017095.0"/><path d="M431.32,281.06L428.71,280.64L428.27,278.35L426.07,277.84L425.92,277.85L425.91,277.96L425.82,278.47L422.11,283.49L422.77,284.27L424.32,285.62L429.40,290.11L433.93,292.56L434.28,292.62L433.25,285.89L432.02,285.59L431.49,281.20L431.43,281.16L431.32,281.06Z " data-iso="LBR" data-name="Liberia" data-pop="3441790.0"/><path d="M531.34,194.53L522.48,190.20L516.57,192.71L515.70,198.93L514.00,199.73L508.63,196.80L504.99,196.14L502.61,192.93L498.06,190.65L491.64,189.48L491.19,189.25L491.28,192.01L487.29,195.43L487.66,197.87L486.00,199.68L485.65,199.87L485.37,200.05L485.77,214.83L489.59,220.28L493.22,223.36L493.52,224.00L495.10,224.41L498.46,225.43L499.28,226.21L502.63,225.87L502.63,225.87L503.72,225.28L505.60,224.26L512.50,228.24L528.76,237.58L530.24,238.43L530.22,237.98L530.92,236.64L533.20,236.62L532.97,231.25L532.89,229.46L532.86,228.66L531.53,203.63L530.52,200.22L531.46,194.74L531.34,194.53Z " data-iso="LBY" data-name="Libya" data-pop="6310434.0"/><path d="M483.93,139.81L483.86,139.52L483.81,139.43L483.75,139.18L483.72,139.13L483.61,139.47L483.61,139.73L483.64,139.86L483.68,139.85L483.89,139.87L483.93,139.81Z " data-iso="LIE" data-name="Liechtenstein" data-pop="34761.0"/><path d="M703.29,273.11L702.93,279.41L704.86,286.69L709.23,284.90L709.61,282.13L706.66,276.25L703.29,273.11Z " data-iso="LKA" data-name="Sri Lanka" data-pop="21324791.0"/><path d="M512.19,111.62L512.35,111.64L512.51,111.40L512.65,110.94L512.45,111.23L512.19,111.62Z M512.32,109.15L512.42,109.85L512.96,111.42L513.08,111.67L513.08,111.69L517.42,113.12L517.19,113.82L517.32,114.58L517.45,114.75L517.58,114.62L519.34,115.47L519.48,116.09L519.51,116.16L519.71,116.23L524.81,114.90L525.16,113.14L527.26,111.89L526.91,110.49L526.90,110.34L526.76,110.32L524.27,108.87L514.85,107.86L512.28,108.99L512.32,109.15Z " data-iso="LTU" data-name="Lithuania" data-pop="3555179.0"/><path d="M474.06,129.21L473.41,129.35L473.05,130.30L473.32,131.18L473.25,131.24L473.34,131.35L474.03,131.53L474.15,131.42L474.58,131.45L474.76,131.53L474.77,131.33L474.07,129.52L474.06,129.31L474.08,129.22L474.06,129.21Z " data-iso="LUX" data-name="Luxembourg" data-pop="491775.0"/><path d="M527.89,104.15L523.78,103.01L521.93,102.37L520.00,103.00L519.98,103.29L518.66,105.99L513.46,103.99L512.13,108.36L512.28,108.99L514.85,107.86L524.27,108.87L526.76,110.32L526.90,110.34L526.96,110.30L528.02,109.79L528.70,109.88L530.63,108.74L530.71,108.75L530.75,108.59L529.15,105.96L529.33,105.33L528.25,104.15L527.95,104.14L527.89,104.15Z " data-iso="LVA" data-name="Latvia" data-pop="2231503.0"/><path d="M799.69,228.74L799.73,228.72L799.86,228.65L799.86,228.65L799.78,228.56L799.69,228.58L799.67,228.67L799.67,228.74L799.69,228.74Z " data-iso="MAC" data-name="Macau" data-pop="559846.0"/><path d="M266.06,243.42L266.02,243.39L265.90,243.38L265.74,243.47L265.71,243.55L266.05,243.55L266.06,243.42Z " data-iso="MAF" data-name="St. Martin" data-pop="29820.0"/><path d="M406.20,231.53L413.36,230.60L415.97,223.16L420.08,219.50L422.55,214.70L425.00,211.44L428.28,212.02L431.47,210.94L431.32,209.12L431.72,209.12L431.74,208.24L431.81,205.40L438.33,201.38L441.91,200.48L445.81,197.41L447.44,194.56L453.81,193.18L451.10,182.35L450.51,182.28L444.98,182.14L441.56,179.63L440.39,179.90L437.86,185.84L433.29,188.56L429.12,194.54L429.00,200.30L425.91,204.51L421.94,207.42L419.06,208.19L417.32,211.94L414.33,214.49L412.00,220.54L409.79,222.82L406.47,229.81L406.20,231.53Z " data-iso="MAR" data-name="Morocco" data-pop="34859364.0"/><path d="M478.36,151.51L478.35,151.47L478.29,151.43L478.19,151.57L478.36,151.51Z " data-iso="MCO" data-name="Monaco" data-pop="32965.0"/><path d="M535.93,145.39L539.94,140.84L537.24,136.71L533.47,135.13L530.30,135.56L530.26,135.68L530.52,135.66L534.78,140.15L535.07,140.80L535.63,145.29L535.80,145.51L535.93,145.39Z " data-iso="MDA" data-name="Moldova" data-pop="4320748.0"/><path d="M609.34,352.57L608.38,351.31L606.35,356.12L604.35,356.80L603.81,360.49L592.91,366.81L591.36,370.33L591.34,373.54L592.31,377.63L591.82,380.20L588.19,390.04L588.97,392.35L588.61,395.33L589.45,397.62L593.67,399.66L600.61,392.72L607.50,373.71L609.36,363.37L611.21,361.53L610.98,358.32L609.34,352.57Z " data-iso="MDG" data-name="Madagascar" data-pop="20653556.0"/><path d="M114.30,192.26L115.52,197.80L115.30,199.20L117.88,203.95L117.94,208.21L115.54,208.45L118.78,212.48L122.32,215.39L121.72,219.24L125.87,223.68L126.65,226.27L128.60,224.13L125.55,221.04L125.89,219.15L125.02,214.62L121.91,205.01L119.42,198.87L120.05,193.86L124.81,196.45L124.21,197.84L128.76,208.62L129.08,210.90L131.54,213.80L130.64,214.96L136.03,222.21L139.55,232.61L137.77,235.24L143.31,242.63L147.51,243.90L150.61,246.66L157.26,249.87L164.02,252.06L168.47,249.46L171.18,250.77L175.61,256.09L175.69,256.17L177.84,250.71L181.54,250.71L180.14,247.47L180.80,245.16L185.81,244.46L186.45,244.46L186.49,244.15L188.69,242.20L189.39,242.10L189.47,241.95L190.55,242.82L195.36,232.50L193.40,231.34L184.46,233.00L182.41,238.95L179.34,242.20L178.59,241.51L170.26,243.17L165.58,238.98L163.35,232.66L162.80,227.20L164.56,220.86L167.06,215.96L167.27,215.21L162.02,213.64L157.81,201.62L154.17,201.58L151.58,204.28L148.15,198.59L144.81,194.33L139.54,194.70L139.18,195.91L130.86,195.93L122.24,192.20L121.23,190.97L114.32,191.58L114.30,192.26Z " data-iso="MEX" data-name="Mexico" data-pop="111211789.0"/><path d="M520.42,156.57L518.80,156.76L518.47,156.85L518.31,156.83L518.31,156.83L516.15,157.46L515.64,158.19L515.60,158.16L515.57,158.20L515.37,159.41L516.98,161.72L517.01,161.80L517.39,161.78L519.29,161.44L522.24,160.07L522.40,160.07L522.43,160.00L522.42,159.11L522.54,158.72L520.97,157.12L520.49,156.60L520.42,156.57Z " data-iso="MKD" data-name="Macedonia" data-pop="2066718.0"/><path d="M469.41,239.91L467.25,237.38L444.01,219.37L443.10,218.69L442.05,218.69L437.87,219.51L440.73,252.77L429.54,252.77L428.79,252.32L423.94,253.75L421.92,252.71L420.57,255.46L420.03,255.23L420.31,255.81L422.67,261.91L422.67,263.57L422.65,263.84L422.56,263.93L423.03,265.27L430.51,265.56L433.06,271.61L433.01,271.85L433.10,271.85L438.33,269.85L438.39,271.50L440.49,270.86L440.59,270.91L440.64,270.71L441.33,265.90L444.00,263.52L444.84,260.61L447.44,260.70L447.61,259.35L455.23,254.38L457.57,254.60L458.21,254.86L458.25,254.68L461.52,253.57L468.29,252.82L470.11,249.68L470.38,240.33L470.37,239.70L469.41,239.91Z " data-iso="MLI" data-name="Mali" data-pop="12666987.0"/><path d="M746.58,207.10L745.79,209.16L741.33,212.93L740.62,217.89L741.20,218.49L739.89,222.61L738.16,222.31L738.29,228.71L736.93,229.41L736.78,229.53L736.83,229.66L737.27,232.07L736.71,233.78L736.92,234.05L739.19,235.27L745.27,245.34L744.79,250.51L746.11,249.13L746.25,251.31L753.39,247.16L755.96,253.00L756.32,255.05L760.51,268.00L760.56,271.80L760.70,271.75L763.00,266.07L760.36,258.32L757.33,253.82L758.38,253.10L758.35,249.87L753.29,242.03L754.12,239.26L760.18,235.26L760.58,235.49L760.57,235.29L761.53,233.45L761.42,233.32L762.77,231.35L762.88,231.00L762.90,230.95L759.14,230.31L754.35,223.21L750.77,222.67L750.05,220.50L752.09,212.98L751.06,209.42L748.80,207.22L748.67,207.12L748.15,206.60L747.79,206.60L746.65,206.97L746.58,207.10Z " data-iso="MMR" data-name="Myanmar" data-pop="48137741.0"/><path d="M511.22,152.27L509.83,154.06L509.34,154.27L509.47,155.71L509.42,155.72L509.44,155.85L509.56,156.00L509.68,156.17L509.79,156.19L510.02,156.37L510.79,156.82L511.69,157.89L512.15,158.18L512.83,155.48L513.08,155.56L513.96,155.76L514.01,155.77L514.02,155.73L513.86,155.11L513.92,155.01L514.36,154.88L514.72,154.77L514.72,154.68L513.06,153.77L512.74,153.58L511.30,152.32L511.30,152.27L511.22,152.27Z " data-iso="MNE" data-name="Montenegro" data-pop="672180.0"/><path d="M773.17,130.07L765.64,128.93L761.66,131.63L757.25,132.35L752.43,131.98L745.18,128.50L738.98,129.05L733.18,127.62L731.61,125.11L721.73,122.41L720.44,126.02L722.71,129.37L721.71,129.87L713.36,129.56L708.08,127.38L701.05,129.28L698.99,131.46L696.19,132.54L696.18,132.54L696.27,132.70L697.47,134.65L707.08,140.06L709.06,143.21L708.90,145.25L713.74,146.97L719.90,148.35L722.78,149.71L730.76,154.91L737.42,155.69L754.98,158.52L758.36,156.68L765.65,156.09L767.87,154.96L770.13,150.86L770.70,147.39L773.73,147.99L775.31,145.81L778.38,145.48L781.31,141.52L784.88,140.91L787.86,141.22L779.73,136.62L775.15,137.67L773.41,130.73L773.41,130.25L773.17,130.07Z " data-iso="MNG" data-name="Mongolia" data-pop="3041142.0"/><path d="M555.60,404.22L554.92,401.25L558.88,397.88L562.97,395.99L564.33,391.11L562.79,379.43L568.51,374.36L571.65,370.97L575.93,369.07L578.97,366.90L581.86,361.51L581.37,354.54L581.94,345.90L581.79,345.53L575.62,348.92L571.68,349.90L565.45,349.50L564.77,349.51L564.36,349.50L562.86,351.78L565.35,357.81L566.70,365.19L565.00,368.23L562.46,366.22L562.01,364.73L562.48,359.64L559.95,359.73L559.20,358.33L559.08,358.23L558.41,358.48L553.92,360.24L551.99,360.88L550.26,363.57L550.29,364.06L550.27,364.63L556.98,367.45L557.89,369.82L557.05,380.46L552.28,387.93L551.84,388.30L551.84,388.49L553.43,396.34L552.97,400.82L553.01,401.08L553.07,401.13L553.28,402.00L553.21,402.24L553.34,403.10L553.28,404.25L553.54,404.23L553.99,404.33L555.26,404.29L555.59,404.28L555.60,404.22Z M563.97,351.42L563.86,351.05L563.97,351.03L563.97,351.42Z M563.74,351.07L563.44,351.09L563.48,350.96L563.74,351.07Z " data-iso="MOZ" data-name="Mozambique" data-pop="21669278.0"/><path d="M443.10,218.69L442.43,218.18L439.46,216.02L438.90,215.62L432.25,210.85L431.69,210.45L431.68,211.05L431.61,215.09L423.76,215.09L421.62,216.01L421.40,224.18L406.31,231.86L406.00,233.73L406.18,232.89L407.86,234.28L408.81,244.20L407.15,249.94L407.11,251.54L408.07,249.06L413.27,248.62L416.66,250.75L419.97,255.20L420.03,255.23L420.57,255.46L421.92,252.71L423.94,253.75L428.79,252.32L429.54,252.77L440.73,252.77L437.87,219.51L442.05,218.69L443.10,218.69Z " data-iso="MRT" data-name="Mauritania" data-pop="3129486.0"/><path d="M563.97,351.42L563.97,351.03L563.86,351.05L563.97,351.42Z M563.74,351.07L563.48,350.96L563.44,351.09L563.74,351.07Z M558.73,341.75L558.74,341.85L560.27,346.67L559.74,346.92L559.39,353.01L557.79,356.57L558.93,357.97L559.08,358.23L559.20,358.33L559.95,359.73L562.48,359.64L562.01,364.73L562.46,366.22L565.00,368.23L566.70,365.19L565.35,357.81L562.86,351.78L564.36,349.50L564.77,349.51L564.75,349.39L563.02,343.00L562.03,342.07L558.78,341.72L558.73,341.75Z " data-iso="MWI" data-name="Malawi" data-pop="14268711.0"/><path d="M820.68,292.97L820.51,292.93L820.37,292.98L820.39,293.14L820.34,293.27L820.64,293.28L821.07,293.21L820.68,292.97Z M766.08,285.57L768.15,293.99L772.72,300.13L776.49,302.63L779.26,303.20L776.97,298.25L776.59,292.47L775.63,289.36L772.62,286.00L772.08,285.86L768.72,287.55L768.94,286.14L765.94,285.15L766.08,285.57Z M813.15,292.51L812.47,292.48L812.15,290.66L811.63,292.61L810.87,293.70L809.23,291.75L809.20,291.75L806.54,296.22L802.23,297.96L800.77,303.17L796.03,301.41L795.82,300.91L797.13,303.74L798.91,305.02L804.63,302.59L808.37,303.65L811.78,301.39L814.27,293.18L820.11,293.26L820.20,293.16L823.22,292.23L825.10,288.99L817.31,283.33L813.22,290.54L813.15,292.51Z " data-iso="MYS" data-name="Malaysia" data-pop="25715819.0"/><path d="M527.70,371.43L522.50,372.51L514.79,371.67L513.52,370.35L500.20,370.39L497.44,368.81L493.29,369.82L493.21,370.60L493.34,372.51L499.72,386.02L500.73,387.54L501.41,396.01L503.22,406.22L506.02,410.35L506.34,410.64L508.23,408.53L509.30,410.93L514.34,411.80L516.85,410.04L517.37,398.34L517.43,396.83L517.43,396.74L517.74,388.76L520.80,386.86L521.11,378.76L522.05,373.61L528.13,372.51L530.88,372.78L534.22,371.75L534.35,371.77L533.86,371.20L532.79,370.78L529.32,371.07L528.66,371.22L527.70,371.43Z " data-iso="NAM" data-name="Namibia" data-pop="2108665.0"/><path d="M954.59,380.56L954.78,382.66L956.45,385.15L960.81,388.02L954.59,380.56Z " data-iso="NCL" data-name="New Caledonia" data-pop="227436.0"/><path d="M502.63,225.87L499.28,226.21L498.46,225.43L495.10,224.41L493.52,224.00L491.99,225.09L480.17,233.49L478.70,234.94L471.03,239.55L470.37,239.70L470.38,240.33L470.11,249.68L468.29,252.82L461.52,253.57L458.25,254.68L458.21,254.86L458.17,255.03L460.91,261.70L462.34,263.01L464.73,265.48L464.87,265.65L464.94,265.29L465.12,264.34L468.38,266.04L468.57,266.37L468.75,266.24L470.24,260.07L474.35,258.58L477.83,260.40L481.39,260.50L484.35,262.03L487.00,262.38L489.61,260.52L495.85,261.01L498.63,259.19L499.17,259.18L498.84,257.65L501.38,251.86L504.67,247.71L505.21,236.97L503.02,227.94L502.63,225.87L502.63,225.87Z " data-iso="NER" data-name="Niger" data-pop="15306252.0"/><path d="M468.57,266.37L468.45,266.60L469.17,270.88L467.11,275.34L466.08,275.84L465.89,285.41L466.09,285.39L470.26,285.26L474.78,291.56L476.90,292.54L483.89,291.17L483.93,291.17L485.27,287.02L489.25,283.60L491.68,284.92L494.53,281.05L495.70,277.46L498.18,273.70L499.60,269.31L502.20,266.25L500.93,263.09L500.61,261.42L500.20,260.78L499.67,259.95L499.17,259.18L498.63,259.19L495.85,261.01L489.61,260.52L487.00,262.38L484.35,262.03L481.39,260.50L477.83,260.40L474.35,258.58L470.24,260.07L468.75,266.24L468.57,266.37Z " data-iso="NGA" data-name="Nigeria" data-pop="149229090.0"/><path d="M190.10,261.88L191.38,264.40L192.39,266.22L194.43,268.54L194.43,268.64L197.83,268.70L199.94,269.81L200.84,269.16L200.62,269.10L201.81,261.91L202.47,258.14L203.49,254.70L203.59,254.57L202.43,254.63L192.23,258.97L192.15,260.58L190.12,261.78L190.10,261.88Z " data-iso="NIC" data-name="Nicaragua" data-pop="5891199.0"/><path d="M468.58,124.95L468.30,124.83L467.96,124.97L466.73,124.84L466.53,124.89L468.39,125.34L468.58,124.95Z M472.87,126.97L473.02,127.02L473.15,127.04L473.68,127.05L473.82,126.52L474.15,124.51L473.46,123.58L476.62,118.39L476.25,118.33L470.99,119.48L467.80,124.79L468.65,124.81L469.97,124.74L472.87,126.97L472.87,126.97Z " data-iso="NLD" data-name="Netherlands" data-pop="16715999.0"/><path d="M486.54,99.17L489.08,95.67L489.77,91.63L487.86,90.45L487.10,85.42L491.37,81.56L492.53,76.50L496.72,73.33L497.30,71.05L505.58,67.59L505.89,67.58L506.00,67.48L508.12,66.87L511.81,68.68L516.25,68.92L522.31,64.48L525.46,65.66L525.26,67.50L525.45,67.62L525.80,67.54L526.27,66.78L529.40,66.09L529.41,65.32L529.05,65.28L524.33,64.23L529.26,63.85L522.91,61.76L519.08,63.44L519.17,62.12L513.86,62.00L511.82,64.72L510.07,63.55L508.68,65.17L504.79,64.83L503.43,66.40L502.26,65.43L496.73,68.82L497.86,69.61L494.16,70.42L492.76,73.21L488.90,75.57L485.84,80.61L481.03,84.11L482.21,85.11L478.68,85.35L473.87,88.24L469.96,89.87L470.89,91.20L476.45,92.20L475.06,92.79L470.32,92.54L471.91,95.62L470.99,97.18L472.54,99.09L471.81,100.53L475.51,102.50L479.36,101.58L484.06,98.37L486.53,99.07L486.54,99.17Z M503.45,40.23L500.85,40.45L503.11,42.83L506.35,43.15L507.01,41.83L503.45,40.23Z M492.63,36.86L491.14,36.60L492.11,39.24L488.60,37.21L482.03,37.07L480.66,38.39L483.33,40.21L493.17,40.06L493.29,40.88L487.66,43.13L493.33,45.58L496.99,41.74L502.91,39.86L497.58,38.72L492.63,36.86Z M501.02,36.00L505.83,38.58L509.63,38.24L514.17,36.47L505.68,36.15L505.05,35.45L501.02,36.00Z " data-iso="NOR" data-name="Norway" data-pop="4676305.0"/><path d="M719.21,208.30L717.08,208.52L711.16,206.89L707.20,204.60L706.59,203.50L697.83,199.48L696.94,200.33L696.76,200.10L694.84,204.75L696.11,205.68L705.49,210.15L708.25,209.94L711.40,212.03L717.46,213.52L720.16,211.74L719.48,208.35L719.21,208.30Z " data-iso="NPL" data-name="Nepal" data-pop="28563377.0"/><path d="M947.57,456.03L947.20,453.69L932.56,464.24L927.79,465.97L918.08,472.60L921.50,473.96L925.44,474.66L936.25,466.16L941.27,465.28L949.83,457.67L951.52,455.11L947.57,456.03Z M961.00,433.35L960.63,440.55L961.66,441.06L958.12,445.86L953.63,449.25L955.89,451.31L955.21,453.28L952.29,456.58L954.55,456.50L962.48,450.31L964.62,448.20L968.22,446.30L970.30,442.78L966.24,444.28L961.55,440.18L962.28,439.36L962.67,433.79L961.00,433.35Z " data-iso="NZL" data-name="New Zealand" data-pop="4213418.0"/><path d="M623.74,226.92L624.01,227.33L625.37,229.44L624.66,233.38L622.73,237.18L615.67,240.06L615.26,240.23L615.42,240.58L618.01,246.31L618.24,246.42L619.27,248.64L619.89,248.37L624.32,247.51L626.62,244.21L628.93,243.84L637.79,227.62L636.54,227.07L626.87,219.69L626.46,218.74L624.73,219.14L624.12,222.47L623.71,226.39L623.74,226.92Z M625.08,214.85L625.43,216.19L625.57,216.35L625.91,216.33L625.91,216.12L626.06,214.68L625.27,214.33L625.08,214.85Z " data-iso="OMN" data-name="Oman" data-pop="3418085.0"/><path d="M679.87,180.29L678.38,179.81L676.65,176.98L672.57,175.42L672.41,175.47L672.13,175.61L664.06,179.36L665.15,181.07L662.88,186.49L662.92,188.58L661.41,189.57L660.96,193.73L654.76,196.02L653.07,197.80L653.15,201.28L647.26,202.88L638.56,201.59L637.37,201.20L638.05,201.90L641.18,205.92L643.99,207.88L645.65,210.57L644.83,212.76L642.14,214.48L641.93,217.94L641.88,218.00L655.91,216.51L659.57,221.64L662.27,222.99L662.29,222.78L663.98,221.15L669.16,220.76L670.53,219.79L669.51,217.93L664.67,212.18L667.47,208.11L670.23,208.35L675.82,199.89L676.98,196.62L677.34,191.84L673.85,189.04L673.57,183.57L677.88,184.51L681.26,182.50L681.28,182.33L681.08,182.02L680.52,181.16L680.21,180.67L680.00,180.35L679.87,180.29Z " data-iso="PAK" data-name="Pakistan" data-pop="176242949.0"/><path d="M203.82,273.95L202.59,275.12L203.14,276.18L202.54,279.33L202.62,279.23L204.58,278.76L209.20,282.35L211.26,281.37L210.01,278.82L214.39,276.02L217.26,278.23L217.63,282.24L217.71,282.34L219.94,279.82L219.59,277.23L218.64,276.41L213.68,273.98L205.18,276.24L204.01,274.14L203.82,273.95Z " data-iso="PAN" data-name="Panama" data-pop="3360474.0"/><path d="M241.64,323.01L240.03,321.96L241.39,317.80L236.75,316.09L234.18,316.82L225.39,308.30L225.21,308.53L225.03,308.66L225.32,311.55L224.35,313.62L220.97,317.30L217.12,319.03L214.94,324.44L209.46,323.17L209.78,320.25L209.24,320.63L207.24,325.57L208.30,328.27L207.55,329.78L210.82,331.90L214.46,337.47L218.95,346.86L219.37,348.47L224.43,356.44L224.29,358.65L228.32,363.23L235.78,367.54L243.39,373.50L243.64,373.75L245.30,372.84L245.38,372.47L245.88,370.98L246.09,370.74L246.09,370.73L245.99,360.32L246.98,358.79L246.23,357.04L247.11,352.82L244.44,348.05L244.01,347.27L243.72,347.28L240.76,347.48L240.52,343.24L235.82,343.88L233.75,341.76L229.77,335.14L233.45,326.25L238.70,323.69L241.79,323.51L241.80,323.28L241.64,323.01Z " data-iso="PER" data-name="Peru" data-pop="29546963.0"/><path d="M844.86,274.86L842.92,273.62L843.40,275.96L836.33,277.74L832.93,282.44L833.53,283.46L834.91,280.43L839.43,281.09L839.48,282.75L843.83,288.16L844.74,286.80L843.70,284.26L844.75,282.01L846.33,284.11L847.17,282.53L844.86,274.86Z M836.11,275.78L836.69,270.35L835.01,269.27L834.92,272.12L833.69,273.53L836.11,275.78Z M833.23,266.66L831.87,266.27L832.02,268.93L834.38,269.49L835.18,268.16L833.23,266.66Z M825.25,241.59L824.10,241.84L823.61,245.10L824.54,250.17L822.78,249.80L824.34,255.08L825.86,254.97L830.96,258.88L832.86,261.01L832.50,258.46L835.02,261.35L837.65,261.58L833.40,257.45L831.20,257.73L828.29,252.72L830.50,246.94L828.72,242.00L825.25,241.59Z " data-iso="PHL" data-name="Philippines" data-pop="97976603.0"/><path d="M925.99,323.49L922.78,327.52L915.00,327.69L914.84,328.74L918.56,330.61L921.84,330.11L925.56,328.02L925.99,323.49Z M892.48,317.47L892.48,317.48L892.48,317.72L891.44,331.76L891.51,332.58L890.95,340.72L891.40,341.09L898.28,339.08L899.16,336.72L903.71,336.01L906.87,336.99L910.85,343.56L919.53,346.15L917.94,343.92L918.50,342.76L912.15,336.28L912.91,330.91L906.74,327.44L906.93,325.37L900.20,320.40L892.57,317.47L892.48,317.47Z M929.14,325.14L929.42,322.81L926.52,319.76L922.62,317.93L928.34,322.90L929.14,325.14Z " data-iso="PNG" data-name="Papua New Guinea" data-pop="6057263.0"/><path d="M508.98,114.48L504.98,113.13L501.06,114.08L495.14,116.18L495.04,116.12L495.01,116.23L495.07,116.39L495.43,116.43L495.99,116.55L495.84,117.07L495.22,116.87L496.94,122.48L496.60,123.34L497.40,126.63L497.39,126.68L497.62,126.67L498.64,126.60L502.75,129.24L503.35,128.20L507.65,129.98L508.60,131.23L508.62,131.33L508.91,131.38L512.81,131.77L516.27,131.68L518.65,132.82L518.83,132.85L518.94,132.84L519.68,132.89L521.52,128.34L520.97,124.65L520.80,124.41L520.58,124.07L519.42,121.88L520.98,120.49L519.95,117.31L519.51,116.16L519.48,116.09L519.34,115.47L517.58,114.62L517.45,114.75L517.36,114.77L515.87,114.74L509.09,114.40L508.98,114.48Z " data-iso="POL" data-name="Poland" data-pop="38482919.0"/><path d="M811.64,164.84L815.17,166.52L815.59,168.86L817.01,169.52L815.37,171.51L821.42,172.72L821.46,172.75L821.85,171.11L825.18,169.74L824.96,169.54L821.47,167.65L821.07,165.61L825.38,161.51L824.11,159.15L825.63,156.73L825.72,156.64L825.59,156.55L825.05,156.03L824.86,155.81L824.72,155.69L822.34,154.95L821.66,156.93L818.93,158.07L820.11,159.89L816.97,159.29L811.59,164.81L811.64,164.84Z " data-iso="PRK" data-name="N. Korea" data-pop="22665345.0"/><path d="M432.48,158.31L430.95,167.00L432.30,171.31L431.61,175.44L435.96,174.95L436.21,174.91L436.30,165.97L437.87,165.05L437.71,157.89L432.78,157.92L432.48,158.31Z " data-iso="PRT" data-name="Portugal" data-pop="10707924.0"/><path d="M281.47,379.68L278.35,377.12L275.58,377.16L270.39,378.41L268.73,387.52L268.68,387.70L268.77,387.80L271.64,391.10L274.81,393.53L284.41,398.13L285.20,399.79L282.89,405.53L289.38,406.58L291.71,406.32L294.32,401.25L294.19,399.71L294.15,399.19L294.70,394.21L290.63,392.54L290.25,390.79L282.79,387.25L281.56,380.53L281.47,380.27L281.47,379.68Z " data-iso="PRY" data-name="Paraguay" data-pop="6995655.0"/><path d="M611.63,219.94L610.65,214.52L609.43,217.23L609.88,219.21L609.80,219.43L610.00,219.82L611.26,220.08L611.63,219.94Z " data-iso="QAT" data-name="Qatar" data-pop="833285.0"/><path d="M535.63,145.29L535.07,140.80L534.78,140.15L530.52,135.66L530.26,135.68L530.14,135.72L525.75,137.57L523.72,136.91L520.24,136.71L520.15,136.77L520.09,136.85L517.90,138.31L515.66,142.73L513.60,143.11L513.50,143.20L513.68,143.40L516.25,146.07L518.08,148.22L520.86,149.75L520.91,149.78L521.12,149.93L531.53,150.33L532.51,150.11L537.52,151.54L537.51,151.34L538.04,147.77L537.90,147.38L540.00,146.42L540.02,146.18L538.11,145.97L536.52,146.07L536.13,145.87L535.80,145.51L535.63,145.29Z " data-iso="ROU" data-name="Romania" data-pop="22215421.0"/><path d="M833.06,114.62L834.34,117.97L833.14,118.02L837.42,124.03L839.27,125.43L849.88,143.27L850.67,141.09L854.15,143.48L853.86,142.31L847.74,136.98L846.35,132.41L849.10,132.38L833.06,114.62Z M512.35,111.64L512.19,111.62L512.07,111.80L511.00,112.74L509.70,113.81L509.47,114.11L509.09,114.40L515.87,114.74L517.36,114.77L517.45,114.75L517.32,114.58L517.19,113.82L517.42,113.12L513.08,111.69L513.10,112.22L511.51,112.64L512.12,111.96L512.35,111.64Z M35.73,67.87L35.42,67.74L20.71,79.82L26.84,76.80L26.34,78.51L30.83,78.31L36.12,81.89L36.89,80.54L39.54,79.88L41.29,78.10L43.85,78.43L48.16,75.79L47.23,74.02L43.80,73.48L40.71,75.55L38.75,75.00L41.49,71.72L37.57,69.75L35.73,67.87Z M48.09,59.97L45.36,60.09L43.21,61.70L49.85,61.03L48.09,59.97Z M582.05,54.91L578.79,54.93L575.65,59.99L579.81,60.50L580.57,62.06L585.09,62.68L590.53,62.49L584.17,59.11L584.68,55.22L582.05,54.91Z M780.97,49.02L780.13,49.51L786.25,50.63L790.59,49.62L780.97,49.02Z M764.59,47.74L760.90,46.72L759.83,49.40L763.64,50.64L766.79,50.17L773.27,50.57L770.44,48.78L773.83,49.74L776.84,48.42L766.70,46.88L764.59,47.74Z M605.46,46.60L605.88,44.69L599.66,45.83L591.84,46.44L584.51,49.10L580.83,49.71L581.49,50.64L579.18,53.10L585.67,54.74L589.00,50.94L594.21,48.86L605.46,46.60Z M529.41,65.32L529.40,66.09L526.27,66.78L525.80,67.54L525.45,67.62L525.31,67.66L524.91,69.66L527.08,74.27L529.61,76.83L529.46,79.90L531.33,84.16L534.39,85.69L534.33,88.51L527.51,94.27L528.46,94.16L530.91,95.39L528.71,97.47L528.62,97.70L527.53,100.16L528.30,103.24L527.94,104.06L527.95,104.14L528.25,104.15L529.33,105.33L529.15,105.96L530.75,108.59L530.71,108.75L531.11,109.04L534.42,110.28L538.20,110.66L538.31,111.83L541.58,116.66L542.59,119.04L542.32,122.33L542.35,122.42L542.40,122.42L547.47,121.58L549.43,125.35L553.82,128.45L554.97,128.23L560.48,129.92L560.97,129.46L566.49,132.23L565.49,133.08L566.69,135.65L563.85,137.15L562.61,139.75L563.31,139.46L561.82,141.71L563.95,143.26L559.25,146.44L569.25,152.49L569.57,152.68L571.38,152.27L574.18,153.39L586.27,156.02L588.54,158.05L588.60,158.10L588.92,158.17L593.07,160.51L594.68,158.26L594.37,158.05L590.79,154.04L587.91,149.14L593.53,142.56L593.46,142.40L589.53,137.60L586.82,137.31L584.64,134.58L585.70,128.25L589.07,130.07L588.72,127.74L594.52,123.97L597.30,123.76L607.61,127.63L610.73,125.97L614.35,125.97L616.94,127.40L622.70,126.67L621.06,124.50L619.62,119.44L622.05,118.98L619.55,118.20L619.01,115.89L625.66,115.15L635.03,113.01L636.03,112.04L639.86,111.55L643.58,112.75L644.77,115.24L651.12,116.08L651.98,117.75L654.29,117.69L659.59,114.46L659.34,115.98L663.64,118.27L673.03,126.86L680.84,126.55L688.43,130.80L691.28,131.37L692.24,130.41L694.79,132.59L694.95,132.81L695.22,132.84L695.36,132.79L695.42,132.68L696.04,132.53L696.18,132.54L696.19,132.54L698.99,131.46L701.05,129.28L708.08,127.38L713.36,129.56L721.71,129.87L722.71,129.37L720.44,126.02L721.73,122.41L731.61,125.11L733.18,127.62L738.98,129.05L745.18,128.50L752.43,131.98L757.25,132.35L761.66,131.63L765.64,128.93L773.17,130.07L773.41,130.25L774.12,130.55L777.21,131.32L779.92,129.41L779.00,128.24L779.09,124.13L779.99,122.85L777.60,118.76L781.27,117.70L790.99,119.20L796.35,123.51L803.95,130.95L810.18,132.41L816.53,137.66L822.46,136.24L826.78,141.83L826.72,146.88L823.00,147.15L825.69,154.32L824.97,155.70L824.86,155.81L825.05,156.03L825.59,156.55L825.72,156.64L825.80,156.55L831.98,155.24L836.00,152.30L838.98,142.70L839.27,133.12L836.18,127.76L834.92,124.06L835.38,123.03L831.40,119.21L832.11,118.35L825.31,115.02L823.86,117.41L817.04,114.06L812.52,113.48L815.05,109.31L815.88,106.00L818.30,103.19L818.10,101.20L821.16,98.07L827.04,97.93L828.59,98.64L833.90,97.93L835.94,98.36L836.40,96.77L839.61,97.46L843.24,99.70L848.26,98.55L847.99,96.56L849.44,90.59L854.21,89.83L857.00,90.07L857.64,91.73L860.39,93.94L863.85,90.22L862.21,87.78L864.02,87.32L867.66,92.69L864.19,98.87L864.52,99.93L860.47,103.41L861.41,106.90L864.09,111.41L878.95,126.30L880.05,121.72L879.23,120.62L879.27,115.93L880.80,113.93L882.92,113.41L879.78,110.91L879.65,108.35L871.23,96.98L871.34,95.88L877.09,95.44L878.03,96.51L881.38,94.09L884.80,94.59L888.19,96.13L887.87,94.32L890.56,90.46L895.12,88.44L895.60,87.44L901.63,88.41L895.88,84.43L894.38,79.82L879.68,67.74L866.25,64.96L853.26,64.35L854.26,65.79L858.34,67.55L858.06,68.22L851.21,66.87L848.53,65.49L837.73,65.53L835.01,66.54L829.11,65.06L826.75,62.86L821.17,61.57L816.05,61.40L806.92,61.73L804.21,60.57L794.84,57.81L792.55,57.72L790.03,58.90L784.47,56.84L774.07,57.36L776.61,60.36L767.75,59.87L765.10,60.56L760.18,58.94L759.85,62.44L755.88,61.33L749.92,58.47L747.07,55.04L737.27,53.74L735.32,55.90L724.25,55.09L723.37,54.09L718.76,53.85L712.51,54.34L711.57,53.75L703.14,53.49L703.93,54.49L700.37,55.30L697.58,54.84L700.11,53.79L708.07,49.24L699.48,45.37L690.25,44.71L686.07,43.45L680.07,42.80L676.77,43.97L677.29,45.79L675.81,47.18L672.88,46.59L667.65,47.47L667.20,46.95L655.78,48.40L651.20,49.70L649.13,52.01L651.28,53.22L638.43,54.16L643.42,57.77L647.86,59.23L651.11,63.03L649.28,63.81L648.80,61.99L646.84,61.69L647.91,59.70L635.78,57.57L631.76,58.71L632.20,59.92L639.57,61.68L631.43,60.89L629.22,58.85L628.80,64.14L631.69,67.25L635.38,66.98L639.79,67.98L641.66,69.94L640.50,71.41L636.87,67.75L632.82,68.44L634.82,71.45L633.70,73.82L628.31,75.76L629.94,72.00L625.24,62.21L622.25,60.33L622.42,56.70L614.72,55.85L613.16,60.06L611.34,62.22L618.91,67.94L618.86,69.77L614.84,68.07L605.20,65.65L599.51,65.12L598.04,65.71L600.44,67.73L596.82,69.38L595.70,67.68L592.68,68.78L587.06,69.59L585.09,67.79L581.38,68.50L575.62,70.53L570.99,74.02L569.17,74.34L564.37,72.34L568.03,70.82L565.66,69.27L559.68,68.88L561.90,69.96L563.73,76.88L562.12,75.91L556.43,76.84L555.36,80.03L546.31,80.22L550.55,83.34L549.78,83.51L542.27,80.66L540.82,78.79L541.11,77.05L538.14,75.91L536.39,74.09L542.76,75.67L550.56,76.69L556.15,74.07L554.72,71.61L540.09,66.85L531.89,64.81L529.84,65.36L529.41,65.32Z M674.35,38.52L671.80,38.22L670.68,40.91L673.36,41.43L681.52,40.49L680.31,39.65L674.35,38.52Z M661.00,36.22L655.56,36.38L653.43,37.55L659.82,39.15L666.91,39.65L667.00,37.18L661.00,36.22Z M656.13,33.97L649.24,34.18L648.14,35.95L653.46,36.60L659.74,36.02L656.13,33.97Z " data-iso="RUS" data-name="Russia" data-pop="140041247.0"/><path d="M551.58,311.96L551.12,312.13L548.92,313.10L548.82,313.11L548.70,313.19L547.43,315.99L546.58,316.89L546.78,317.73L547.06,317.86L547.11,317.67L549.17,318.13L550.39,316.76L551.74,316.71L551.82,316.72L551.94,316.71L552.75,316.24L552.63,313.73L551.60,312.02L551.70,311.96L551.58,311.96Z " data-iso="RWA" data-name="Rwanda" data-pop="10473282.0"/><path d="M431.71,209.72L431.72,209.12L431.32,209.12L431.47,210.94L428.28,212.02L425.00,211.44L422.55,214.70L420.08,219.50L415.97,223.16L413.36,230.60L406.20,231.53L406.18,231.68L405.85,233.55L406.00,233.73L406.31,231.86L421.40,224.18L421.62,216.01L423.76,215.09L431.61,215.09L431.68,211.05L431.69,210.45L431.71,209.72Z " data-iso="SAH" data-name="W. Sahara" data-pop="-99.0"/><path d="M572.41,193.05L572.02,193.47L566.70,195.82L569.58,198.89L564.95,203.01L561.01,203.02L560.75,205.29L560.69,207.41L562.08,207.76L568.74,217.62L570.20,221.22L578.27,235.57L581.57,238.45L584.47,244.21L587.94,249.35L587.99,249.63L588.97,246.09L598.49,246.55L602.17,246.25L606.46,241.71L614.55,240.34L615.26,240.23L615.67,240.06L622.73,237.18L624.66,233.38L625.37,229.44L624.01,227.33L623.74,226.92L623.57,227.21L615.74,226.10L612.43,221.98L612.28,221.23L612.18,221.23L611.49,221.04L611.62,220.55L611.49,220.24L611.26,220.08L610.00,219.82L609.80,219.43L609.54,219.14L606.57,212.09L603.03,209.22L601.49,206.27L601.28,205.93L599.00,205.97L598.70,205.63L595.97,204.02L595.39,203.94L594.88,204.06L583.97,198.91L580.57,196.30L573.08,193.17L572.41,193.05Z " data-iso="SAU" data-name="Saudi Arabia" data-pop="28686633.0"/><path d="M532.89,229.46L532.97,231.25L533.20,236.62L530.92,236.64L530.22,237.98L530.24,238.43L530.30,240.03L530.68,251.96L527.57,253.97L525.94,256.16L525.58,260.53L524.44,262.19L527.81,268.76L527.71,269.15L527.94,269.59L530.20,273.07L530.16,274.79L531.51,277.11L531.81,277.20L531.81,277.20L531.85,277.10L533.71,274.13L536.77,270.93L539.48,274.28L543.76,274.84L551.17,272.51L553.49,273.15L556.81,267.98L558.98,266.74L562.28,274.36L562.28,274.36L562.28,274.36L562.28,274.17L563.66,269.29L564.73,269.00L569.00,258.17L569.20,257.21L569.06,256.18L570.18,247.31L571.56,246.99L574.90,243.78L574.78,243.54L570.89,239.88L570.17,234.63L568.85,230.28L568.76,229.46L552.36,229.46L549.03,229.46L534.05,229.46L532.89,229.46Z " data-iso="SDN" data-name="Sudan" data-pop="30894000.0"/><path d="M531.81,277.20L531.81,277.20L531.96,277.25L535.06,281.17L538.74,284.46L541.80,289.63L542.02,289.91L542.13,290.16L546.78,292.13L549.65,292.70L552.60,295.54L552.67,295.69L552.76,295.50L556.07,295.27L559.31,294.30L561.61,293.92L562.32,293.08L562.93,292.37L563.55,291.65L565.68,289.19L566.24,288.54L566.19,288.48L559.35,280.21L559.13,279.76L562.28,274.51L562.28,274.36L562.28,274.36L562.28,274.36L558.98,266.74L556.81,267.98L553.49,273.15L551.17,272.51L543.76,274.84L539.48,274.28L536.77,270.93L533.71,274.13L531.85,277.10L531.81,277.20Z " data-iso="SSD" data-name="S. Sudan" data-pop="8260490.0"/><path d="M419.97,255.20L416.66,250.75L413.27,248.62L408.07,249.06L407.11,251.54L407.00,251.92L405.09,255.83L406.80,259.24L406.87,259.60L414.26,259.79L415.17,260.51L409.14,260.54L406.22,261.48L406.24,261.78L406.25,263.19L406.24,263.85L406.34,264.01L409.02,263.72L411.00,262.85L414.47,262.87L415.49,262.87L416.48,262.91L419.14,263.94L422.44,263.79L422.65,263.84L422.67,263.57L422.67,261.91L420.31,255.81L420.03,255.23L419.97,255.20Z " data-iso="SEN" data-name="Senegal" data-pop="13711597.0"/><path d="M416.74,276.05L419.54,281.94L421.99,283.35L422.11,283.49L425.82,278.47L425.91,277.96L425.92,277.85L425.68,277.81L424.48,274.63L420.96,272.46L419.37,272.80L416.68,275.83L416.74,276.05Z " data-iso="SLE" data-name="Sierra Leone" data-pop="6440053.0"/><path d="M184.36,256.60L182.14,258.47L181.94,259.07L182.30,259.26L185.54,260.69L187.60,261.12L188.72,260.33L188.80,260.28L189.00,258.52L187.97,258.17L184.50,256.65L184.42,256.64L184.36,256.60Z " data-iso="SLV" data-name="El Salvador" data-pop="7185218.0"/><path d="M607.59,267.95L595.55,270.87L593.84,270.90L590.82,267.62L590.20,267.07L589.95,267.55L589.63,268.17L589.27,268.86L589.23,269.00L590.34,273.26L591.20,274.65L604.13,279.59L605.18,279.59L605.61,278.79L607.96,274.40L607.89,272.53L607.69,267.94L607.59,267.95Z " data-iso="SOL" data-name="Somaliland" data-pop="3500000.0"/><path d="M586.02,313.79L591.70,305.93L594.36,303.19L599.63,299.32L602.15,296.42L607.48,288.53L613.23,275.62L613.87,271.53L613.26,265.34L608.07,267.89L607.69,267.94L607.89,272.53L607.96,274.40L605.61,278.79L605.18,279.59L604.45,280.44L596.00,290.66L590.51,291.57L586.81,293.76L586.72,293.95L586.34,294.58L583.97,298.00L584.01,311.26L585.71,314.21L586.02,313.79Z " data-iso="SOM" data-name="Somalia" data-pop="9832017.0"/><path d="M509.85,143.82L509.85,143.90L510.27,145.69L511.05,146.12L510.38,147.43L510.42,147.56L510.52,147.55L510.88,148.92L511.46,152.09L511.30,152.27L511.30,152.32L512.74,153.58L513.06,153.77L514.72,154.68L514.72,154.77L515.06,154.67L515.40,153.46L516.65,153.84L518.24,156.71L518.31,156.83L518.47,156.85L518.80,156.76L520.42,156.57L520.49,156.60L520.71,156.54L520.68,154.72L521.34,154.57L520.81,149.85L520.91,149.78L520.86,149.75L518.08,148.22L516.25,146.07L513.68,143.40L513.50,143.20L513.40,143.14L511.33,143.27L510.50,143.62L509.91,143.82L509.85,143.82Z " data-iso="SRB" data-name="Serbia" data-pop="7379339.0"/><path d="M290.88,288.51L288.60,286.77L282.02,286.75L281.32,288.41L281.29,288.34L279.00,290.94L279.87,296.12L280.79,296.10L283.14,301.10L283.26,301.22L283.35,301.25L285.10,299.26L286.67,299.44L288.89,299.84L289.03,299.85L289.07,299.81L289.69,290.25L290.64,289.02L290.88,288.51Z " data-iso="SUR" data-name="Suriname" data-pop="481267.0"/><path d="M518.65,132.82L516.27,131.68L512.81,131.77L508.91,131.38L508.62,131.33L508.55,131.34L506.72,132.88L506.07,133.35L503.83,134.23L503.77,134.50L503.76,134.53L503.56,135.04L503.58,135.23L504.28,136.44L504.45,136.56L504.53,136.54L508.83,137.32L513.84,134.67L517.90,135.21L517.95,135.17L517.93,134.60L518.38,133.99L518.49,133.54L518.80,132.99L518.83,132.85L518.65,132.82Z " data-iso="SVK" data-name="Slovakia" data-pop="5463046.0"/><path d="M503.07,141.75L502.55,141.05L502.37,140.57L501.85,140.55L501.70,140.62L498.46,141.54L497.70,142.18L495.45,141.77L495.33,141.75L495.29,141.96L494.54,142.46L495.17,143.65L495.57,145.03L495.36,145.21L495.19,145.28L500.80,144.16L500.74,142.87L502.85,141.74L503.10,141.83L503.07,141.75Z " data-iso="SVN" data-name="Slovenia" data-pop="2005692.0"/><path d="M505.89,67.58L505.58,67.59L497.30,71.05L496.72,73.33L492.53,76.50L491.37,81.56L487.10,85.42L487.86,90.45L489.77,91.63L489.08,95.67L486.54,99.17L486.29,99.00L489.66,106.20L491.04,107.50L491.34,110.96L494.98,110.81L494.68,109.60L498.92,108.66L500.07,103.20L498.52,97.82L505.40,96.89L500.91,93.74L500.70,87.92L508.94,82.62L509.07,80.41L511.47,77.39L515.18,77.58L515.81,77.51L514.36,75.72L514.90,74.39L512.66,70.33L506.55,67.75L505.89,67.58Z " data-iso="SWE" data-name="Sweden" data-pop="9059651.0"/><path d="M552.93,401.12L550.68,405.68L552.70,405.93L553.19,404.20L553.28,404.25L553.34,403.10L553.21,402.24L553.28,402.00L553.07,401.13L553.01,401.08L552.93,401.12Z " data-iso="SWZ" data-name="Swaziland" data-pop="1123913.0"/><path d="M265.70,243.57L265.80,243.65L265.99,243.73L266.04,243.64L266.05,243.55L265.71,243.55L265.70,243.57Z " data-iso="SXM" data-name="Sint Maarten" data-pop="37429.0"/><path d="M579.41,174.73L571.15,176.69L567.69,175.90L565.62,176.83L563.23,176.35L561.46,179.44L561.33,179.68L561.22,180.67L561.68,181.21L561.89,183.25L562.20,184.05L563.11,183.88L563.62,186.83L562.45,188.23L562.33,188.35L562.30,188.57L562.55,189.42L562.46,189.59L562.37,190.69L562.35,190.86L562.67,190.93L564.51,192.20L565.52,192.36L570.14,189.06L570.84,188.57L571.61,188.06L577.15,181.69L577.17,177.29L579.61,175.21L579.61,175.16L579.41,174.73Z " data-iso="SYR" data-name="Syria" data-pop="20178485.0"/><path d="M528.76,237.58L512.50,228.24L505.60,224.26L503.72,225.28L502.63,225.87L503.02,227.94L505.21,236.97L504.67,247.71L501.38,251.86L498.84,257.65L499.17,259.18L499.67,259.95L500.20,260.78L500.61,261.42L501.16,261.43L503.04,263.49L505.64,272.41L501.30,272.51L500.59,273.91L505.36,281.00L505.20,281.29L505.53,281.32L509.54,280.89L511.86,279.64L515.84,276.23L521.40,274.56L524.19,270.51L527.58,269.12L527.71,269.15L527.81,268.76L524.44,262.19L525.58,260.53L525.94,256.16L527.57,253.97L530.68,251.96L530.30,240.03L530.24,238.43L528.76,237.58Z " data-iso="TCD" data-name="Chad" data-pop="10329208.0"/><path d="M459.52,268.92L459.23,269.02L459.03,268.89L458.04,268.61L457.34,268.45L457.53,268.66L459.16,274.59L459.38,284.08L461.21,286.41L461.59,286.20L462.55,285.95L461.69,273.98L459.89,271.05L460.23,269.27L460.31,268.88L459.52,268.92Z " data-iso="TGO" data-name="Togo" data-pop="6019877.0"/><path d="M760.37,273.02L761.21,278.67L764.59,282.78L765.11,284.05L765.94,285.15L768.94,286.14L768.72,287.55L772.08,285.86L771.11,285.03L764.97,277.18L762.91,275.20L762.08,271.29L764.00,264.01L763.63,260.83L766.53,260.16L773.14,266.34L773.20,266.33L770.64,259.77L774.02,256.63L779.02,256.92L779.06,256.89L779.23,256.81L779.82,254.40L778.98,251.01L773.33,242.65L770.82,243.30L767.60,243.19L765.13,245.66L764.88,240.29L763.55,238.02L761.87,237.90L760.59,235.70L760.58,235.49L760.18,235.26L754.12,239.26L753.29,242.03L758.35,249.87L758.38,253.10L757.33,253.82L760.36,258.32L763.00,266.07L760.70,271.75L760.37,273.02Z " data-iso="THA" data-name="Thailand" data-pop="65905410.0"/><path d="M658.98,165.45L658.34,165.32L658.46,165.44L658.98,165.45Z M652.75,174.94L652.79,175.05L660.29,170.46L662.21,171.36L663.88,176.11L668.98,173.86L673.19,174.69L673.24,174.72L673.30,174.66L672.06,170.53L668.91,169.80L667.73,166.98L667.67,166.79L667.50,166.76L663.89,167.66L661.48,166.32L655.24,166.52L654.89,164.94L659.37,164.04L659.35,163.98L659.18,163.99L657.66,161.58L649.92,167.53L652.38,169.58L652.80,174.67L652.75,174.94Z " data-iso="TJK" data-name="Tajikistan" data-pop="7349145.0"/><path d="M615.97,160.12L615.85,160.11L614.62,160.30L610.28,156.63L605.80,158.49L606.30,159.38L609.40,157.39L612.41,160.83L610.47,162.52L608.01,161.66L608.37,165.20L611.71,168.88L612.67,174.07L612.76,174.32L619.14,171.29L622.10,171.65L628.32,173.96L631.75,176.85L633.99,176.83L635.00,180.36L635.10,180.50L635.33,180.46L638.31,182.04L640.42,181.12L640.35,179.69L644.00,177.91L644.26,175.34L648.91,174.32L649.05,174.30L648.93,173.91L648.91,172.22L645.75,171.12L635.28,164.70L631.34,160.37L627.55,159.84L626.75,157.87L622.30,156.59L618.96,160.33L616.73,160.16L615.97,160.12Z " data-iso="TKM" data-name="Turkmenistan" data-pop="4884887.0"/><path d="M839.33,341.21L838.80,341.52L839.53,341.82L839.97,341.42L840.11,340.98L839.33,341.21Z M841.66,340.09L842.30,340.73L842.12,340.97L841.92,342.13L842.39,341.74L848.51,338.81L848.14,337.85L843.18,338.78L842.00,339.79L841.66,340.09Z " data-iso="TLS" data-name="East Timor" data-pop="1131612.0"/><path d="M270.15,271.96L270.07,269.46L268.34,269.94L267.39,272.19L270.15,271.96Z " data-iso="TTO" data-name="Trinidad and Tobago" data-pop="1310000.0"/><path d="M482.28,175.78L481.43,179.85L481.69,182.42L479.43,186.92L485.45,199.02L485.65,199.87L486.00,199.68L487.66,197.87L487.29,195.43L491.28,192.01L491.19,189.25L490.88,189.10L488.06,187.53L487.25,185.07L489.82,181.86L489.64,176.00L487.36,176.03L485.99,174.64L482.99,175.56L482.28,175.78Z " data-iso="TUN" data-name="Tunisia" data-pop="10486339.0"/><path d="M561.46,179.44L563.23,176.35L565.62,176.83L567.69,175.90L571.15,176.69L579.41,174.73L579.61,175.16L579.88,175.09L580.58,174.26L583.81,174.75L586.41,174.96L586.52,175.04L586.52,174.99L583.27,166.99L585.23,166.07L585.33,166.08L585.22,165.95L585.16,165.89L585.04,165.73L583.61,164.68L582.63,164.75L580.67,161.04L580.61,160.88L580.60,160.82L575.85,159.73L574.92,159.42L574.70,159.76L570.38,161.33L567.66,161.20L559.89,159.75L556.72,157.61L549.44,158.40L544.84,160.96L539.89,160.90L542.24,162.20L539.99,163.44L533.53,163.40L532.06,166.73L534.07,166.39L533.09,169.96L536.87,174.97L542.40,178.21L548.00,176.26L552.44,179.01L554.99,178.48L556.58,176.97L559.10,176.86L561.61,179.14L561.46,179.44Z M531.90,158.72L532.16,158.79L532.09,160.42L532.24,161.28L531.44,162.24L531.54,162.39L533.61,162.59L537.72,161.01L536.56,158.23L536.59,157.82L535.08,157.90L531.89,158.62L531.90,158.72Z " data-iso="TUR" data-name="Turkey" data-pop="76805524.0"/><path d="M822.04,227.22L821.11,217.77L820.08,218.55L818.79,225.32L819.82,227.19L822.04,227.22Z " data-iso="TWN" data-name="Taiwan" data-pop="22974347.0"/><path d="M551.70,311.96L551.60,312.02L552.63,313.73L552.75,316.24L551.94,316.71L551.82,316.72L551.76,316.81L551.39,320.97L551.15,321.65L549.18,324.06L548.21,324.04L548.21,324.21L548.00,325.94L550.26,332.85L552.07,337.09L552.16,337.41L552.23,337.67L555.16,339.95L555.38,339.95L558.56,341.66L558.73,341.75L558.78,341.72L562.03,342.07L563.02,343.00L564.75,349.39L564.77,349.51L565.45,349.50L571.68,349.90L575.62,348.92L581.79,345.53L581.76,345.45L578.45,338.31L579.32,333.23L577.30,330.76L578.41,325.21L578.47,324.91L573.74,320.71L562.41,311.73L562.18,311.73L561.84,311.73L553.61,311.73L553.06,311.73L551.73,311.95L551.70,311.96Z " data-iso="TZA" data-name="Tanzania" data-pop="41048532.0"/><path d="M562.17,311.12L562.30,307.53L565.44,302.29L565.18,299.52L562.81,294.27L562.32,293.08L561.61,293.92L559.31,294.30L556.07,295.27L552.76,295.50L552.67,295.69L552.84,295.79L552.36,299.39L553.74,300.05L553.03,302.14L549.90,305.75L548.83,313.00L548.82,313.11L548.92,313.10L551.12,312.13L551.58,311.96L551.70,311.96L551.73,311.95L553.06,311.73L553.61,311.73L561.84,311.73L562.18,311.73L562.17,311.12Z " data-iso="UGA" data-name="Uganda" data-pop="32369558.0"/><path d="M542.35,122.42L541.84,122.39L538.38,124.55L530.17,123.61L520.82,124.39L520.80,124.41L520.97,124.65L521.52,128.34L519.68,132.89L518.94,132.84L518.83,132.85L518.80,132.99L518.49,133.54L518.38,133.99L517.93,134.60L517.95,135.17L518.21,135.14L518.60,135.69L519.08,135.87L520.09,136.72L520.15,136.77L520.24,136.71L523.72,136.91L525.75,137.57L530.14,135.72L530.26,135.68L530.30,135.56L533.47,135.13L537.24,136.71L539.94,140.84L535.93,145.39L535.80,145.51L536.13,145.87L536.52,146.07L538.11,145.97L540.02,146.18L540.04,145.89L542.47,141.64L549.28,142.96L547.73,145.67L555.19,147.79L558.69,146.87L558.20,145.49L554.56,144.63L554.75,142.03L562.52,139.79L562.61,139.75L563.85,137.15L566.69,135.65L565.49,133.08L566.49,132.23L560.97,129.46L560.48,129.92L554.97,128.23L553.82,128.45L549.43,125.35L547.47,121.58L542.40,122.42L542.35,122.42Z " data-iso="UKR" data-name="Ukraine" data-pop="45700395.0"/><path d="M287.45,416.29L287.37,416.43L286.89,417.74L286.86,420.71L286.97,424.50L287.13,424.84L287.23,429.68L289.24,431.71L298.02,433.34L301.68,429.20L301.81,429.07L300.79,424.61L299.76,423.01L290.07,416.29L287.66,416.55L287.45,416.29Z " data-iso="URY" data-name="Uruguay" data-pop="3494382.0"/><path d="M123.46,133.61L121.67,138.77L121.94,136.10L117.03,135.59L115.56,142.06L114.93,142.60L108.12,154.12L106.92,157.27L103.72,168.73L106.11,175.77L105.28,177.95L107.22,182.45L106.88,184.62L114.23,188.84L114.33,191.56L114.32,191.58L121.23,190.97L122.24,192.20L130.86,195.93L139.18,195.91L139.54,194.70L144.81,194.33L148.15,198.59L151.58,204.28L154.17,201.58L157.81,201.62L162.02,213.64L167.27,215.21L167.34,214.97L167.88,208.47L170.17,206.73L175.66,204.00L176.57,201.76L177.91,202.32L184.62,202.28L186.51,201.60L188.05,203.59L191.59,202.64L192.36,200.94L190.56,200.19L198.25,198.67L198.42,199.64L202.55,198.91L205.37,201.42L210.24,200.96L212.33,204.10L211.26,208.44L213.21,214.55L214.81,217.35L216.61,217.84L218.28,214.60L218.62,210.74L217.55,202.64L217.37,197.55L221.65,191.98L232.68,184.15L235.44,182.76L237.21,180.24L235.79,179.34L238.22,178.73L238.94,170.20L240.08,172.07L244.92,167.17L247.30,163.66L247.19,162.38L251.33,160.32L259.98,158.74L257.42,156.53L258.76,154.37L266.40,149.55L271.16,147.70L271.06,146.61L271.11,146.50L269.79,144.63L270.52,139.11L267.92,138.89L259.87,146.18L249.86,147.08L243.96,150.42L242.51,151.94L237.19,151.95L235.42,154.86L228.47,156.97L223.91,158.86L222.96,157.80L225.65,155.09L228.47,145.87L223.92,140.89L216.20,135.53L205.32,135.62L203.00,134.44L199.91,132.21L198.69,133.13L123.55,133.13L123.46,133.61Z M110.86,108.09L109.96,109.90L111.35,113.24L112.30,111.88L110.86,108.09Z M64.85,103.16L60.76,103.77L58.58,106.15L64.06,104.74L64.85,103.16Z M36.47,84.32L35.28,85.29L39.17,86.17L42.11,85.36L36.47,84.32Z M114.95,113.35L115.32,113.14L116.05,112.76L116.49,112.49L116.56,112.38L117.79,111.19L117.89,110.82L118.74,109.77L118.99,109.60L116.65,107.22L114.74,97.84L111.99,97.54L110.17,98.79L107.78,98.54L106.97,94.90L102.01,95.04L111.75,83.79L121.04,73.74L128.89,65.72L128.73,65.69L125.16,64.32L116.41,64.16L101.37,61.54L99.09,62.00L98.35,60.67L93.61,62.10L87.58,62.90L82.39,64.08L74.68,67.17L67.41,68.04L66.40,70.59L67.55,73.49L71.60,73.74L73.15,75.60L69.98,74.06L69.75,76.03L67.80,76.77L65.50,75.12L62.95,75.18L51.66,77.97L54.76,81.71L59.48,81.84L66.13,80.33L63.29,83.75L53.29,85.52L49.96,86.99L42.63,91.14L43.87,93.12L42.36,95.03L42.70,96.65L46.28,98.93L44.48,100.56L47.39,99.70L50.90,99.97L51.02,101.24L53.50,99.78L55.12,100.92L46.52,106.40L39.78,109.89L38.66,109.33L33.97,110.58L33.79,111.91L36.39,110.47L41.28,109.78L52.71,105.84L55.17,104.40L66.13,100.09L65.43,98.89L76.74,93.06L80.70,91.80L82.61,92.89L73.14,96.73L73.85,98.49L83.72,95.15L85.08,93.25L87.62,92.06L95.02,95.84L96.55,95.70L109.25,101.42L108.70,99.67L110.99,99.13L110.02,101.28L111.96,101.45L113.05,99.80L114.77,101.21L114.60,103.80L113.15,105.32L115.77,108.53L114.90,113.28L114.95,113.35Z " data-iso="USA" data-name="United States" data-pop="307212123.0"/><path d="M660.36,165.21L659.49,164.51L659.82,164.91L660.36,165.21Z M615.97,160.12L616.73,160.16L618.96,160.33L622.30,156.59L626.75,157.87L627.55,159.84L631.34,160.37L635.28,164.70L645.75,171.12L648.91,172.22L648.93,173.91L649.05,174.30L649.91,174.22L650.63,174.35L651.77,174.63L652.71,174.84L652.75,174.94L652.80,174.67L652.38,169.58L649.92,167.53L657.66,161.58L659.18,163.99L659.35,163.98L659.42,163.92L664.98,161.88L659.49,160.72L657.37,157.98L657.54,156.76L657.47,156.83L657.27,156.97L652.97,159.96L651.40,162.49L646.47,160.63L645.16,157.73L643.77,157.69L643.23,154.61L639.16,151.63L638.01,152.21L631.19,152.42L627.87,149.39L613.16,147.11L615.80,159.30L615.97,160.12Z " data-iso="UZB" data-name="Uzbekistan" data-pop="27606007.0"/><path d="M238.88,265.78L236.69,266.71L233.81,270.68L234.85,278.56L234.55,281.53L241.70,283.38L243.66,286.29L249.77,286.64L248.35,291.49L249.79,296.29L249.09,298.55L251.11,303.55L251.17,303.79L251.96,304.61L255.49,305.68L261.95,300.22L260.00,298.96L259.95,293.96L263.68,295.32L267.74,292.84L270.41,289.62L270.32,289.58L269.69,288.74L270.56,283.98L271.82,282.83L270.65,281.24L273.42,278.69L272.95,277.62L272.50,277.38L269.18,277.44L270.69,274.72L266.59,273.07L264.38,270.54L260.46,270.80L258.35,272.08L254.62,270.74L248.33,270.67L247.68,268.28L243.97,267.14L242.99,264.65L242.70,266.96L237.94,269.65L239.05,274.77L237.61,275.84L236.36,274.03L237.14,266.62L238.78,265.95L238.88,265.78Z " data-iso="VEN" data-name="Venezuela" data-pop="26814843.0"/><path d="M765.33,228.09L765.56,228.43L768.27,230.59L768.38,232.31L773.06,233.68L775.31,236.56L772.70,239.25L776.67,241.36L781.83,247.55L785.50,252.88L785.97,255.20L786.04,255.60L786.11,255.80L786.67,264.35L782.48,266.42L778.21,270.97L778.51,271.22L779.85,273.09L779.88,276.72L783.86,274.59L783.52,271.64L785.04,272.94L791.90,267.66L792.62,261.86L791.87,258.64L789.70,253.19L786.08,249.52L778.04,240.33L780.38,233.99L780.00,233.18L783.41,231.25L783.55,231.21L779.46,229.45L779.07,226.65L772.96,225.50L770.61,227.51L765.45,227.96L765.33,228.09Z " data-iso="VNM" data-name="Vietnam" data-pop="86967524.0"/><path d="M561.58,192.06L560.51,194.67L561.67,195.36L561.79,195.37L561.81,195.07L562.01,194.34L561.86,193.55L561.89,192.64L561.77,192.08L561.58,192.06Z " data-iso="PSE" data-name="Palestine" data-pop="2514845.0"/><path d="M615.26,240.23L614.55,240.34L606.46,241.71L602.17,246.25L598.49,246.55L588.97,246.09L587.99,249.63L588.18,250.85L587.78,253.71L588.68,254.77L592.36,263.11L598.08,260.29L601.29,259.75L606.37,257.95L607.45,256.49L616.86,252.20L617.77,249.28L619.27,248.64L618.24,246.42L618.01,246.31L615.42,240.58L615.26,240.23Z " data-iso="YEM" data-name="Yemen" data-pop="23822783.0"/><path d="M546.08,387.55L545.37,387.62L542.51,389.35L538.96,392.53L538.08,394.91L535.11,396.87L534.06,399.81L530.29,400.31L526.45,398.80L523.20,403.52L519.06,403.32L518.49,397.74L517.57,396.94L517.43,396.83L517.37,398.34L516.85,410.04L514.34,411.80L509.30,410.93L508.23,408.53L506.34,410.64L506.43,410.73L509.61,419.28L511.05,421.88L509.86,426.26L512.38,431.30L515.75,432.81L520.99,431.33L534.67,429.13L545.73,420.37L550.30,413.38L554.18,409.14L555.41,405.11L555.59,404.28L555.26,404.29L553.99,404.33L553.54,404.23L553.28,404.25L553.19,404.20L552.70,405.93L550.68,405.68L552.93,401.12L553.01,401.08L552.97,400.82L553.43,396.34L551.84,388.49L551.84,388.30L551.57,388.10L546.99,387.38L546.12,387.55L546.08,387.55Z M542.01,410.64L544.35,412.34L542.42,415.98L540.16,417.92L537.90,415.40L538.50,413.66L542.01,410.64Z " data-iso="ZAF" data-name="South Africa" data-pop="49052489.0"/><path d="M542.42,415.98L544.35,412.34L542.01,410.64L538.50,413.66L537.90,415.40L540.16,417.92L542.42,415.98Z " data-iso="LSO" data-name="Lesotho" data-pop="2130819.0"/><path d="M558.56,341.66L555.38,339.95L555.16,339.95L552.23,337.67L552.16,337.41L551.62,337.51L544.85,341.28L545.51,343.27L544.74,349.94L546.61,352.27L548.87,351.58L548.74,355.92L542.27,351.98L540.85,349.52L539.49,350.94L532.20,348.77L531.22,347.01L531.11,346.99L531.17,347.46L530.56,354.60L524.85,354.60L524.58,365.18L528.07,370.62L528.66,371.22L529.32,371.07L532.79,370.78L533.86,371.20L534.35,371.77L534.93,371.95L539.69,372.36L541.66,369.86L549.84,364.06L550.29,364.06L550.26,363.57L551.99,360.88L553.92,360.24L558.41,358.48L559.08,358.23L558.93,357.97L557.79,356.57L559.39,353.01L559.74,346.92L560.27,346.67L558.74,341.85L558.73,341.75L558.56,341.66Z " data-iso="ZMB" data-name="Zambia" data-pop="11862740.0"/><path d="M552.28,387.93L557.05,380.46L557.89,369.82L556.98,367.45L550.27,364.63L550.29,364.06L549.84,364.06L541.66,369.86L539.69,372.36L534.93,371.95L534.35,371.77L534.28,371.94L536.63,377.42L540.09,381.40L542.01,385.09L545.17,386.18L545.94,387.42L546.08,387.55L546.12,387.55L546.99,387.38L551.57,388.10L551.84,388.30L552.28,387.93Z " data-iso="ZWE" data-name="Zimbabwe" data-pop="11392629.0"/><path d="M793.38,236.65L788.34,237.46L787.64,241.88L788.74,242.48L792.70,241.29L793.38,236.65Z M773.41,130.25L773.41,130.73L775.15,137.67L779.73,136.62L787.86,141.22L784.88,140.91L781.31,141.52L778.38,145.48L775.31,145.81L773.73,147.99L770.70,147.39L770.13,150.86L767.87,154.96L765.65,156.09L758.36,156.68L754.98,158.52L737.42,155.69L730.76,154.91L722.78,149.71L719.90,148.35L713.74,146.97L708.90,145.25L709.06,143.21L707.08,140.06L697.47,134.65L696.27,132.70L696.18,132.54L696.04,132.53L695.42,132.68L695.36,132.79L695.22,132.84L694.95,132.81L694.67,132.74L691.51,135.87L692.84,139.18L685.83,140.19L685.68,144.73L686.69,146.66L684.24,145.87L680.10,147.07L683.92,153.19L683.68,156.97L683.63,157.04L683.75,157.25L676.57,161.21L674.48,163.57L670.22,163.07L667.90,166.75L667.67,166.79L667.73,166.98L668.91,169.80L672.06,170.53L673.30,174.66L673.24,174.72L673.10,174.75L672.28,174.70L671.81,174.99L672.36,175.44L672.41,175.47L672.57,175.42L676.65,176.98L678.38,179.81L679.87,180.29L680.00,180.35L680.36,180.52L681.66,180.90L682.13,181.02L682.93,181.00L683.13,180.94L683.14,180.96L683.17,180.98L683.96,181.82L685.41,184.14L687.52,185.63L687.28,185.83L687.46,185.74L690.08,183.81L690.33,181.16L694.21,181.82L696.47,180.26L700.12,181.44L706.68,179.76L706.94,178.72L713.29,177.63L716.76,178.88L717.18,181.47L718.63,183.28L719.27,186.64L721.00,188.11L724.66,188.77L730.41,191.10L733.38,191.78L734.58,191.08L739.71,194.52L741.01,194.39L743.88,191.54L746.58,193.56L750.07,200.49L748.70,207.13L748.68,207.13L748.80,207.22L751.06,209.42L752.09,212.98L750.05,220.50L750.77,222.67L754.35,223.21L759.14,230.31L762.90,230.95L762.88,231.00L763.08,231.16L765.10,232.27L764.15,227.69L765.20,227.97L765.33,228.09L765.45,227.96L770.61,227.51L772.96,225.50L779.07,226.65L779.46,229.45L783.55,231.21L783.82,231.15L788.33,230.62L790.88,235.68L790.66,233.54L795.30,229.99L797.29,230.25L799.66,228.75L799.67,228.74L799.67,228.67L799.69,228.58L799.78,228.56L799.86,228.64L798.69,226.17L799.00,226.07L800.79,227.54L801.06,227.61L801.27,227.47L801.34,227.42L801.79,227.50L801.97,227.32L805.02,226.87L809.96,223.29L813.30,220.03L813.63,218.21L815.44,217.35L813.91,215.17L814.12,212.25L816.13,210.92L816.69,208.11L818.64,206.83L818.36,201.16L816.05,199.88L816.58,197.39L811.93,193.56L815.48,194.16L811.53,191.12L811.16,189.85L806.74,184.71L803.91,183.27L806.89,176.99L810.82,175.74L810.60,174.11L803.51,173.32L802.58,175.00L800.01,174.37L798.98,171.82L796.13,171.32L794.13,167.92L797.84,166.94L797.81,165.71L801.14,161.62L804.86,163.55L803.73,167.02L804.98,167.61L811.54,164.79L811.59,164.81L816.97,159.29L820.11,159.89L818.93,158.07L821.66,156.93L822.34,154.95L824.72,155.69L824.86,155.81L824.97,155.70L825.69,154.32L823.00,147.15L826.72,146.88L826.78,141.83L822.46,136.24L816.53,137.66L810.18,132.41L803.95,130.95L796.35,123.51L790.99,119.20L781.27,117.70L777.60,118.76L779.99,122.85L779.09,124.13L779.00,128.24L779.92,129.41L777.21,131.32L774.12,130.55L773.41,130.25Z " data-iso="CHN" data-name="China" data-pop="1338612968.0"/></g></svg>
diff --git a/plugins/UserLanguage/UserLanguage.php b/plugins/UserLanguage/UserLanguage.php
index 7bb409a5e3..3238ac11de 100644
--- a/plugins/UserLanguage/UserLanguage.php
+++ b/plugins/UserLanguage/UserLanguage.php
@@ -23,7 +23,6 @@ class UserLanguage extends \Piwik\Plugin
{
return array(
'Live.getAllVisitorDetails' => 'extendVisitorDetails',
- 'Request.getRenamedModuleAndAction' => 'renameUserSettingsModuleAndAction',
);
}
@@ -45,11 +44,4 @@ class UserLanguage extends \Piwik\Plugin
$out .= '<h2 piwik-enriched-headline>' . Piwik::translate('UserLanguage_BrowserLanguage') . '</h2>';
$out .= FrontController::getInstance()->fetchDispatch('UserLanguage', 'getLanguage');
}
-
- public function renameUserSettingsModuleAndAction(&$module, &$action)
- {
- if ($module == 'UserSettings' && ($action == 'getLanguage' || $action == 'getLanguageCode')) {
- $module = 'UserLanguage';
- }
- }
}
diff --git a/plugins/UserLanguage/lang/pt.json b/plugins/UserLanguage/lang/pt.json
index 8aafa08e28..5d05a22217 100644
--- a/plugins/UserLanguage/lang/pt.json
+++ b/plugins/UserLanguage/lang/pt.json
@@ -1,5 +1,6 @@
{
"UserLanguage": {
+ "BrowserLanguage": "Idioma do browser",
"LanguageCode": "Código do idioma"
}
} \ No newline at end of file
diff --git a/plugins/UserLanguage/tests/System/UserSettingsBCTest.php b/plugins/UserLanguage/tests/System/UserSettingsBCTest.php
deleted file mode 100644
index 208048b8cc..0000000000
--- a/plugins/UserLanguage/tests/System/UserSettingsBCTest.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-namespace Piwik\Plugins\UserLanguage\tests\System;
-
-use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
-
-/**
- * @group UserLanguage
- * @group UserLanguage_System
- */
-class UserSettingsBCTest extends SystemTestCase
-{
- /**
- * @var OneVisitorTwoVisits
- */
- public static $fixture;
-
- /**
- * @dataProvider getApiForTesting
- */
- public function test_Api($api, $params)
- {
- $this->runApiTests($api, $params);
- }
-
- public function getApiForTesting()
- {
- $idSite = self::$fixture->idSite;
- $dateTime = self::$fixture->dateTime;
-
- $api = array(
- 'UserSettings.getLanguage',
- 'UserSettings.getLanguageCode',
- );
-
- $result = array();
-
- foreach ($api as $method) {
- list($module, $action) = explode('.', $method);
-
- // api test (uses hack to test UserSettings which doesn't exist anymore. we say we're testing
- // against UserLanguage & overwrite the module & action w/ otherRequestParameters)
- $result[] = array('UserLanguage.getLanguage', array('idSite' => $idSite,
- 'date' => $dateTime,
- 'periods' => array('day'),
- 'testSuffix' => $module . '_' . $method . '_',
- 'otherRequestParameters' => array(
- 'method' => $method,
- ),
- ));
-
- // api metadata tests
- $result[] = array('API.getMetadata', array(
- 'idSite' => $idSite,
- 'date' => $dateTime,
- 'apiModule' => $module,
- 'apiAction' => $action,
- 'testSuffix' => $module . '_' . $method . '_',
- ));
- }
-
- return $result;
- }
-
- public static function getPathToTestDirectory()
- {
- return dirname(__FILE__);
- }
-}
-
-UserSettingsBCTest::$fixture = new OneVisitorTwoVisits(); \ No newline at end of file
diff --git a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___API.getMetadata_day.xml b/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___API.getMetadata_day.xml
deleted file mode 100644
index 609bf27f42..0000000000
--- a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___API.getMetadata_day.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Locations</subcategory>
- <name>Language code</name>
- <module>UserLanguage</module>
- <action>getLanguageCode</action>
- <dimension>Language</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Browser language</name>
- <module>UserLanguage</module>
- <action>getLanguage</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=UserLanguage&amp;apiAction=getLanguageCode&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=UserLanguage&amp;apiAction=getLanguageCode&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>UserLanguage_getLanguageCode</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___UserLanguage.getLanguage_day.xml b/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___UserLanguage.getLanguage_day.xml
deleted file mode 100644
index de31fc9d35..0000000000
--- a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguageCode___UserLanguage.getLanguage_day.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>French (fr)</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <segment>languageCode==fr</segment>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___API.getMetadata_day.xml b/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___API.getMetadata_day.xml
deleted file mode 100644
index 5dd35140ad..0000000000
--- a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___API.getMetadata_day.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <category>Visitors</category>
- <subcategory>Locations</subcategory>
- <name>Browser language</name>
- <module>UserLanguage</module>
- <action>getLanguage</action>
- <dimension>Language</dimension>
- <metrics>
- <nb_visits>Visits</nb_visits>
- <nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
- <nb_actions>Actions</nb_actions>
- <nb_users>Users</nb_users>
- </metrics>
- <metricsDocumentation>
- <nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
- <nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
- <nb_actions>The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.</nb_actions>
- <nb_users>The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').</nb_users>
- <nb_actions_per_visit>The average number of actions (page views, site searches, downloads or outlinks) that were performed during the visits.</nb_actions_per_visit>
- <avg_time_on_site>The average duration of a visit.</avg_time_on_site>
- <bounce_rate>The percentage of visits that only had a single pageview. This means, that the visitor left the website directly from the entrance page.</bounce_rate>
- <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
- </metricsDocumentation>
- <processedMetrics>
- <nb_actions_per_visit>Actions per Visit</nb_actions_per_visit>
- <avg_time_on_site>Avg. Time on Website</avg_time_on_site>
- <bounce_rate>Bounce Rate</bounce_rate>
- <conversion_rate>Conversion Rate</conversion_rate>
- </processedMetrics>
- <relatedReports>
- <row>
- <name>Language code</name>
- <module>UserLanguage</module>
- <action>getLanguageCode</action>
- </row>
- </relatedReports>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=UserLanguage&amp;apiAction=getLanguage&amp;period=day&amp;date=2010-03-06</imageGraphUrl>
- <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=UserLanguage&amp;apiAction=getLanguage&amp;period=day&amp;date=2010-02-05,2010-03-06</imageGraphEvolutionUrl>
- <uniqueId>UserLanguage_getLanguage</uniqueId>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___UserLanguage.getLanguage_day.xml b/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___UserLanguage.getLanguage_day.xml
deleted file mode 100644
index 2e95d73c83..0000000000
--- a/plugins/UserLanguage/tests/System/expected/test_UserSettingsBCTestUserSettings_UserSettings.getLanguage___UserLanguage.getLanguage_day.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<result>
- <row>
- <label>French</label>
- <nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <nb_users>0</nb_users>
- <max_actions>7</max_actions>
- <sum_visit_length>1621</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>2</nb_visits_converted>
- <segment>languageCode==fr,languageCode=@fr-</segment>
- </row>
-</result> \ No newline at end of file
diff --git a/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js b/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js
index 1df74622de..6e561a6ea5 100644
--- a/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js
+++ b/plugins/UsersManager/angularjs/manage-users/manage-users.controller.js
@@ -144,10 +144,10 @@
newRowId = 'row' + newRowId;
$($.parseHTML(' <tr id="' + newRowId + '" class="addNewUserRow">\
- <td><input id="useradd_login" placeholder="username" size="10" /></td>\
+ <td><input id="useradd_login" placeholder="username" size="10" maxlength="100" /></td>\
<td><input id="useradd_password" placeholder="password" size="10" /></td>\
- <td><input id="useradd_email" placeholder="email@domain.com" size="15" /></td>\
- <td><input id="useradd_alias" placeholder="alias" size="15" /></td>\
+ <td><input id="useradd_email" placeholder="email@domain.com" size="15" maxlength="100" /></td>\
+ <td><input id="useradd_alias" placeholder="alias" size="15" maxlength="45" /></td>\
<td>-</td>\
<td>-</td>\
<td><input type="submit" class="btn adduser" value="' + _pk_translate('General_Save') + '" /></td>\
diff --git a/plugins/UsersManager/lang/uk.json b/plugins/UsersManager/lang/uk.json
index a0537fc782..977c1b01e4 100644
--- a/plugins/UsersManager/lang/uk.json
+++ b/plugins/UsersManager/lang/uk.json
@@ -26,6 +26,7 @@
"ExceptionEmailExists": "Користувач з Email '%s' вже існує.",
"ExceptionInvalidEmail": "Email неправильного формату",
"ExceptionInvalidLoginFormat": "Ім'я користувача повинне бути від %1$s до %2$s символів і містити тільки літери, цифри, чи знаки '_' або '-' або '.' або '@' або '+'",
+ "ExceptionInvalidPassword": "Довжина пароля повинна бути більше %1$s символів.",
"ExceptionLoginExists": "Ім'я користувача '%s' вже існує.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth очікує MD5-хешваний пароль (рядок в 32 символи). Будь ласка, викличте функцію md5() до паролю перед викликом цього методу.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Видалення прав суперкористувача у користувача «%s» не уявляється можливим.",
@@ -36,6 +37,7 @@
"ExceptionNoValueForUsernameOrEmail": "Будь ласка, введіть ім'я користувача або email адресу.",
"ExcludeVisitsViaCookie": "Cookie виключення з статистики",
"ForAnonymousUsersReportDateToLoadByDefault": "Звіт для анонімних користувачів відображається за",
+ "GiveViewAccess": "Надайте доступ для перегляду %1$s",
"GiveViewAccessTitle": "Дати існуючому користувачу доступ для перегляду звітів для %s",
"GiveViewAccessInstructions": "Щоб дати існуючому користувачу доступ для перегляду %s введіть логін або адресу електронної пошти для існуючого користувача",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Якщо ви хочете змінити пароль, введіть новий. Інакше залиште поле порожнім.",
diff --git a/plugins/UsersManager/templates/userSettings.twig b/plugins/UsersManager/templates/userSettings.twig
index 2c802670d0..53f46d20e6 100644
--- a/plugins/UsersManager/templates/userSettings.twig
+++ b/plugins/UsersManager/templates/userSettings.twig
@@ -22,12 +22,14 @@
<div piwik-field uicontrol="text" name="alias"
ng-model="personalSettings.alias"
+ maxlength="45"
title="{{ 'UsersManager_Alias'|translate|e('html_attr') }}"
value="{{ userAlias|raw }}">
</div>
<div piwik-field uicontrol="text" name="email"
ng-model="personalSettings.email"
+ maxlength="100"
title="{{ 'UsersManager_Email'|translate|e('html_attr') }}"
value="{{ userEmail }}">
</div>
diff --git a/plugins/VisitFrequency/lang/uk.json b/plugins/VisitFrequency/lang/uk.json
index b0e4bc89ca..ee361c2105 100644
--- a/plugins/VisitFrequency/lang/uk.json
+++ b/plugins/VisitFrequency/lang/uk.json
@@ -12,8 +12,13 @@
"ColumnUniqueReturningVisitors": "Унікальні відвідувачі що повернулися",
"ColumnReturningUsers": "Відвідувачі що повернулися",
"PluginDescription": "Звіти метрик нових відвідувачів і постійних відвідувачів.",
+ "ReturnActions": "дії повторними відвідувачами",
+ "ReturnAverageVisitDuration": "середня тривалість відвідування повторними відвідувачами",
+ "ReturnAvgActions": "дій на повторного відвідувача",
+ "ReturnBounceRate": "відмови повторних відвідувачів (залишили веб-сайт після перегляду однієї сторінки)",
"ReturningVisitDocumentation": "Повторний візит (на відміну від нового візиту) зробленого кимось, хто відвідував сайт хоча б один раз.",
"ReturningVisitsDocumentation": "Це огляд візитів що повернулися.",
+ "ReturnVisits": "повторних відвідувань",
"SubmenuFrequency": "Частота",
"WidgetGraphReturning": "Графік повторних відвідувань",
"WidgetOverview": "Огляд частоти"
diff --git a/plugins/VisitTime/lang/pt.json b/plugins/VisitTime/lang/pt.json
index d8e9918edf..980d452b31 100644
--- a/plugins/VisitTime/lang/pt.json
+++ b/plugins/VisitTime/lang/pt.json
@@ -2,6 +2,7 @@
"VisitTime": {
"ColumnLocalTime": "Hora local",
"ColumnServerTime": "Hora do servidor",
+ "DayOfWeek": "Dia da semana",
"LocalTime": "Visitas por hora local",
"NHour": "%sh",
"ServerTime": "Vistas por hora do servidor",
diff --git a/plugins/VisitorGenerator b/plugins/VisitorGenerator
-Subproject 068f1b0cddf5056d0c079e1cfcb2c771a9307c7
+Subproject e6fdb3d448b3bba29874ce49fdd7ab1678c6e2f
diff --git a/plugins/VisitsSummary/lang/uk.json b/plugins/VisitsSummary/lang/uk.json
index 2a6d5e1377..0409febffa 100644
--- a/plugins/VisitsSummary/lang/uk.json
+++ b/plugins/VisitsSummary/lang/uk.json
@@ -1,8 +1,24 @@
{
"VisitsSummary": {
+ "AverageGenerationTime": "середній час генерації сторінки",
+ "AverageVisitDuration": "середня тривалість відвідування",
"GenerateQueries": "%s запитів виконано",
"GenerateTime": "сторінка згенерована за %s секунд",
+ "MaxNbActions": "максимально дій на одне відвідування",
"NbActionsDescription": "%s дій (перегляди сторінок, завантаження, зовнішні переходи)",
+ "NbActionsPerVisit": "дій (переглядів сторінок, завантажень, і внутрішні та зовнішні посилання, пошук на сайті) на відвідування",
+ "NbDownloadsDescription": "завантажень",
+ "NbKeywordsDescription": "унікальних ключових слів",
+ "NbOutlinksDescription": "вихідних посилань",
+ "NbPageviewsDescription": "переглядів сторінок",
+ "NbSearchesDescription": "всього пошуків на вашому сайті",
+ "NbUniqueDownloadsDescription": "унікальних завантажень",
+ "NbUniqueOutlinksDescription": "унікальні вихідних посилань",
+ "NbUniquePageviewsDescription": "унікальних переглядів сторінок",
+ "NbUniqueVisitors": "унікальних відвідувачів",
+ "NbUsersDescription": "користувачів",
+ "NbVisitsDescription": "відвідувань",
+ "NbVisitsBounced": "візитів з відмовами (залишили сайт після прегляду однієї сторінки)",
"PluginDescription": "Звіти загальних аналітичних показників: відвідування, кількість унікальних відвідувачів, кількість користувачів, показник відмов і т.д..",
"VisitsSummary": "Відвідувань",
"VisitsSummaryDocumentation": "Це огляд динаміки відвідувань.",
diff --git a/plugins/WebsiteMeasurable/lang/pt.json b/plugins/WebsiteMeasurable/lang/pt.json
new file mode 100644
index 0000000000..a9eb622228
--- /dev/null
+++ b/plugins/WebsiteMeasurable/lang/pt.json
@@ -0,0 +1,6 @@
+{
+ "WebsiteMeasurable": {
+ "Website": "site Web",
+ "Websites": "Sites"
+ }
+} \ No newline at end of file
diff --git a/plugins/Widgetize/Menu.php b/plugins/Widgetize/Menu.php
index 7ce5b188ba..611292883c 100644
--- a/plugins/Widgetize/Menu.php
+++ b/plugins/Widgetize/Menu.php
@@ -18,7 +18,7 @@ class Menu extends \Piwik\Plugin\Menu
$tooltip = Piwik::translate('Widgetize_TopLinkTooltip');
$urlParams = $this->urlForAction('index', array('segment' => false));
- $menu->addPlatformItem('General_Widgets', $urlParams, 5, $tooltip);
+ $menu->addPlatformItem('General_Widgets', $urlParams, 6, $tooltip);
}
}
diff --git a/plugins/Widgetize/tests/System/WidgetTest.php b/plugins/Widgetize/tests/System/WidgetTest.php
index ebc5a5a7bd..af99759c77 100644
--- a/plugins/Widgetize/tests/System/WidgetTest.php
+++ b/plugins/Widgetize/tests/System/WidgetTest.php
@@ -986,10 +986,10 @@ class WidgetTest extends SystemTestCase
),
), array (
'name' => 'Latest Piwik Plugin Updates',
- 'uniqueId' => 'widgetCorePluginsAdmingetNewPlugins',
+ 'uniqueId' => 'widgetMarketplacegetNewPlugins',
'parameters' =>
array (
- 'module' => 'CorePluginsAdmin',
+ 'module' => 'Marketplace',
'action' => 'getNewPlugins',
),
), array (
@@ -1360,7 +1360,7 @@ class WidgetTest extends SystemTestCase
),
),
array (
- 'name' => 'Professional Services for Piwik',
+ 'name' => 'Premium Products & Services for Piwik',
'uniqueId' => 'widgetProfessionalServicespromoServices',
'parameters' =>
array (
diff --git a/tests/PHPUnit/Fixtures/InvalidVisits.php b/tests/PHPUnit/Fixtures/InvalidVisits.php
index da1038eba2..2f87d18080 100644
--- a/tests/PHPUnit/Fixtures/InvalidVisits.php
+++ b/tests/PHPUnit/Fixtures/InvalidVisits.php
@@ -56,7 +56,7 @@ class InvalidVisits extends Fixture
// Trigger empty request
$trackerUrl = self::getTrackerUrl();
$response = Http::fetchRemoteFile($trackerUrl);
- self::assertTrue(strpos($response, 'is a free/libre web') !== false, 'Piwik empty request response not correct: ' . $response);
+ self::assertTrue(strpos($response, 'Keep full control of your data with the leading free') !== false, 'Piwik empty request response not correct: ' . $response);
$t = self::getTracker($idSite, $dateTime, $defaultInit = true);
diff --git a/tests/PHPUnit/Integration/DependencyTest.php b/tests/PHPUnit/Integration/DependencyTest.php
index 0f0de5562c..8a6d98d2ce 100644
--- a/tests/PHPUnit/Integration/DependencyTest.php
+++ b/tests/PHPUnit/Integration/DependencyTest.php
@@ -147,7 +147,7 @@ class DependencyTest extends IntegrationTestCase
public function test_getMissingVersion_EmptyCurrentVersion_ShouldBeDeclaredAsMissing()
{
- $this->assertMissingVersion('', '5.5', array('>=5.5'));
+ $this->assertMissingVersion('', '>=5.5', array('>=5.5'));
}
public function test_getMissingVersion_EmptyRequiredVersion_ShouldBeIgnored()
@@ -248,6 +248,26 @@ class DependencyTest extends IntegrationTestCase
$this->assertMissingVersion('6.4', '>=5.2,<=9.0', array());
}
+ /**
+ * @dataProvider getHasDepenedencyToDisabledPluginProvider
+ */
+ public function test_hasDependencyToDisabledPlugin($expectedHasDependency, $requires)
+ {
+ $this->assertSame($expectedHasDependency, $this->dependency->hasDependencyToDisabledPlugin($requires));
+ }
+
+ public function getHasDepenedencyToDisabledPluginProvider()
+ {
+ return array(
+ array($expected = false, $requires = null),
+ array($expected = false, $requires = array()),
+ array($expected = false, $requires = array('php' => '<5.2', 'piwik' => '<2.0')),
+ array($expected = false, $requires = array('php' => '<5.2', 'piwik' => '<2.0', 'CoreHome' => '2.15.0')),
+ array($expected = false, $requires = array('CoreHome' => '<2.0', 'Actions' => '>=2.15.0')),
+ array($expected = true, $requires = array('php' => '<5.2', 'piwik' => '<2.0', 'FooBar' => '2.15.0')),
+ );
+ }
+
private function missingPiwik($requiredVersion, $causedBy = null)
{
return $this->buildMissingDependecy('piwik', Version::VERSION, $requiredVersion, $causedBy);
diff --git a/tests/PHPUnit/Integration/Plugin/ManagerTest.php b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
index 5822e22c05..3c4252de77 100644
--- a/tests/PHPUnit/Integration/Plugin/ManagerTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
@@ -127,14 +127,14 @@ class ManagerTest extends IntegrationTestCase
array(true, 'pluginNameTest'),
array(true, 'PluginNameTest'),
array(true, 'PluginNameTest92323232eerwrwere938'),
+ array(true, 'a_ererer'),
+ array(true, 'a_'),
array(false, ''),
array(false, '0'),
array(false, '0a'),
array(false, 'a.'),
array(false, 'a-'),
- array(false, 'a_'),
array(false, 'a-ererer'),
- array(false, 'a_ererer'),
array(false, '..'),
array(false, '/'),
);
@@ -147,8 +147,8 @@ class ManagerTest extends IntegrationTestCase
private function assertOnlyTrackerPluginsAreLoaded($expectedPluginNamesLoaded)
{
- // should currently load between 10 and 25 plugins
- $this->assertLessThan(25, count($this->manager->getLoadedPlugins()));
+ // should currently load between 10 and 26 plugins
+ $this->assertLessThan(26, count($this->manager->getLoadedPlugins()));
$this->assertGreaterThan(10, count($this->manager->getLoadedPlugins()));
// we need to make sure it actually only loaded the correct ones
diff --git a/tests/PHPUnit/Integration/ProfessionalSupport/AdvertisingTest.php b/tests/PHPUnit/Integration/ProfessionalSupport/AdvertisingTest.php
index d8f728d051..6a83038e14 100644
--- a/tests/PHPUnit/Integration/ProfessionalSupport/AdvertisingTest.php
+++ b/tests/PHPUnit/Integration/ProfessionalSupport/AdvertisingTest.php
@@ -80,13 +80,6 @@ class AdvertisingTest extends IntegrationTestCase
$this->assertTrue($enabled->areAdsForProfessionalServicesEnabled());
}
- public function test_getPromoUrlForOnPremises_WithoutContent()
- {
- $link = $this->advertising->getPromoUrlForPiwikProUpgrade();
-
- $this->assertSame('https://piwik.org/recommends/piwik-pro-from-app', $link);
- }
-
public function test_addPromoCampaignParametersToUrl_withoutContentWithoutQuery()
{
$link = $this->advertising->addPromoCampaignParametersToUrl($this->exampleUrl, 'MyName', 'Installation_Start');
diff --git a/tests/PHPUnit/Integration/ReleaseCheckListTest.php b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
index 54ff0c1a7f..459dca0029 100644
--- a/tests/PHPUnit/Integration/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
@@ -455,9 +455,7 @@ class ReleaseCheckListTest extends \PHPUnit_Framework_TestCase
public function test_piwikJs_minified_isUpToDate()
{
- Http::fetchRemoteFile('https://github.com/downloads/yui/yuicompressor/yuicompressor-2.4.7.zip', PIWIK_DOCUMENT_ROOT .'/tmp/yuicompressor.zip');
- shell_exec('unzip -n '. PIWIK_DOCUMENT_ROOT .'/tmp/yuicompressor.zip');
- shell_exec("sed '/<DEBUG>/,/<\/DEBUG>/d' < ". PIWIK_DOCUMENT_ROOT ."/js/piwik.js | sed 's/eval/replacedEvilString/' | java -jar yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar --type js --line-break 1000 | sed 's/replacedEvilString/eval/' | sed 's/^[/][*]/\/*!/' > " . PIWIK_DOCUMENT_ROOT ."/piwik-minified.js");
+ shell_exec("sed '/<DEBUG>/,/<\/DEBUG>/d' < ". PIWIK_DOCUMENT_ROOT ."/js/piwik.js | sed 's/eval/replacedEvilString/' | java -jar ". PIWIK_DOCUMENT_ROOT ."/tests/resources/yuicompressor/yuicompressor-2.4.7.jar --type js --line-break 1000 | sed 's/replacedEvilString/eval/' | sed 's/^[/][*]/\/*!/' > " . PIWIK_DOCUMENT_ROOT ."/piwik-minified.js");
$this->assertFileEquals(PIWIK_DOCUMENT_ROOT . '/piwik-minified.js',
PIWIK_DOCUMENT_ROOT . '/piwik.js',
diff --git a/tests/PHPUnit/Integration/SegmentTest.php b/tests/PHPUnit/Integration/SegmentTest.php
index aedd95e61f..9558cc0929 100644
--- a/tests/PHPUnit/Integration/SegmentTest.php
+++ b/tests/PHPUnit/Integration/SegmentTest.php
@@ -9,16 +9,19 @@
namespace Piwik\Tests\Integration;
use Exception;
+use Piwik\ArchiveProcessor\Rules;
use Piwik\Cache;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Db;
use Piwik\Segment;
+use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\Action;
use Piwik\Tracker\TableLogAction;
+use Piwik\Plugins\SegmentEditor\API as SegmentEditorApi;
/**
* @group Core
@@ -28,12 +31,16 @@ class SegmentTest extends IntegrationTestCase
{
public $tableLogActionCacheHits = 0;
+ private $exampleSegment = 'visitCount>=1';
+
public function setUp()
{
parent::setUp();
// setup the access layer (required in Segment contrustor testing if anonymous is allowed to use segments)
FakeAccess::$superUser = true;
+
+ Fixture::createWebsite('2015-01-01 00:00:00');
}
static public function removeExtraWhiteSpaces($valueToFilter)
@@ -1491,4 +1498,78 @@ class SegmentTest extends IntegrationTestCase
'Piwik\Tracker\TableLogAction\Cache' => \DI\object()->constructorParameter('cache', $cacheProxy),
);
}
+
+ public function test_willBeArchived_ByDefault_AllSegmentsWillBeArchived()
+ {
+ $this->assertWillBeArchived($this->exampleSegment);
+ }
+
+ public function test_willBeArchived_SegmentsWillNotBeArchivedWhenBrowserArchivingIsDisabledAndNoSuchSegmentExists()
+ {
+ $this->disableSegmentBrowserArchiving();
+ $this->assertNotWillBeArchived($this->exampleSegment);
+ }
+
+ public function test_willBeArchived_SegmentsWillBeArchivedWhenBrowserArchivingIsDisabledButBrowserSegmentsArchivingEnabled()
+ {
+ $this->disableBrowserArchiving();
+ $this->assertWillBeArchived($this->exampleSegment);
+ }
+
+ public function test_willSegmentBeArchived_SegmentsWillNotBeArchivedWhenBrowserArchivingDisabledAndSegmentExistsNotAutoArchive()
+ {
+ $this->disableSegmentBrowserArchiving();
+
+ SegmentEditorApi::getInstance()->add('My Name', $this->exampleSegment, $idSite = false, $autoArchive = false);
+
+ $this->assertNotWillBeArchived($this->exampleSegment);
+ }
+
+ public function test_willSegmentBeArchived_SegmentsWillBeArchivedWhenBrowserArchivingDisabledButSegmentExistsWithAuthoArchive()
+ {
+ $this->disableSegmentBrowserArchiving();
+
+ SegmentEditorApi::getInstance()->add('My Name', $this->exampleSegment, $idSite = false, $autoArchive = true);
+
+ $this->assertWillBeArchived($this->exampleSegment);
+ }
+
+ public function test_willBeArchived_AnEmptySegmentShouldBeAlwaysArchived()
+ {
+ $this->assertWillBeArchived(false);
+
+ $this->disableSegmentBrowserArchiving();
+ $this->assertWillBeArchived(false);
+ }
+
+ private function assertWillBeArchived($segmentString)
+ {
+ $this->assertTrue($this->willSegmentByArchived($segmentString));
+ }
+
+ private function assertNotWillBeArchived($segmentString)
+ {
+ $this->assertFalse($this->willSegmentByArchived($segmentString));
+ }
+
+ private function willSegmentByArchived($segmentString)
+ {
+ $segment = new Segment($segmentString, $idSites = array(1));
+
+ return $segment->willBeArchived();
+ }
+
+ private function disableBrowserArchiving()
+ {
+ Rules::setBrowserTriggerArchiving(false);
+ }
+
+ private function disableSegmentBrowserArchiving()
+ {
+ $this->disableBrowserArchiving();
+ $config = Config::getInstance();
+ $general = $config->General;
+ $general['browser_archiving_disabled_enforce'] = '1';
+ $config->General = $general;
+ }
}
diff --git a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
index c8bce62d51..a8787cc5ee 100644
--- a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
+++ b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
@@ -179,7 +179,7 @@ class TrackerCodeGeneratorTest extends IntegrationTestCase
})();
&lt;/script&gt;
-&lt;script type='text/javascript' src=&quot;//localhost/piwik/piwik.js&quot;&gt;
+&lt;script type='text/javascript' src=&quot;//localhost/piwik/piwik.js&quot;&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;//localhost/piwik/piwik.php?idsite=1&quot; style=&quot;border:0;&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/noscript&gt;
&lt;!-- End Piwik Code --&gt;
";
diff --git a/tests/PHPUnit/System/AutoSuggestAPITest.php b/tests/PHPUnit/System/AutoSuggestAPITest.php
index c1404e5757..014625b689 100644
--- a/tests/PHPUnit/System/AutoSuggestAPITest.php
+++ b/tests/PHPUnit/System/AutoSuggestAPITest.php
@@ -140,8 +140,8 @@ class AutoSuggestAPITest extends SystemTestCase
*/
public function testCheckOtherTestsWereComplete()
{
- // Check that only a few haven't been tested specifically (these are all custom variables slots since we only test slot 1, 2, 5 (see the fixture) and example dimension slots)
- $maximumSegmentsToSkip = 16;
+ // Check that only a few haven't been tested specifically (these are all custom variables slots since we only test slot 1, 2, 5 (see the fixture) and example dimension slots and bandwidth)
+ $maximumSegmentsToSkip = 17;
$this->assertLessThan($maximumSegmentsToSkip, count(self::$skipped) , 'SKIPPED ' . count(self::$skipped) . ' segments --> some segments had no "auto-suggested values"
but we should try and test the autosuggest for all new segments. Segments skipped were: ' . implode(', ', self::$skipped));
diff --git a/tests/PHPUnit/System/BackwardsCompatibility1XTest.php b/tests/PHPUnit/System/BackwardsCompatibility1XTest.php
index 68de1b1e3c..443112a97f 100644
--- a/tests/PHPUnit/System/BackwardsCompatibility1XTest.php
+++ b/tests/PHPUnit/System/BackwardsCompatibility1XTest.php
@@ -95,10 +95,17 @@ class BackwardsCompatibility1XTest extends SystemTestCase
'date' => $dateTime,
'disableArchiving' => true,
'otherRequestParameters' => array(
- 'hideColumns' => 'nb_users',
+ // when changing this, might also need to change the same line in OneVisitorTwoVisitsTest.php
+ 'hideColumns' => 'nb_users,sum_bandwidth,nb_hits_with_bandwidth,min_bandwidth,max_bandwidth',
)
);
+ /**
+ * When Piwik\Tests\System\BackwardsCompatibility1XTest is failing,
+ * as this test compares fixtures to OneVisitorTwoVisits* fixtures,
+ * sometimes for a given API method that fails to generate the same output as OneVisitorTwoVisits does,
+ * we need to add the API below which will cause the fixtures for this API to be created in processed/
+ */
$reportsToCompareSeparately = array(
// the label column is not the first column here
@@ -106,7 +113,12 @@ class BackwardsCompatibility1XTest extends SystemTestCase
// those reports generate a different segment as a different raw value was stored that time
'DevicesDetection.getOsVersions',
- 'Goals.get'
+ 'Goals.get',
+
+ // Following #9345
+ 'Actions.getPageUrls',
+ 'Actions.getDownloads',
+ 'Actions.getDownload',
);
$apiNotToCall = array(
diff --git a/tests/PHPUnit/System/DuplicateActionsTest.php b/tests/PHPUnit/System/DuplicateActionsTest.php
index 7d16329fa0..2ffd14be76 100644
--- a/tests/PHPUnit/System/DuplicateActionsTest.php
+++ b/tests/PHPUnit/System/DuplicateActionsTest.php
@@ -64,7 +64,7 @@ class DuplicateActionsTest extends SystemTestCase
'date' => $dateTime,
'compareAgainst' => 'OneVisitorTwoVisits',
'otherRequestParameters' => array(
- 'hideColumns' => 'nb_users',
+ 'hideColumns' => OneVisitorTwoVisitsTest::getValueForHideColumns(),
)
))
);
diff --git a/tests/PHPUnit/System/EnvironmentValidationTest.php b/tests/PHPUnit/System/EnvironmentValidationTest.php
index 8f87d999f3..2755455324 100644
--- a/tests/PHPUnit/System/EnvironmentValidationTest.php
+++ b/tests/PHPUnit/System/EnvironmentValidationTest.php
@@ -10,6 +10,7 @@ namespace Piwik\Tests\System;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
+use Piwik\Version;
/**
* @group System
@@ -134,7 +135,7 @@ class EnvironmentValidationTest extends SystemTestCase
private function assertInstallationProcessStarted($output)
{
- $this->assertContains('<title>Piwik &rsaquo; Installation</title>', $output);
+ $this->assertContains('<title>Piwik '. Version::VERSION .' &rsaquo; Installation</title>', $output);
}
private function simulateAbsentConfigFile($fileName)
diff --git a/tests/PHPUnit/System/OneVisitorTwoVisitsTest.php b/tests/PHPUnit/System/OneVisitorTwoVisitsTest.php
index 9aed096e77..b6a0d0c201 100755
--- a/tests/PHPUnit/System/OneVisitorTwoVisitsTest.php
+++ b/tests/PHPUnit/System/OneVisitorTwoVisitsTest.php
@@ -33,6 +33,14 @@ class OneVisitorTwoVisitsTest extends SystemTestCase
*/
public static $fixture = null; // initialized below class
+ /**
+ * @return string
+ */
+ public static function getValueForHideColumns()
+ {
+ return 'nb_users,sum_bandwidth,nb_hits_with_bandwidth,min_bandwidth,max_bandwidth';
+ }
+
public function setUp()
{
Proxy::getInstance()->setHideIgnoredFunctions(false);
@@ -82,7 +90,7 @@ class OneVisitorTwoVisitsTest extends SystemTestCase
array('all', array('idSite' => $idSite,
'date' => $dateTime,
'otherRequestParameters' => array(
- 'hideColumns' => 'nb_users',
+ 'hideColumns' => self::getValueForHideColumns(),
)
)),
diff --git a/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt b/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt
index 937d7d2f86..2a4d981fa5 100644
--- a/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt
+++ b/tests/PHPUnit/System/expected/test_ArchiveCronTest_archive_php_cron_output.txt
@@ -10,79 +10,95 @@ try 'php archive.php --url=http://your.piwik/path'
-------------------------------------------------------
-INFO [2015-08-20 13:41:26] ---------------------------
-INFO [2015-08-20 13:41:26] INIT
-INFO [2015-08-20 13:41:26] Running Piwik 3.0.0-b1 as Super User
-INFO [2015-08-20 13:41:26] ---------------------------
-INFO [2015-08-20 13:41:26] NOTES
-INFO [2015-08-20 13:41:26] - If you execute this script at least once per hour (or more often) in a crontab, you may disable 'Browser trigger archiving' in Piwik UI > Settings > General Settings.
-INFO [2015-08-20 13:41:26] See the doc at: http://piwik.org/docs/setup-auto-archiving/
-INFO [2015-08-20 13:41:26] - Reports for today will be processed at most every 150 seconds. You can change this value in Piwik UI > Settings > General Settings.
-INFO [2015-08-20 13:41:26] - Reports for the current week/month/year will be refreshed at most every 3600 seconds.
-INFO [2015-08-20 13:41:26] Will invalidate archived reports for 2012-08-09 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-08-10 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-08-11 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-08-15 for following siteIds: 1,2
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2012-09-30 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2014-03-12 for following siteIds: 1
-INFO [2015-08-20 13:41:27] Will invalidate archived reports for 2014-03-13 for following siteIds: 1
-INFO [2015-08-20 13:41:27] - Will process 0 websites with new visits since 7 days 0 hours
-INFO [2015-08-20 13:41:27] - Will process 2 other websites because some old data reports have been invalidated (eg. using the Log Import script) , IDs: 1, 2
-INFO [2015-08-20 13:41:27] ---------------------------
-INFO [2015-08-20 13:41:27] START
-INFO [2015-08-20 13:41:27] Starting Piwik reports archiving...
-INFO [2015-08-20 13:41:27] Will pre-process for website id = 1, period = day, date = last52
-INFO [2015-08-20 13:41:27] - pre-processing all visits
-INFO [2015-08-20 13:41:29] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:41:29] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:41:29] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:41:31] Archived website id = 1, period = day, 3 segments, 0 visits in last last52 days, 0 visits today, Time elapsed: 2.207s
-INFO [2015-08-20 13:41:31] Will pre-process for website id = 1, period = week, date = last260
-INFO [2015-08-20 13:41:31] - pre-processing all visits
-INFO [2015-08-20 13:41:31] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:41:31] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:41:56] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:18] Archived website id = 1, period = week, 3 segments, 40 visits in last last260 weeks, 0 visits this week, Time elapsed: 47.002s
-INFO [2015-08-20 13:42:18] Will pre-process for website id = 1, period = month, date = last52
-INFO [2015-08-20 13:42:18] - pre-processing all visits
-INFO [2015-08-20 13:42:18] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:42:18] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:24] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:29] Archived website id = 1, period = month, 3 segments, 40 visits in last last52 months, 0 visits this month, Time elapsed: 11.370s
-INFO [2015-08-20 13:42:29] Will pre-process for website id = 1, period = year, date = last7
-INFO [2015-08-20 13:42:29] - pre-processing all visits
-INFO [2015-08-20 13:42:29] - pre-processing segment 1/3 browserCode==IE
-INFO [2015-08-20 13:42:29] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:32] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
-INFO [2015-08-20 13:42:34] Archived website id = 1, period = year, 3 segments, 40 visits in last last7 years, 0 visits this year, Time elapsed: 4.820s
-INFO [2015-08-20 13:42:34] Archived website id = 1, 16 API requests, Time elapsed: 67.301s [1/2 done]
-INFO [2015-08-20 13:42:34] Will pre-process for website id = 2, period = day, date = last52
-INFO [2015-08-20 13:42:34] - pre-processing all visits
-INFO [2015-08-20 13:42:36] Archived website id = 2, period = day, 0 segments, 0 visits in last last52 days, 0 visits today, Time elapsed: 0.001s
-INFO [2015-08-20 13:42:36] Will pre-process for website id = 2, period = week, date = last260
-INFO [2015-08-20 13:42:36] - pre-processing all visits
-INFO [2015-08-20 13:42:51] Archived website id = 2, period = week, 0 segments, 1 visits in last last260 weeks, 0 visits this week, Time elapsed: 15.229s
-INFO [2015-08-20 13:42:51] Will pre-process for website id = 2, period = month, date = last52
-INFO [2015-08-20 13:42:51] - pre-processing all visits
-INFO [2015-08-20 13:42:55] Archived website id = 2, period = month, 0 segments, 1 visits in last last52 months, 0 visits this month, Time elapsed: 3.790s
-INFO [2015-08-20 13:42:55] Will pre-process for website id = 2, period = year, date = last7
-INFO [2015-08-20 13:42:55] - pre-processing all visits
-INFO [2015-08-20 13:42:56] Archived website id = 2, period = year, 0 segments, 1 visits in last last7 years, 0 visits this year, Time elapsed: 1.380s
-INFO [2015-08-20 13:42:56] Archived website id = 2, 4 API requests, Time elapsed: 22.132s [2/2 done]
-INFO [2015-08-20 13:42:56] Done archiving!
-INFO [2015-08-20 13:42:56] ---------------------------
-INFO [2015-08-20 13:42:56] SUMMARY
-INFO [2015-08-20 13:42:56] Total visits for today across archived websites: 0
-INFO [2015-08-20 13:42:56] Archived today's reports for 2 websites
-INFO [2015-08-20 13:42:56] Archived week/month/year for 2 websites
-INFO [2015-08-20 13:42:56] Skipped 0 websites: no new visit since the last script execution
-INFO [2015-08-20 13:42:56] Skipped 0 websites day archiving: existing daily reports are less than 150 seconds old
-INFO [2015-08-20 13:42:56] Skipped 0 websites week/month/year archiving: existing periods reports are less than 3600 seconds old
-INFO [2015-08-20 13:42:56] Total API requests: 20
-INFO [2015-08-20 13:42:56] done: 2/2 100%, 0 vtoday, 2 wtoday, 2 wperiods, 20 req, 89599 ms, no error
-INFO [2015-08-20 13:42:56] Time elapsed: 89.600s
-INFO [2015-08-20 13:42:56] ---------------------------
-INFO [2015-08-20 13:42:56] SCHEDULED TASKS
-INFO [2015-08-20 13:42:56] Starting Scheduled tasks...
-INFO [2015-08-20 13:42:56] done
-INFO [2015-08-20 13:42:56] --------------------------- \ No newline at end of file
+INFO [2016-11-15 09:45:30] ---------------------------
+INFO [2016-11-15 09:45:30] INIT
+INFO [2016-11-15 09:45:30] Running Piwik 3.0.0-b2 as Super User
+INFO [2016-11-15 09:45:30] ---------------------------
+INFO [2016-11-15 09:45:30] NOTES
+INFO [2016-11-15 09:45:30] - If you execute this script at least once per hour (or more often) in a crontab, you may disable 'Browser trigger archiving' in Piwik UI > Settings > General Settings.
+INFO [2016-11-15 09:45:30] See the doc at: http://piwik.org/docs/setup-auto-archiving/
+INFO [2016-11-15 09:45:30] - Reports for today will be processed at most every 150 seconds. You can change this value in Piwik UI > Settings > General Settings.
+INFO [2016-11-15 09:45:30] - Reports for the current week/month/year will be refreshed at most every 3600 seconds.
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2012-08-09 for following websites ids: 1
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2012-08-10 for following websites ids: 1
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2012-08-11 for following websites ids: 1
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2012-08-15 for following websites ids: 1,2,3
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2012-09-30 for following websites ids: 1
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2014-03-12 for following websites ids: 1,3
+INFO [2016-11-15 09:45:30] - Will invalidate archived reports for 2014-03-13 for following websites ids: 1,3
+INFO [2016-11-15 09:45:30] - Will process 3 other websites because some old data reports have been invalidated (eg. using the Log Import script) , IDs: 1, 2, 3
+INFO [2016-11-15 09:45:30] ---------------------------
+INFO [2016-11-15 09:45:30] START
+INFO [2016-11-15 09:45:30] Starting Piwik reports archiving...
+INFO [2016-11-15 09:45:30] Old report was invalidated for website id 1
+INFO [2016-11-15 09:45:30] Will pre-process for website id = 1, period = day, date = last52
+INFO [2016-11-15 09:45:30] - pre-processing all visits
+INFO [2016-11-15 09:45:31] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 09:45:31] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:45:32] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:45:35] Archived website id = 1, period = day, 3 segments, 0 visits in last 52 days, 0 visits today, Time elapsed: 5.122s
+INFO [2016-11-15 09:45:35] Will pre-process for website id = 1, period = week, date = last260
+INFO [2016-11-15 09:45:35] - pre-processing all visits
+INFO [2016-11-15 09:45:35] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 09:45:35] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:46:26] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:46:55] Archived website id = 1, period = week, 3 segments, 41 visits in last 260 weeks, 0 visits this week, Time elapsed: 80.017s
+INFO [2016-11-15 09:46:55] Will pre-process for website id = 1, period = month, date = last52
+INFO [2016-11-15 09:46:55] - pre-processing all visits
+INFO [2016-11-15 09:46:55] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 09:46:55] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:47:06] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:47:12] Archived website id = 1, period = month, 3 segments, 41 visits in last 52 months, 0 visits this month, Time elapsed: 16.800s
+INFO [2016-11-15 09:47:12] Will pre-process for website id = 1, period = year, date = last7
+INFO [2016-11-15 09:47:12] - pre-processing all visits
+INFO [2016-11-15 09:47:12] - pre-processing segment 1/3 browserCode==IE
+INFO [2016-11-15 09:47:12] - pre-processing segment 2/3 visitCount<=5;visitorType!=non-existing-type;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:47:16] - pre-processing segment 3/3 visitCount<=5;visitorType!=re%2C%3Btest%20is%20encoded;daysSinceFirstVisit<=50
+INFO [2016-11-15 09:47:18] Archived website id = 1, period = year, 3 segments, 41 visits in last 7 years, 0 visits this year, Time elapsed: 6.342s
+INFO [2016-11-15 09:47:18] Archived website id = 1, 16 API requests, Time elapsed: 108.287s [1/3 done]
+INFO [2016-11-15 09:47:18] Old report was invalidated for website id 2
+INFO [2016-11-15 09:47:18] Will pre-process for website id = 2, period = day, date = last52
+INFO [2016-11-15 09:47:18] - pre-processing all visits
+INFO [2016-11-15 09:47:20] Archived website id = 2, period = day, 0 segments, 0 visits in last 52 days, 0 visits today, Time elapsed: 1.610s
+INFO [2016-11-15 09:47:20] Will pre-process for website id = 2, period = week, date = last260
+INFO [2016-11-15 09:47:20] - pre-processing all visits
+INFO [2016-11-15 09:47:40] Archived website id = 2, period = week, 0 segments, 1 visits in last 260 weeks, 0 visits this week, Time elapsed: 20.198s
+INFO [2016-11-15 09:47:40] Will pre-process for website id = 2, period = month, date = last52
+INFO [2016-11-15 09:47:40] - pre-processing all visits
+INFO [2016-11-15 09:47:44] Archived website id = 2, period = month, 0 segments, 1 visits in last 52 months, 0 visits this month, Time elapsed: 4.258s
+INFO [2016-11-15 09:47:44] Will pre-process for website id = 2, period = year, date = last7
+INFO [2016-11-15 09:47:44] - pre-processing all visits
+INFO [2016-11-15 09:47:45] Archived website id = 2, period = year, 0 segments, 1 visits in last 7 years, 0 visits this year, Time elapsed: 1.143s
+INFO [2016-11-15 09:47:45] Archived website id = 2, 4 API requests, Time elapsed: 27.212s [2/3 done]
+INFO [2016-11-15 09:47:45] Old report was invalidated for website id 3
+INFO [2016-11-15 09:47:45] Will pre-process for website id = 3, period = day, date = last52
+INFO [2016-11-15 09:47:45] - pre-processing all visits
+INFO [2016-11-15 09:47:47] Archived website id = 3, period = day, 0 segments, 0 visits in last 52 days, 0 visits today, Time elapsed: 1.496s
+INFO [2016-11-15 09:47:47] Will pre-process for website id = 3, period = week, date = last260
+INFO [2016-11-15 09:47:47] - pre-processing all visits
+INFO [2016-11-15 09:48:08] Archived website id = 3, period = week, 0 segments, 15 visits in last 260 weeks, 0 visits this week, Time elapsed: 21.096s
+INFO [2016-11-15 09:48:08] Will pre-process for website id = 3, period = month, date = last52
+INFO [2016-11-15 09:48:08] - pre-processing all visits
+INFO [2016-11-15 09:48:12] Archived website id = 3, period = month, 0 segments, 15 visits in last 52 months, 0 visits this month, Time elapsed: 4.401s
+INFO [2016-11-15 09:48:12] Will pre-process for website id = 3, period = year, date = last7
+INFO [2016-11-15 09:48:12] - pre-processing all visits
+INFO [2016-11-15 09:48:14] Archived website id = 3, period = year, 0 segments, 15 visits in last 7 years, 0 visits this year, Time elapsed: 1.760s
+INFO [2016-11-15 09:48:14] Archived website id = 3, 4 API requests, Time elapsed: 28.759s [3/3 done]
+INFO [2016-11-15 09:48:14] Done archiving!
+INFO [2016-11-15 09:48:14] ---------------------------
+INFO [2016-11-15 09:48:14] SUMMARY
+INFO [2016-11-15 09:48:14] Total visits for today across archived websites: 0
+INFO [2016-11-15 09:48:14] Archived today's reports for 3 websites
+INFO [2016-11-15 09:48:14] Archived week/month/year for 3 websites
+INFO [2016-11-15 09:48:14] Skipped 0 websites
+INFO [2016-11-15 09:48:14] - 0 skipped because no new visit since the last script execution
+INFO [2016-11-15 09:48:14] - 0 skipped because existing daily reports are less than 150 seconds old
+INFO [2016-11-15 09:48:14] - 0 skipped because existing week/month/year periods reports are less than 3600 seconds old
+INFO [2016-11-15 09:48:14] Total API requests: 24
+INFO [2016-11-15 09:48:14] done: 3/3 100%, 0 vtoday, 3 wtoday, 3 wperiods, 24 req, 164395 ms, no error
+INFO [2016-11-15 09:48:14] Time elapsed: 164.395s
+INFO [2016-11-15 09:48:14] ---------------------------
+INFO [2016-11-15 09:48:14] SCHEDULED TASKS
+INFO [2016-11-15 09:48:14] Starting Scheduled tasks...
+INFO [2016-11-15 09:48:14] done
+INFO [2016-11-15 09:48:14] --------------------------- \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldAppear__Actions.getPageUrls_month.xml
index 9d4036502d..f5b884d9e7 100644
--- a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldAppear__Actions.getPageUrls_month.xml
@@ -6,10 +6,15 @@
<nb_visits>6</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>12</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,6 +24,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>12</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -35,6 +44,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -46,6 +59,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -57,6 +74,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -70,7 +91,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -82,7 +108,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -94,7 +125,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -104,6 +140,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldNotAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldNotAppear__Actions.getPageUrls_month.xml
index 3330a1f532..c5ea30dee9 100644
--- a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldNotAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite1_NewDataShouldNotAppear__Actions.getPageUrls_month.xml
@@ -6,10 +6,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,6 +24,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -35,6 +44,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -46,6 +59,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -59,7 +76,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -71,7 +93,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -83,7 +110,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -93,6 +125,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldAppear__Actions.getPageUrls_month.xml
index ad5d8b5c44..581a401c7f 100644
--- a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldAppear__Actions.getPageUrls_month.xml
@@ -6,10 +6,15 @@
<nb_visits>6</nb_visits>
<nb_hits>9</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>18</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,6 +24,10 @@
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>18</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -35,6 +44,10 @@
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -46,6 +59,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -57,6 +74,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
diff --git a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear_BecauseDayWasNotInvalidated__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear_BecauseDayWasNotInvalidated__Actions.getPageUrls_day.xml
index dea43adf43..b49bbf1a47 100644
--- a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear_BecauseDayWasNotInvalidated__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear_BecauseDayWasNotInvalidated__Actions.getPageUrls_day.xml
@@ -6,10 +6,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
@@ -36,6 +45,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -47,6 +60,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear__Actions.getPageUrls_month.xml
index 80d2fcadd7..a5918ddc87 100644
--- a/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_Archive_InvalidationWebsite2_NewDataShouldNotAppear__Actions.getPageUrls_month.xml
@@ -6,10 +6,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,6 +24,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -35,6 +44,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -46,6 +59,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
diff --git a/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_bandwidth__API.getSuggestedValuesForSegment.xml b/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_bandwidth__API.getSuggestedValuesForSegment.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_bandwidth__API.getSuggestedValuesForSegment.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownload_day.xml b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownload_day.xml
new file mode 100644
index 0000000000..9e66bfb0fa
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownload_day.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>/path/again/latest.zip</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>72</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
+ <url>http://piwik.org/path/again/latest.zip</url>
+ </row>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownloads_day.xml
new file mode 100644
index 0000000000..4295987c9f
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getDownloads_day.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>piwik.org</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>72</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
+ <subtable>
+ <row>
+ <label>/path/again/latest.zip</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>72</sum_time_spent>
+ <url>http://piwik.org/path/again/latest.zip</url>
+ </row>
+ </subtable>
+ </row>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getPageUrls_day.xml
new file mode 100644
index 0000000000..1d1ccf58c2
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest__Actions.getPageUrls_day.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>/index</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>180</sum_time_spent>
+ <sum_time_generation>0.224</sum_time_generation>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.224</min_time_generation>
+ <max_time_generation>0.224</max_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>180</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>0%</exit_rate>
+ <avg_time_generation>0.224</avg_time_generation>
+ <url>http://example.org/</url>
+ <segment>pageUrl==http%3A%2F%2Fexample.org%2F</segment>
+ </row>
+ <row>
+ <label>/index.htm</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_time_generation>0.023</sum_time_generation>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.023</min_time_generation>
+ <max_time_generation>0.023</max_time_generation>
+ <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <avg_time_generation>0.023</avg_time_generation>
+ <url>http://example.org/index.htm</url>
+ <segment>pageUrl==http%3A%2F%2Fexample.org%2Findex.htm</segment>
+ </row>
+ <row>
+ <label>/index.htm?parameter=Should display</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>180</sum_time_spent>
+ <sum_time_generation>0.234</sum_time_generation>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.234</min_time_generation>
+ <max_time_generation>0.234</max_time_generation>
+ <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>7</entry_nb_actions>
+ <entry_sum_visit_length>1621</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>180</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>0%</exit_rate>
+ <avg_time_generation>0.234</avg_time_generation>
+ <url>http://example.org/index.htm?parameter=Should display</url>
+ <segment>pageUrl==http%3A%2F%2Fexample.org%2Findex.htm%3Fparameter%3DShould+display</segment>
+ </row>
+ <row>
+ <label>store</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_time_generation>0.134</sum_time_generation>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.134</min_time_generation>
+ <max_time_generation>0.134</max_time_generation>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <avg_time_generation>0.134</avg_time_generation>
+ <subtable>
+ <row>
+ <label>/purchase.htm</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_time_generation>0.134</sum_time_generation>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.134</min_time_generation>
+ <max_time_generation>0.134</max_time_generation>
+ <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <avg_time_generation>0.134</avg_time_generation>
+ <url>http://example.org/store/purchase.htm</url>
+ </row>
+ </subtable>
+ </row>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_expanded__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_expanded__Actions.getPageUrls_range.xml
index 9e5d3bbf74..719b6f3532 100644
--- a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_expanded__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_expanded__Actions.getPageUrls_range.xml
@@ -9,6 +9,7 @@
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -27,6 +28,7 @@
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -48,6 +50,7 @@
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -68,6 +71,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_flat__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_flat__Actions.getPageUrls_range.xml
index 47bcc76ce1..cfafa11669 100644
--- a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_flat__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_flat__Actions.getPageUrls_range.xml
@@ -9,6 +9,7 @@
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -27,6 +28,7 @@
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -48,6 +50,7 @@
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -71,6 +74,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_subtable__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_subtable__Actions.getPageUrls_day.xml
index 22804beb71..b7ed8ccc1d 100644
--- a/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_subtable__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_BackwardsCompatibility1XTest_subtable__Actions.getPageUrls_day.xml
@@ -16,6 +16,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml
index a852445667..752688cc92 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml
@@ -282,57 +282,57 @@
<row>
<segment>eventAction==playTrailer</segment>
- <idsubdatatable>1548</idsubdatatable>
+ <idsubdatatable>1564</idsubdatatable>
</row>
<row>
<segment>eventAction==Search</segment>
- <idsubdatatable>1541</idsubdatatable>
+ <idsubdatatable>1557</idsubdatatable>
</row>
<row>
<segment>eventAction==play25%25</segment>
- <idsubdatatable>1543</idsubdatatable>
+ <idsubdatatable>1559</idsubdatatable>
</row>
<row>
<segment>eventAction==play50%25</segment>
- <idsubdatatable>1544</idsubdatatable>
+ <idsubdatatable>1560</idsubdatatable>
</row>
<row>
<segment>eventAction==play75%25</segment>
- <idsubdatatable>1545</idsubdatatable>
+ <idsubdatatable>1561</idsubdatatable>
</row>
<row>
<segment>eventAction==playEnd</segment>
- <idsubdatatable>1546</idsubdatatable>
+ <idsubdatatable>1562</idsubdatatable>
</row>
<row>
<segment>eventAction==rating</segment>
- <idsubdatatable>1547</idsubdatatable>
+ <idsubdatatable>1563</idsubdatatable>
</row>
<row>
<segment>eventAction==clickBuyNow</segment>
- <idsubdatatable>1549</idsubdatatable>
+ <idsubdatatable>1565</idsubdatatable>
</row>
<row>
<segment>eventAction==event+action+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+---%26gt%3B+SHOULD+APPEAR+IN+TEST+OUTPUT+NOT+TRUNCATED+%26lt%3B---</segment>
- <idsubdatatable>1551</idsubdatatable>
+ <idsubdatatable>1567</idsubdatatable>
</row>
<row>
<segment>eventAction==play</segment>
- <idsubdatatable>1542</idsubdatatable>
+ <idsubdatatable>1558</idsubdatatable>
</row>
<row>
<segment>eventAction==playStart</segment>
- <idsubdatatable>1550</idsubdatatable>
+ <idsubdatatable>1566</idsubdatatable>
</row>
<row>
<segment>eventAction==Purchase</segment>
@@ -345,57 +345,57 @@
<row>
<segment>eventAction==playTrailer</segment>
- <idsubdatatable>1560</idsubdatatable>
+ <idsubdatatable>1576</idsubdatatable>
</row>
<row>
<segment>eventAction==Search</segment>
- <idsubdatatable>1553</idsubdatatable>
+ <idsubdatatable>1569</idsubdatatable>
</row>
<row>
<segment>eventAction==play25%25</segment>
- <idsubdatatable>1555</idsubdatatable>
+ <idsubdatatable>1571</idsubdatatable>
</row>
<row>
<segment>eventAction==play50%25</segment>
- <idsubdatatable>1556</idsubdatatable>
+ <idsubdatatable>1572</idsubdatatable>
</row>
<row>
<segment>eventAction==play75%25</segment>
- <idsubdatatable>1557</idsubdatatable>
+ <idsubdatatable>1573</idsubdatatable>
</row>
<row>
<segment>eventAction==playEnd</segment>
- <idsubdatatable>1558</idsubdatatable>
+ <idsubdatatable>1574</idsubdatatable>
</row>
<row>
<segment>eventAction==rating</segment>
- <idsubdatatable>1559</idsubdatatable>
+ <idsubdatatable>1575</idsubdatatable>
</row>
<row>
<segment>eventAction==clickBuyNow</segment>
- <idsubdatatable>1561</idsubdatatable>
+ <idsubdatatable>1577</idsubdatatable>
</row>
<row>
<segment>eventAction==event+action+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+---%26gt%3B+SHOULD+APPEAR+IN+TEST+OUTPUT+NOT+TRUNCATED+%26lt%3B---</segment>
- <idsubdatatable>1563</idsubdatatable>
+ <idsubdatatable>1579</idsubdatatable>
</row>
<row>
<segment>eventAction==play</segment>
- <idsubdatatable>1554</idsubdatatable>
+ <idsubdatatable>1570</idsubdatatable>
</row>
<row>
<segment>eventAction==playStart</segment>
- <idsubdatatable>1562</idsubdatatable>
+ <idsubdatatable>1578</idsubdatatable>
</row>
<row>
<segment>eventAction==Purchase</segment>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml
index 69faeb032f..e70463b3c5 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml
@@ -120,39 +120,39 @@
<row>
<segment>eventCategory==Movie</segment>
- <idsubdatatable>1478</idsubdatatable>
+ <idsubdatatable>1494</idsubdatatable>
</row>
<row>
<segment>eventCategory==Music</segment>
- <idsubdatatable>1479</idsubdatatable>
+ <idsubdatatable>1495</idsubdatatable>
</row>
<row>
<segment>eventCategory==event+category+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+---%26gt%3B+SHOULD+APPEAR+IN+TEST+OUTPUT+NOT+TRUNCATED+%26lt%3B---</segment>
- <idsubdatatable>1480</idsubdatatable>
+ <idsubdatatable>1496</idsubdatatable>
</row>
<row>
<segment>eventCategory==CategoryTriggersGoal+here</segment>
- <idsubdatatable>1481</idsubdatatable>
+ <idsubdatatable>1497</idsubdatatable>
</row>
</result>
<result prettyDate="Monday, January 4, 2010">
<row>
<segment>eventCategory==Movie</segment>
- <idsubdatatable>1483</idsubdatatable>
+ <idsubdatatable>1499</idsubdatatable>
</row>
<row>
<segment>eventCategory==Music</segment>
- <idsubdatatable>1484</idsubdatatable>
+ <idsubdatatable>1500</idsubdatatable>
</row>
<row>
<segment>eventCategory==event+category+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+---%26gt%3B+SHOULD+APPEAR+IN+TEST+OUTPUT+NOT+TRUNCATED+%26lt%3B---</segment>
- <idsubdatatable>1485</idsubdatatable>
+ <idsubdatatable>1501</idsubdatatable>
</row>
</result>
<result prettyDate="Tuesday, January 5, 2010" />
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml
index 5f043780cf..c7dba13351 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml
@@ -183,72 +183,72 @@
<row>
<segment>eventName==Spirited+Away+%28%E5%8D%83%E3%81%A8%E5%8D%83%E5%B0%8B%E3%81%AE%E7%A5%9E%E9%9A%A0%E3%81%97%29</segment>
- <idsubdatatable>1636</idsubdatatable>
+ <idsubdatatable>1652</idsubdatatable>
</row>
<row>
<segment>eventName==La+fianc%C3%A9e+de+l%26%23039%3Beau</segment>
- <idsubdatatable>1635</idsubdatatable>
+ <idsubdatatable>1651</idsubdatatable>
</row>
<row>
- <idsubdatatable>1634</idsubdatatable>
+ <idsubdatatable>1650</idsubdatatable>
</row>
<row>
<segment>eventName==event+name+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+---%26gt%3B+SHOULD+APPEAR+IN+TEST+OUTPUT+NOT+TRUNCATED+%26lt%3B---</segment>
- <idsubdatatable>1640</idsubdatatable>
+ <idsubdatatable>1656</idsubdatatable>
</row>
<row>
<segment>eventName==Ponyo+%28%E5%B4%96%E3%81%AE%E4%B8%8A%E3%81%AE%E3%83%9D%E3%83%8B%E3%83%A7%29</segment>
- <idsubdatatable>1638</idsubdatatable>
+ <idsubdatatable>1654</idsubdatatable>
</row>
<row>
<segment>eventName==Princess+Mononoke+%28%E3%82%82%E3%81%AE%E3%81%AE%E3%81%91%E5%A7%AB%29</segment>
- <idsubdatatable>1637</idsubdatatable>
+ <idsubdatatable>1653</idsubdatatable>
</row>
<row>
<segment>eventName==Search+query+here</segment>
- <idsubdatatable>1639</idsubdatatable>
+ <idsubdatatable>1655</idsubdatatable>
</row>
</result>
<result prettyDate="Monday, January 4, 2010">
<row>
<segment>eventName==Spirited+Away+%28%E5%8D%83%E3%81%A8%E5%8D%83%E5%B0%8B%E3%81%AE%E7%A5%9E%E9%9A%A0%E3%81%97%29</segment>
- <idsubdatatable>1644</idsubdatatable>
+ <idsubdatatable>1660</idsubdatatable>
</row>
<row>
<segment>eventName==La+fianc%C3%A9e+de+l%26%23039%3Beau</segment>
- <idsubdatatable>1643</idsubdatatable>
+ <idsubdatatable>1659</idsubdatatable>
</row>
<row>
- <idsubdatatable>1642</idsubdatatable>
+ <idsubdatatable>1658</idsubdatatable>
</row>
<row>
<segment>eventName==event+name+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+Extremely+long+---%26gt%3B+SHOULD+APPEAR+IN+TEST+OUTPUT+NOT+TRUNCATED+%26lt%3B---</segment>
- <idsubdatatable>1648</idsubdatatable>
+ <idsubdatatable>1664</idsubdatatable>
</row>
<row>
<segment>eventName==Ponyo+%28%E5%B4%96%E3%81%AE%E4%B8%8A%E3%81%AE%E3%83%9D%E3%83%8B%E3%83%A7%29</segment>
- <idsubdatatable>1646</idsubdatatable>
+ <idsubdatatable>1662</idsubdatatable>
</row>
<row>
<segment>eventName==Princess+Mononoke+%28%E3%82%82%E3%81%AE%E3%81%AE%E3%81%91%E5%A7%AB%29</segment>
- <idsubdatatable>1645</idsubdatatable>
+ <idsubdatatable>1661</idsubdatatable>
</row>
<row>
<segment>eventName==Search+query+here</segment>
- <idsubdatatable>1647</idsubdatatable>
+ <idsubdatatable>1663</idsubdatatable>
</row>
</result>
<result prettyDate="Tuesday, January 5, 2010" />
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml
index 7aceeda4db..9dd882ade9 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.666</min_time_generation>
<max_time_generation>0.666</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
@@ -16,6 +20,7 @@
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_uniq_visitors>2</exit_nb_uniq_visitors>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -32,11 +37,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.333</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>16</entry_nb_actions>
<entry_sum_visit_length>3601</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml
index 842dff57a1..10052c4e21 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.666</min_time_generation>
<max_time_generation>0.666</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>28</entry_nb_actions>
<entry_sum_visit_length>7082</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -31,12 +36,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.333</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>16</entry_nb_actions>
<entry_sum_visit_length>3601</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_FlattenReports__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_FlattenReports__Actions.getPageUrls_week.xml
index 1f0e32ad7d..3ba555ab1a 100644
--- a/tests/PHPUnit/System/expected/test_FlattenReports__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_FlattenReports__Actions.getPageUrls_week.xml
@@ -8,12 +8,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -29,7 +34,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>0.4</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -45,9 +55,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -63,12 +78,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>0.4</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -84,7 +104,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.4</min_time_generation>
<max_time_generation>0.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -100,9 +125,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.6</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -118,12 +148,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -139,7 +174,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.6</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -155,9 +195,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.9</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -173,9 +218,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -191,12 +241,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_FlattenReports_expandedSubtable__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_FlattenReports_expandedSubtable__Actions.getPageUrls_week.xml
index a40bfb0dea..d76978c8e8 100644
--- a/tests/PHPUnit/System/expected/test_FlattenReports_expandedSubtable__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_FlattenReports_expandedSubtable__Actions.getPageUrls_week.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -44,6 +53,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -64,6 +77,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>0.4</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -79,6 +96,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_FlattenReports_expandedWithDepth__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_FlattenReports_expandedWithDepth__Actions.getPageUrls_week.xml
index 41aff4d22e..a0b25a2d86 100644
--- a/tests/PHPUnit/System/expected/test_FlattenReports_expandedWithDepth__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_FlattenReports_expandedWithDepth__Actions.getPageUrls_week.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -46,11 +55,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -64,6 +78,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -84,11 +102,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -102,6 +125,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -122,9 +149,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -140,10 +172,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -154,6 +191,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
diff --git a/tests/PHPUnit/System/expected/test_FlattenReports_flatFilterPatternRecursive__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_FlattenReports_flatFilterPatternRecursive__Actions.getPageUrls_week.xml
index a2c2fa204e..c5b9c50cb3 100644
--- a/tests/PHPUnit/System/expected/test_FlattenReports_flatFilterPatternRecursive__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_FlattenReports_flatFilterPatternRecursive__Actions.getPageUrls_week.xml
@@ -8,12 +8,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>0.4</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -29,7 +34,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.4</min_time_generation>
<max_time_generation>0.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -45,9 +55,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.6</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_FlattenReports_withAggregate__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_FlattenReports_withAggregate__Actions.getPageUrls_week.xml
index 168dd14039..155db4a5b8 100644
--- a/tests/PHPUnit/System/expected/test_FlattenReports_withAggregate__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_FlattenReports_withAggregate__Actions.getPageUrls_week.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -27,11 +32,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -46,11 +56,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -65,11 +80,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -84,11 +104,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -103,11 +128,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -122,11 +152,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -141,11 +176,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -160,11 +200,16 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -179,12 +224,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.1</min_time_generation>
<max_time_generation>0.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -201,7 +251,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>0.4</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -218,9 +273,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -237,12 +297,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.2</min_time_generation>
<max_time_generation>0.4</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -259,7 +324,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.4</min_time_generation>
<max_time_generation>0.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -276,9 +346,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.6</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -295,12 +370,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.3</min_time_generation>
<max_time_generation>0.6</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -317,7 +397,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.6</min_time_generation>
<max_time_generation>1.2</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -334,9 +419,14 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.9</min_time_generation>
<max_time_generation>1.8</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -353,9 +443,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -372,10 +467,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -390,10 +490,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -408,10 +513,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -426,12 +536,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml
index 5eb17eb532..9ccbe2b8b0 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_month.xml
@@ -4,26 +4,23 @@
<label>piwik.net</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
- <sum_time_spent>122</sum_time_spent>
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>123</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>4334745</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>4334745</min_bandwidth>
+ <max_bandwidth>4334745</max_bandwidth>
+ <avg_bandwidth>1083686</avg_bandwidth>
<subtable>
<row>
<label>/19.pdf</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>4324023</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>4324023</min_bandwidth>
+ <max_bandwidth>4324023</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://piwik.net/19.pdf</url>
</row>
<row>
@@ -31,16 +28,22 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://piwik.net/other.png</url>
</row>
<row>
<label>/thing.css</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>61</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<url>http://piwik.net/thing.css</url>
</row>
@@ -48,13 +51,12 @@
<label>/thing.js</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>61</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>123</entry_sum_visit_length>
- <entry_bounce_count>0</entry_bounce_count>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<url>http://piwik.net/thing.js</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml
index 9c5b690268..6c9e470aa6 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getDownloads_range.xml
@@ -4,26 +4,23 @@
<label>piwik.net</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
- <sum_time_spent>122</sum_time_spent>
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>123</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>4334745</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>4334745</min_bandwidth>
+ <max_bandwidth>4334745</max_bandwidth>
+ <avg_bandwidth>1083686</avg_bandwidth>
<subtable>
<row>
<label>/19.pdf</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>4324023</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>4324023</min_bandwidth>
+ <max_bandwidth>4324023</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://piwik.net/19.pdf</url>
</row>
<row>
@@ -31,16 +28,22 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://piwik.net/other.png</url>
</row>
<row>
<label>/thing.css</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>61</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<url>http://piwik.net/thing.css</url>
</row>
@@ -48,13 +51,12 @@
<label>/thing.js</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>61</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>123</entry_sum_visit_length>
- <entry_bounce_count>0</entry_bounce_count>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<url>http://piwik.net/thing.js</url>
</row>
</subtable>
@@ -64,16 +66,22 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <avg_bandwidth>43</avg_bandwidth>
<subtable>
<row>
<label>/latest.zip</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://builds.piwik.org/latest.zip</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_month.xml
index 218e05a865..ef040f1cf0 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_month.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>60</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>67%</exit_rate>
@@ -23,6 +28,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -40,6 +49,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
@@ -60,11 +73,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -78,6 +96,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -99,6 +121,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -122,11 +148,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>355</avg_bandwidth>
<avg_time_on_page>240</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -137,6 +168,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -159,11 +194,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -174,6 +214,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -196,6 +240,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -204,6 +252,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -217,6 +266,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -225,6 +278,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_range.xml
index 49fa35ed97..b3daf9ac6b 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageTitles_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>44</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -29,11 +34,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>60</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>67%</exit_rate>
@@ -44,6 +54,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -61,6 +75,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
@@ -81,11 +99,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -99,6 +122,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -120,6 +147,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -143,6 +174,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -151,6 +186,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -164,11 +200,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>355</avg_bandwidth>
<avg_time_on_page>240</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -179,6 +220,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -201,11 +246,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -216,6 +266,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,12 +292,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>81</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -257,11 +316,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -275,6 +339,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -298,6 +366,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -306,6 +378,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -319,6 +392,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -327,6 +404,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -340,6 +418,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -348,6 +430,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -361,6 +444,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -369,6 +456,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -382,6 +470,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -390,6 +482,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml
index 798759bcea..0aaf67dc83 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>21444</sum_bandwidth>
+ <nb_hits_with_bandwidth>6</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>6</entry_bounce_count>
<exit_nb_visits>6</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -23,6 +28,10 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>17870</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>10722</min_bandwidth>
+ <max_bandwidth>10722</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -37,6 +46,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -51,6 +64,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -71,6 +88,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -85,6 +106,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -107,6 +132,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -121,6 +150,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -135,6 +168,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -149,6 +186,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -178,11 +219,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -193,6 +239,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -207,6 +257,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -227,6 +281,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -245,6 +303,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -259,6 +321,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -284,11 +350,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -299,6 +370,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -317,6 +392,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -331,6 +410,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -351,6 +434,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -365,6 +452,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -390,11 +481,16 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>67%</bounce_rate>
<exit_rate>75%</exit_rate>
@@ -408,6 +504,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -426,6 +526,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -444,6 +548,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -462,6 +570,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -490,6 +602,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -508,6 +624,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -534,6 +654,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>8063</sum_bandwidth>
+ <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
+ <min_bandwidth>8063</min_bandwidth>
+ <max_bandwidth>8063</max_bandwidth>
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -542,6 +666,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>2687</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -557,11 +682,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>2982</avg_bandwidth>
<avg_time_on_page>120</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -572,6 +702,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -586,6 +720,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -600,6 +738,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -614,6 +756,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -641,11 +787,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -656,6 +807,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -679,6 +834,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -687,6 +846,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -702,12 +862,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -723,6 +888,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -731,6 +900,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -746,6 +916,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -754,6 +928,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -769,11 +944,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>267</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -787,6 +967,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -811,11 +995,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -826,6 +1015,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -840,6 +1033,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -865,11 +1062,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -880,6 +1082,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -903,11 +1109,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -918,6 +1129,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -941,11 +1156,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -956,6 +1176,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -979,11 +1203,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -997,6 +1226,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -1021,11 +1254,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1036,6 +1274,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1050,6 +1292,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1064,6 +1310,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1078,6 +1328,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1092,6 +1346,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1106,6 +1364,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1120,6 +1382,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1134,6 +1400,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1148,6 +1418,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1187,11 +1461,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1202,6 +1481,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1225,11 +1508,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>182</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1243,6 +1531,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1261,6 +1553,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
index ed79501504..93ecf7ff87 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>7</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>21530</sum_bandwidth>
+ <nb_hits_with_bandwidth>8</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>18</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>8</entry_bounce_count>
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>2691</avg_bandwidth>
<avg_time_on_page>13</avg_time_on_page>
<bounce_rate>89%</bounce_rate>
<exit_rate>80%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>5</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>17870</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>15</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -44,6 +53,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -62,6 +75,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -86,6 +103,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -104,6 +125,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -130,6 +155,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>3617</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>3617</min_bandwidth>
+ <max_bandwidth>3617</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -148,6 +177,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -163,6 +196,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -177,6 +214,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -202,6 +243,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -220,6 +265,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,6 +287,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -266,6 +319,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -284,6 +341,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -302,6 +363,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -320,6 +385,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -350,6 +419,10 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>8235</sum_bandwidth>
+ <nb_hits_with_bandwidth>7</nb_hits_with_bandwidth>
+ <min_bandwidth>8149</min_bandwidth>
+ <max_bandwidth>8149</max_bandwidth>
<entry_nb_visits>7</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>44</entry_sum_visit_length>
@@ -358,6 +431,7 @@
<sum_daily_nb_uniq_visitors>7</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>7</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>5</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>1176</avg_bandwidth>
<avg_time_on_page>5</avg_time_on_page>
<bounce_rate>71%</bounce_rate>
<exit_rate>71%</exit_rate>
@@ -373,11 +447,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>14339</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>2867</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>83%</exit_rate>
@@ -391,6 +470,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -409,6 +492,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -433,6 +520,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -455,6 +546,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -473,6 +568,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -497,6 +596,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -512,6 +615,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -537,11 +644,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -555,6 +667,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -577,6 +693,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -592,6 +712,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -615,6 +739,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -630,6 +758,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -655,11 +787,16 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>67%</bounce_rate>
<exit_rate>75%</exit_rate>
@@ -673,6 +810,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -691,6 +832,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -709,6 +854,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -727,6 +876,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -755,6 +908,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -773,6 +930,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -799,11 +960,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>2982</avg_bandwidth>
<avg_time_on_page>120</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -814,6 +980,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -828,6 +998,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -842,6 +1016,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -856,6 +1034,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -883,14 +1065,19 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>3617</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>3617</min_bandwidth>
+ <max_bandwidth>3617</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>1808</avg_bandwidth>
<avg_time_on_page>4</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <exit_rate>100%</exit_rate>
<avg_time_generation>0.113</avg_time_generation>
<subtable>
<row>
@@ -898,6 +1085,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -912,6 +1103,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -937,11 +1132,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -955,6 +1155,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -979,11 +1183,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -994,6 +1203,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1017,6 +1230,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1025,6 +1242,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1040,6 +1258,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1048,6 +1270,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1063,12 +1286,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -1084,6 +1312,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1092,6 +1324,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1107,6 +1340,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1115,6 +1352,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1130,11 +1368,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>267</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1148,6 +1391,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1172,10 +1419,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>81</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -1186,6 +1438,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>79</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>81</entry_sum_visit_length>
@@ -1207,11 +1463,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1222,6 +1483,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1245,11 +1510,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1260,6 +1530,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1283,11 +1557,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1298,6 +1577,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1321,11 +1604,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1339,6 +1627,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -1363,11 +1655,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1378,6 +1675,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1392,6 +1693,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1406,6 +1711,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1420,6 +1729,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1434,6 +1747,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1448,6 +1765,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1462,6 +1783,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1476,6 +1801,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1490,6 +1819,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1529,11 +1862,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1544,6 +1882,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1567,11 +1909,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>182</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1585,6 +1932,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1603,6 +1954,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_month.xml
index ffc2ee4174..fbde50fc45 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_month.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>60</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>67%</exit_rate>
@@ -23,6 +28,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -45,11 +54,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -63,6 +77,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -84,6 +102,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -107,11 +129,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>355</avg_bandwidth>
<avg_time_on_page>240</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -122,6 +149,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -144,7 +175,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -155,6 +191,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -172,11 +212,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -187,6 +232,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -209,6 +258,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -217,6 +270,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -230,6 +284,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,6 +296,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_range.xml
index a0ab075857..13791f3af2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageTitles_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>44</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -29,11 +34,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>60</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>67%</exit_rate>
@@ -44,6 +54,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -66,11 +80,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -84,6 +103,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -105,6 +128,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -128,6 +155,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -136,6 +167,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -149,11 +181,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>355</avg_bandwidth>
<avg_time_on_page>240</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -164,6 +201,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -186,7 +227,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -197,6 +243,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -214,11 +264,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -229,6 +284,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -251,9 +310,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -267,11 +331,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -285,6 +354,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -308,9 +381,14 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -324,6 +402,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -332,6 +414,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -345,6 +428,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -353,6 +440,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -366,6 +454,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -374,6 +466,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -387,6 +480,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -395,6 +492,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -408,6 +506,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -416,6 +518,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -429,9 +532,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml
index edf1ae59e6..106455bed5 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>21444</sum_bandwidth>
+ <nb_hits_with_bandwidth>6</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>6</entry_bounce_count>
<exit_nb_visits>6</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -23,6 +28,10 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>17870</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>10722</min_bandwidth>
+ <max_bandwidth>10722</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -37,6 +46,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -51,6 +64,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -71,6 +88,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -85,6 +106,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -107,6 +132,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -121,6 +150,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -135,6 +168,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -149,6 +186,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -178,11 +219,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -193,6 +239,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -207,6 +257,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -227,6 +281,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -245,6 +303,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -259,6 +321,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -284,11 +350,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -299,6 +370,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -317,6 +392,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -331,6 +410,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -351,6 +434,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -365,6 +452,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -390,11 +481,16 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>67%</bounce_rate>
<exit_rate>75%</exit_rate>
@@ -408,6 +504,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -426,6 +526,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -444,6 +548,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -462,6 +570,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -490,6 +602,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -508,6 +624,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -534,6 +654,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>8063</sum_bandwidth>
+ <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
+ <min_bandwidth>8063</min_bandwidth>
+ <max_bandwidth>8063</max_bandwidth>
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -542,6 +666,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>2687</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -557,11 +682,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>2982</avg_bandwidth>
<avg_time_on_page>120</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -572,6 +702,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -586,6 +720,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -600,6 +738,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -614,6 +756,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>5609</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>5609</min_bandwidth>
+ <max_bandwidth>5609</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -638,11 +784,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -653,6 +804,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -676,6 +831,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -684,6 +843,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -699,6 +859,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -707,6 +871,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -722,9 +887,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -740,6 +910,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -748,6 +922,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -763,11 +938,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>267</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -781,6 +961,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -805,11 +989,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -820,6 +1009,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -834,6 +1027,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -859,11 +1056,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -874,6 +1076,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -897,11 +1103,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -912,6 +1123,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -935,11 +1150,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -950,6 +1170,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -973,11 +1197,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -991,6 +1220,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -1015,11 +1248,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1030,6 +1268,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1044,6 +1286,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1058,6 +1304,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1072,6 +1322,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1086,6 +1340,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1100,6 +1358,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1114,6 +1376,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1128,6 +1394,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1142,6 +1412,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1181,11 +1455,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1196,6 +1475,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1219,11 +1502,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>182</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1237,6 +1525,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1255,6 +1547,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
index 7973b3e001..3e2262fa0c 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>7</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>21530</sum_bandwidth>
+ <nb_hits_with_bandwidth>8</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>18</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>8</entry_bounce_count>
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>2691</avg_bandwidth>
<avg_time_on_page>13</avg_time_on_page>
<bounce_rate>89%</bounce_rate>
<exit_rate>80%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>5</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>17870</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>15</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -44,6 +53,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -62,6 +75,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -86,6 +103,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -104,6 +125,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -130,6 +155,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>3617</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>3617</min_bandwidth>
+ <max_bandwidth>3617</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -148,6 +177,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -163,6 +196,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -177,6 +214,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -202,6 +243,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -220,6 +265,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,6 +287,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -266,6 +319,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -284,6 +341,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -302,6 +363,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -320,6 +385,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -350,6 +419,10 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>8235</sum_bandwidth>
+ <nb_hits_with_bandwidth>7</nb_hits_with_bandwidth>
+ <min_bandwidth>8149</min_bandwidth>
+ <max_bandwidth>8149</max_bandwidth>
<entry_nb_visits>7</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>44</entry_sum_visit_length>
@@ -358,6 +431,7 @@
<sum_daily_nb_uniq_visitors>7</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>7</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>5</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>1176</avg_bandwidth>
<avg_time_on_page>5</avg_time_on_page>
<bounce_rate>71%</bounce_rate>
<exit_rate>71%</exit_rate>
@@ -373,11 +447,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>14339</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>2867</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>83%</exit_rate>
@@ -391,6 +470,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -409,6 +492,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -433,6 +520,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -455,6 +546,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -473,6 +568,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -497,6 +596,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -512,6 +615,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -537,11 +644,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -555,6 +667,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -577,6 +693,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -592,6 +712,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -615,6 +739,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -630,6 +758,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -655,11 +787,16 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>67%</bounce_rate>
<exit_rate>75%</exit_rate>
@@ -673,6 +810,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -691,6 +832,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -709,6 +854,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -727,6 +876,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -755,6 +908,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -773,6 +930,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -799,11 +960,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>2982</avg_bandwidth>
<avg_time_on_page>120</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -814,6 +980,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -828,6 +998,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -842,6 +1016,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -856,6 +1034,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>5609</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>5609</min_bandwidth>
+ <max_bandwidth>5609</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -880,21 +1062,54 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>3617</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>3617</min_bandwidth>
+ <max_bandwidth>3617</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>1808</avg_bandwidth>
<avg_time_on_page>4</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <exit_rate>100%</exit_rate>
<avg_time_generation>0.113</avg_time_generation>
<subtable>
<row>
+ <label>/index</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>7</sum_time_spent>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.113</min_time_generation>
+ <max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>7</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <avg_time_generation>0.113</avg_time_generation>
+ <url>http://piwik.org/download/</url>
+ </row>
+ <row>
<label>counter</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_generation>0</nb_hits_with_time_generation>
+ <min_time_generation />
+ <max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -903,12 +1118,17 @@
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
+ <avg_time_generation>0</avg_time_generation>
<subtable>
<row>
<label>/index</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -934,11 +1154,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -952,6 +1177,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -976,11 +1205,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -991,6 +1225,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1014,6 +1252,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1022,6 +1264,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1037,6 +1280,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1045,6 +1292,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1060,6 +1308,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1068,6 +1320,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1083,9 +1336,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1101,6 +1359,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1109,6 +1371,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1124,11 +1387,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>267</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1142,6 +1410,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1166,7 +1438,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1177,6 +1454,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -1195,11 +1476,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1210,6 +1496,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1233,11 +1523,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1248,6 +1543,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1271,11 +1570,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1286,6 +1590,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1309,11 +1617,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1327,6 +1640,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -1351,11 +1668,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1366,6 +1688,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1380,6 +1706,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1394,6 +1724,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1408,6 +1742,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1422,6 +1760,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1436,6 +1778,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1450,6 +1796,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1464,6 +1814,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1478,6 +1832,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1517,11 +1875,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1532,6 +1895,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1555,11 +1922,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>182</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1573,6 +1945,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1591,6 +1967,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1617,7 +1997,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1628,6 +2013,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml
index d03b4e81bb..5afea46be9 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getOutlinks_range.xml
@@ -5,25 +5,22 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <avg_bandwidth>43</avg_bandwidth>
<subtable>
<row>
<label>/</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://demo.piwik.org/</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml
index 4265021a1b..302cda3ea1 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml
@@ -8,7 +8,12 @@
<nb_hits_with_time_generation>7</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>82027</sum_bandwidth>
+ <nb_hits_with_bandwidth>25</nb_hits_with_bandwidth>
+ <min_bandwidth>16513</min_bandwidth>
+ <max_bandwidth>16513</max_bandwidth>
<sum_daily_nb_uniq_visitors>27</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>3281</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -22,11 +27,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>60</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>67%</exit_rate>
@@ -37,6 +47,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -54,6 +68,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
@@ -74,11 +92,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -92,6 +115,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -113,6 +140,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -136,11 +167,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>355</avg_bandwidth>
<avg_time_on_page>240</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -151,6 +187,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -173,7 +213,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -184,6 +229,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -201,11 +250,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -216,6 +270,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,6 +296,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -246,6 +308,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -259,6 +322,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -267,6 +334,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml
index 24291fc91a..ed5a9a08f6 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml
@@ -8,7 +8,12 @@
<nb_hits_with_time_generation>17</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>82027</sum_bandwidth>
+ <nb_hits_with_bandwidth>25</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<sum_daily_nb_uniq_visitors>28</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>3281</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -22,6 +27,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>44</entry_sum_visit_length>
@@ -30,6 +39,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -43,11 +53,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>60</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>67%</exit_rate>
@@ -58,6 +73,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -75,6 +94,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
@@ -95,11 +118,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -113,6 +141,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -134,6 +166,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -157,6 +193,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -165,6 +205,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -178,11 +219,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>355</avg_bandwidth>
<avg_time_on_page>240</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -193,6 +239,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -215,7 +265,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -226,6 +281,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -243,11 +302,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -258,6 +322,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -280,12 +348,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>81</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -299,9 +372,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -315,11 +393,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -333,6 +416,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -356,9 +443,14 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -372,6 +464,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -380,6 +476,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -393,6 +490,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -401,6 +502,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -414,6 +516,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -422,6 +528,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -435,6 +542,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -443,6 +554,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -456,6 +568,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -464,6 +580,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -477,9 +594,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_month.xml
index c5d48fa621..01cc7364a2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_month.xml
@@ -5,6 +5,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
+ <avg_bandwidth>43</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_range.xml
index c5d48fa621..01cc7364a2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrl_range.xml
@@ -5,6 +5,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
+ <avg_bandwidth>43</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml
index 27aff1019b..b522382f8b 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml
@@ -8,10 +8,15 @@
<nb_hits_with_time_generation>5</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>33</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -25,6 +30,10 @@
<nb_hits_with_time_generation>5</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -42,6 +51,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>8</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -56,6 +69,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>8</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -72,6 +89,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -90,6 +111,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
@@ -115,6 +140,11 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -128,6 +158,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -142,6 +176,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -160,7 +198,12 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>17</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -175,6 +218,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>17</avg_time_on_page>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml
index 5a2fb28be8..44c6dab366 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>21444</sum_bandwidth>
+ <nb_hits_with_bandwidth>6</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>6</entry_bounce_count>
<exit_nb_visits>6</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -23,6 +28,10 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>17870</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>10722</min_bandwidth>
+ <max_bandwidth>10722</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -37,6 +46,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -51,6 +64,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -71,6 +88,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -85,6 +106,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -107,6 +132,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -121,6 +150,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -135,6 +168,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -149,6 +186,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -178,11 +219,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -193,6 +239,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -207,6 +257,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -227,6 +281,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -245,6 +303,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -259,6 +321,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -284,11 +350,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>14296</min_bandwidth>
+ <max_bandwidth>14296</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -299,6 +370,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>7148</min_bandwidth>
+ <max_bandwidth>7148</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -317,6 +392,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -331,6 +410,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -351,6 +434,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -365,6 +452,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -390,11 +481,16 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>67%</bounce_rate>
<exit_rate>75%</exit_rate>
@@ -408,6 +504,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -426,6 +526,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -444,6 +548,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -462,6 +570,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -490,6 +602,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -508,6 +624,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -534,6 +654,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>8063</sum_bandwidth>
+ <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
+ <min_bandwidth>8063</min_bandwidth>
+ <max_bandwidth>8063</max_bandwidth>
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -542,6 +666,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>2687</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -557,11 +682,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>2982</avg_bandwidth>
<avg_time_on_page>120</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -572,6 +702,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -586,6 +720,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -600,6 +738,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -614,6 +756,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -630,6 +776,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>5609</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>5609</min_bandwidth>
+ <max_bandwidth>5609</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -654,11 +804,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -669,6 +824,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -692,6 +851,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -700,6 +863,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -715,12 +879,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -736,6 +905,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -744,6 +917,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -759,9 +933,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -777,6 +956,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -785,6 +968,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -800,11 +984,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>267</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -818,6 +1007,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -842,11 +1035,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -857,6 +1055,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -871,6 +1073,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -896,11 +1102,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -911,6 +1122,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -934,11 +1149,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -949,6 +1169,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -972,11 +1196,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -987,6 +1216,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1010,11 +1243,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1028,6 +1266,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -1052,11 +1294,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1067,6 +1314,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1081,6 +1332,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1095,6 +1350,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1109,6 +1368,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1123,6 +1386,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1137,6 +1404,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1151,6 +1422,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1165,6 +1440,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1179,6 +1458,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1218,11 +1501,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1233,6 +1521,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1256,11 +1548,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>182</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1274,6 +1571,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1292,6 +1593,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
index 6ed96aef32..e6f1c78d88 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>7</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>21530</sum_bandwidth>
+ <nb_hits_with_bandwidth>8</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>18</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>8</entry_bounce_count>
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>2691</avg_bandwidth>
<avg_time_on_page>13</avg_time_on_page>
<bounce_rate>89%</bounce_rate>
<exit_rate>80%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>5</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>17870</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>15</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -44,6 +53,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -62,6 +75,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>14</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
@@ -86,6 +103,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -104,6 +125,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.624</min_time_generation>
<max_time_generation>1.324</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -130,6 +155,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>3617</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>3617</min_bandwidth>
+ <max_bandwidth>3617</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -148,6 +177,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -163,6 +196,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -177,6 +214,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -202,6 +243,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -220,6 +265,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,6 +287,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -266,6 +319,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -284,6 +341,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -302,6 +363,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -320,6 +385,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -350,6 +419,10 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>8235</sum_bandwidth>
+ <nb_hits_with_bandwidth>7</nb_hits_with_bandwidth>
+ <min_bandwidth>8149</min_bandwidth>
+ <max_bandwidth>8149</max_bandwidth>
<entry_nb_visits>7</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>44</entry_sum_visit_length>
@@ -358,6 +431,7 @@
<sum_daily_nb_uniq_visitors>7</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>7</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>5</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>1176</avg_bandwidth>
<avg_time_on_page>5</avg_time_on_page>
<bounce_rate>71%</bounce_rate>
<exit_rate>71%</exit_rate>
@@ -373,11 +447,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>14339</sum_bandwidth>
+ <nb_hits_with_bandwidth>5</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>2867</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>83%</exit_rate>
@@ -391,6 +470,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -409,6 +492,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.343</min_time_generation>
<max_time_generation>0.543</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -433,6 +520,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -455,6 +546,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -473,6 +568,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -497,6 +596,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -512,6 +615,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -537,11 +644,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>14296</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -555,6 +667,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.294</max_time_generation>
+ <sum_bandwidth>7148</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>0</min_bandwidth>
+ <max_bandwidth>0</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -577,6 +693,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -592,6 +712,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -615,6 +739,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -630,6 +758,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -655,11 +787,16 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>67%</bounce_rate>
<exit_rate>75%</exit_rate>
@@ -673,6 +810,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -691,6 +832,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -709,6 +854,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -727,6 +876,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -755,6 +908,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -773,6 +930,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.359</min_time_generation>
<max_time_generation>0.359</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -799,11 +960,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>2982</avg_bandwidth>
<avg_time_on_page>120</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -814,6 +980,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -828,6 +998,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -842,6 +1016,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>5964</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>5964</min_bandwidth>
+ <max_bandwidth>5964</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -856,6 +1034,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>240</sum_time_spent>
+ <sum_bandwidth>355</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>355</min_bandwidth>
+ <max_bandwidth>355</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>242</entry_sum_visit_length>
@@ -872,6 +1054,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>5609</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>5609</min_bandwidth>
+ <max_bandwidth>5609</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -896,14 +1082,19 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>3617</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>3617</min_bandwidth>
+ <max_bandwidth>3617</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>1808</avg_bandwidth>
<avg_time_on_page>4</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <exit_rate>100%</exit_rate>
<avg_time_generation>0.113</avg_time_generation>
<subtable>
<row>
@@ -914,10 +1105,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
<avg_time_generation>0.113</avg_time_generation>
<url>http://piwik.org/download/</url>
</row>
@@ -929,6 +1126,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -944,6 +1145,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -969,11 +1174,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -987,6 +1197,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1011,11 +1225,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -1026,6 +1245,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1049,6 +1272,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1057,6 +1284,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1072,6 +1300,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1080,6 +1312,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1095,12 +1328,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>182</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -1116,6 +1354,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1124,6 +1366,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1139,9 +1382,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1157,6 +1405,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1165,6 +1417,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1180,11 +1433,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>267</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1198,6 +1456,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.009</min_time_generation>
<max_time_generation>0.009</max_time_generation>
+ <sum_bandwidth>267</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>267</min_bandwidth>
+ <max_bandwidth>267</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1222,10 +1484,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>81</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -1236,6 +1503,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>79</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>81</entry_sum_visit_length>
@@ -1257,7 +1528,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1268,6 +1544,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -1286,11 +1566,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1301,6 +1586,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1324,11 +1613,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1339,6 +1633,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1362,11 +1660,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1377,6 +1680,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1400,11 +1707,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1418,6 +1730,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.109</min_time_generation>
<max_time_generation>0.109</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
@@ -1442,11 +1758,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1457,6 +1778,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1471,6 +1796,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1485,6 +1814,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1499,6 +1832,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1513,6 +1850,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1527,6 +1868,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1541,6 +1886,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1555,6 +1904,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1569,6 +1922,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1608,11 +1965,16 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>3574</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1623,6 +1985,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>3574</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>3574</min_bandwidth>
+ <max_bandwidth>3574</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1646,11 +2012,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>182</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1664,6 +2035,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1682,6 +2057,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.001</min_time_generation>
<max_time_generation>0.001</max_time_generation>
+ <sum_bandwidth>182</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>182</min_bandwidth>
+ <max_bandwidth>182</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -1708,7 +2087,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -1719,6 +2103,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Bandwidth.get_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Bandwidth.get_month.xml
new file mode 100644
index 0000000000..8401897a33
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Bandwidth.get_month.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <nb_total_overall_bandwidth>4437437</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>96764</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>4334745</nb_total_download_bandwidth>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
index 4c6a424157..4f7962f12b 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
@@ -112,7 +112,7 @@
<logo>plugins/UserCountry/images/flags/us.png</logo>
</row>
<row>
- <label>Seoul, Seoul-t&amp;#039;ukpyolsi, South Korea</label>
+ <label>Seoul, Seoul-t'ukpyolsi, South Korea</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
index b9f8ff9295..ca4f6b23bf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
@@ -101,7 +101,7 @@
<logo>plugins/UserCountry/images/flags/ca.png</logo>
</row>
<row>
- <label>Seoul-t&amp;#039;ukpyolsi, South Korea</label>
+ <label>Seoul-t'ukpyolsi, South Korea</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
index 5ae68e2624..255255c504 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
@@ -10,7 +10,7 @@
<nb_visits_converted>1</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>1</sum_daily_nb_users>
- <idvisitor>c7a1daa770a8e43a</idvisitor>
+
</row>
<row>
<label>user1</label>
@@ -22,7 +22,7 @@
<nb_visits_converted>1</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>1</sum_daily_nb_users>
- <idvisitor>b3daa77b4c04a955</idvisitor>
+
</row>
<row>
<label>user2</label>
@@ -34,6 +34,6 @@
<nb_visits_converted>1</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>1</sum_daily_nb_users>
- <idvisitor>c515c2f2350e7b1a</idvisitor>
+
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml
index a78a95e97b..e47694b4a2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getDownloads_range.xml
@@ -5,16 +5,22 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <avg_bandwidth>43</avg_bandwidth>
<subtable>
<row>
<label>/latest.zip</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://builds.piwik.org/latest.zip</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml
index 701633ee71..0bce6a3b26 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageTitles_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>43</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -29,6 +34,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -37,6 +46,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -50,12 +60,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>80</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -69,11 +84,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -87,6 +107,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -110,6 +134,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -118,6 +146,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -131,6 +160,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -139,6 +172,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -152,6 +186,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -160,6 +198,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -173,6 +212,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -181,6 +224,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -194,6 +238,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -202,6 +250,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -215,6 +264,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -223,6 +276,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml
index 1e49db6795..f5bfc42cbd 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getEntryPageUrls_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>43</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -31,6 +36,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -39,6 +48,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -54,11 +64,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -72,6 +87,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -90,6 +109,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -108,6 +131,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -126,6 +153,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -154,6 +185,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -172,6 +207,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -190,6 +229,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -208,6 +251,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,11 +285,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -256,6 +308,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -280,6 +336,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -288,6 +348,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -303,6 +364,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -311,6 +376,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -326,10 +392,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>80</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -340,6 +411,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>79</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>80</entry_sum_visit_length>
@@ -361,11 +436,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -379,6 +459,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -397,6 +481,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml
index cb5e27024c..b4ef0bd85e 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageTitles_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>43</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -29,6 +34,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -37,6 +46,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -50,9 +60,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -66,11 +81,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -84,6 +104,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -107,9 +131,14 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -123,6 +152,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -131,6 +164,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -144,6 +178,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -152,6 +190,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -165,6 +204,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -173,6 +216,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -186,6 +230,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -194,6 +242,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -207,6 +256,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -215,6 +268,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -228,6 +282,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -236,6 +294,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -249,9 +308,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml
index 2b3103a1a2..8f8ace4259 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getExitPageUrls_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>43</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -31,6 +36,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -39,6 +48,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -54,11 +64,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -72,6 +87,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -90,6 +109,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -108,6 +131,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -126,6 +153,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -154,6 +185,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -172,6 +207,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -190,6 +229,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -208,6 +251,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,11 +285,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -256,6 +308,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -280,6 +336,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -288,6 +348,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -303,6 +364,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -311,6 +376,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -326,7 +392,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -337,6 +408,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -355,11 +430,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -373,6 +453,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -391,6 +475,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -410,6 +498,48 @@
</subtable>
</row>
<row>
+ <label>download</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>7</sum_time_spent>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.113</min_time_generation>
+ <max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
+ <avg_time_on_page>7</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <avg_time_generation>0.113</avg_time_generation>
+ <subtable>
+ <row>
+ <label>/index</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>7</sum_time_spent>
+ <nb_hits_with_time_generation>1</nb_hits_with_time_generation>
+ <min_time_generation>0.113</min_time_generation>
+ <max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>7</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <avg_time_generation>0.113</avg_time_generation>
+ <url>http://piwik.org/download/</url>
+ </row>
+ </subtable>
+ </row>
+ <row>
<label>what-is-piwisk</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
@@ -417,7 +547,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -428,6 +563,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml
index d03b4e81bb..5afea46be9 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getOutlinks_range.xml
@@ -5,25 +5,22 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <avg_bandwidth>43</avg_bandwidth>
<subtable>
<row>
<label>/</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<url>http://demo.piwik.org/</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml
index 7d4f318e5e..ab0f9865c1 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageTitles_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>43</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -29,6 +34,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -37,6 +46,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -50,7 +60,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -64,12 +79,17 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>80</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -83,9 +103,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -99,11 +124,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -117,6 +147,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -140,9 +174,14 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -156,6 +195,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -164,6 +207,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -177,6 +221,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -185,6 +233,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -198,6 +247,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -206,6 +259,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -219,6 +273,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -227,6 +285,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -240,6 +299,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -248,6 +311,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -261,6 +325,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -269,6 +337,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -282,9 +351,14 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml
index b25b53ebb5..41a3af0e17 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrl_range.xml
@@ -5,6 +5,10 @@
<nb_visits>2</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>100%</exit_rate>
+ <avg_bandwidth>43</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml
index 33738e28ff..6f9cf509f7 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Actions.getPageUrls_range.xml
@@ -8,6 +8,10 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.058</min_time_generation>
<max_time_generation>0.292</max_time_generation>
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>43</entry_sum_visit_length>
@@ -16,6 +20,7 @@
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>4</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>9</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -31,6 +36,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>172</sum_bandwidth>
+ <nb_hits_with_bandwidth>4</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -39,6 +48,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -54,11 +64,16 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>86</min_bandwidth>
+ <max_bandwidth>86</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -72,6 +87,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -90,6 +109,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -108,6 +131,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -126,6 +153,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.391</min_time_generation>
<max_time_generation>0.391</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -154,6 +185,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -172,6 +207,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -190,6 +229,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -208,6 +251,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.119</min_time_generation>
<max_time_generation>0.119</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -238,11 +285,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -256,6 +308,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.145</min_time_generation>
<max_time_generation>0.145</max_time_generation>
+ <sum_bandwidth>86</sum_bandwidth>
+ <nb_hits_with_bandwidth>2</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -280,6 +336,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.413</min_time_generation>
<max_time_generation>0.413</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -288,6 +348,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -303,6 +364,10 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -311,6 +376,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -326,10 +392,15 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>80</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>79</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -340,6 +411,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>79</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>80</entry_sum_visit_length>
@@ -361,7 +436,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -372,6 +452,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -390,11 +474,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -408,6 +497,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -426,6 +519,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -452,9 +549,15 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
<avg_time_generation>0.113</avg_time_generation>
<subtable>
<row>
@@ -465,10 +568,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.113</min_time_generation>
<max_time_generation>0.113</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
+ <exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>7</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
<avg_time_generation>0.113</avg_time_generation>
<url>http://piwik.org/download/</url>
</row>
@@ -482,7 +591,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>43</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -493,6 +607,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>43</sum_bandwidth>
+ <nb_hits_with_bandwidth>1</nb_hits_with_bandwidth>
+ <min_bandwidth>43</min_bandwidth>
+ <max_bandwidth>43</max_bandwidth>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_0__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_0__Actions.getPageUrls_day.xml
index ba2ccdf172..16e31c7801 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_0__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_0__Actions.getPageUrls_day.xml
@@ -9,8 +9,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.635</min_time_generation>
<max_time_generation>0.635</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_dir2sub0filephp__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_dir2sub0filephp__Actions.getPageUrls_day.xml
index 2f4b47c2f8..0a8eb8592e 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_dir2sub0filephp__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_dir2sub0filephp__Actions.getPageUrls_day.xml
@@ -6,6 +6,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_dir__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_dir__Actions.getPageUrls_day.xml
index 3634faa18a..d427cdff77 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_dir__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_dir__Actions.getPageUrls_day.xml
@@ -8,6 +8,11 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_dir_range__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_dir_range__Actions.getPageUrls_day.xml
index b648ce6807..d59f0bd31b 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_dir_range__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_dir_range__Actions.getPageUrls_day.xml
@@ -9,6 +9,11 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_dirfilephpfoobarfoo2bar__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_dirfilephpfoobarfoo2bar__Actions.getPageUrls_day.xml
index 576c78dacd..9f88175810 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_dirfilephpfoobarfoo2bar__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_dirfilephpfoobarfoo2bar__Actions.getPageUrls_day.xml
@@ -9,6 +9,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectBranch__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectBranch__Actions.getPageTitles_day.xml
index 04dac45ecd..285a6dd7d2 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectBranch__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectBranch__Actions.getPageTitles_day.xml
@@ -8,6 +8,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.233</min_time_generation>
<max_time_generation>0.233</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageTitles_day.xml
index 1517efab30..4d6a3732c4 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageTitles_day.xml
@@ -9,6 +9,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.333</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageUrls_day.xml
index c79c3b7ae5..596c3386a4 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_terminalOperator_selectTerminal__Actions.getPageUrls_day.xml
@@ -9,6 +9,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.333</min_time_generation>
<max_time_generation>0.333</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_thisiscool__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_thisiscool__Actions.getPageUrls_day.xml
index 16c1e673c8..694d5fa4d9 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_thisiscool__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_thisiscool__Actions.getPageUrls_day.xml
@@ -9,11 +9,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.523</min_time_generation>
<max_time_generation>0.523</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>9</entry_nb_actions>
<entry_sum_visit_length>1441</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>720</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_titlesRecursive__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_titlesRecursive__Actions.getPageTitles_day.xml
index 718edc60ac..a49781d589 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_titlesRecursive__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_titlesRecursive__Actions.getPageTitles_day.xml
@@ -9,6 +9,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>324</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_titles__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_titles__Actions.getPageTitles_day.xml
index 79f1fd371f..4c2a3d19bb 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_titles__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_titles__Actions.getPageTitles_day.xml
@@ -9,11 +9,16 @@
<nb_hits_with_time_generation>3</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>1.233</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>9</entry_nb_actions>
<entry_sum_visit_length>1441</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>279</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric__API.getProcessedReport_day.xml
index 8da6f23bc6..33eb8d25bf 100644
--- a/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric__API.getProcessedReport_day.xml
@@ -61,11 +61,11 @@
<reportMetadata>
<row>
- <idsubdatatable>2746</idsubdatatable>
+ <idsubdatatable>2778</idsubdatatable>
</row>
<row>
- <idsubdatatable>2745</idsubdatatable>
+ <idsubdatatable>2777</idsubdatatable>
</row>
</reportMetadata>
<reportTotal>
diff --git a/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageTitles_day.xml
index 8b29b241d3..3cb1c56ea5 100644
--- a/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageTitles_day.xml
@@ -7,8 +7,13 @@
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
<nb_hits_following_search>2</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageUrls_day.xml
index b03bf17f1b..9d3740ff7c 100644
--- a/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getPageUrls_day.xml
@@ -7,8 +7,13 @@
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -21,6 +26,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -32,6 +42,10 @@
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getSiteSearchKeywords_day.xml b/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getSiteSearchKeywords_day.xml
index 9b4eb015d0..6abba661bb 100644
--- a/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getSiteSearchKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_NonUnicode__Actions.getSiteSearchKeywords_day.xml
@@ -5,8 +5,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -16,7 +21,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -26,7 +36,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -36,7 +51,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml
index 32470e4bcb..dd04d0ccc1 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownload_day.xml
@@ -5,7 +5,8 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://piwik.org/path/again/latest.zip</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml
index c064136f43..80e6eaa3fa 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml
@@ -4,14 +4,15 @@
<label>piwik.org</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/path/again/latest.zip</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
<url>http://piwik.org/path/again/latest.zip</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml
index 668fad20f4..a0c261e599 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml
@@ -14,6 +14,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -58,6 +59,7 @@
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml
index 03f73e41df..8a07c4c4db 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml
@@ -15,6 +15,7 @@
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -36,6 +37,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml
index e6cc3fafe0..6a8e42221c 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml
@@ -14,6 +14,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -55,6 +56,7 @@
<max_time_generation>0.023</max_time_generation>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml
index cbe0c54470..60e4c736f9 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml
@@ -12,6 +12,7 @@
<max_time_generation>0.023</max_time_generation>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -33,6 +34,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml
index 1565685cb1..37a006cc22 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlink_day.xml
@@ -5,7 +5,8 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://dev.piwik.org/svn</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml
index c6795a704e..c6b53828f3 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml
@@ -4,14 +4,15 @@
<label>outlinks.org</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>468</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/#!outlink-with-fragment-&lt;script&gt;</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
<url>https://outlinks.org/#!outlink-with-fragment-&lt;script&gt;</url>
</row>
<row>
@@ -19,7 +20,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>108</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
<url>http://outlinks.org/other_outlink#fragment&amp;pk_campaign=Open%20partnership</url>
</row>
</subtable>
@@ -28,14 +29,15 @@
<label>dev.piwik.org</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/svn</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
<url>http://dev.piwik.org/svn</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml
index 5f687c3a3f..22dba00ee3 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml
@@ -21,5 +21,6 @@
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.134</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml
index 863bb0ecb6..e7f3de80cb 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml
@@ -14,6 +14,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -58,6 +59,7 @@
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -75,6 +77,7 @@
<max_time_generation>0.023</max_time_generation>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -90,6 +93,7 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>900</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml
index dda8223114..85cdfeb4bf 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml
@@ -16,6 +16,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.023</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml
index 2a46f6f4a1..a5742a7200 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml
@@ -5,12 +5,13 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<sum_time_generation>0.224</sum_time_generation>
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>900</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.224</avg_time_generation>
@@ -29,6 +30,7 @@
<max_time_generation>0.023</max_time_generation>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -51,6 +53,7 @@
<entry_nb_actions>7</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -72,6 +75,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Bandwidth.get_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Bandwidth.get_day.xml
new file mode 100644
index 0000000000..e250ef2286
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Bandwidth.get_day.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <nb_total_overall_bandwidth>0</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>0</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>0</nb_total_download_bandwidth>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___API.getProcessedReport_day.xml
index 0cb2dea6f6..f59cb9522a 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___API.getProcessedReport_day.xml
@@ -58,7 +58,7 @@
<reportMetadata>
<row>
- <idsubdatatable>5151</idsubdatatable>
+ <idsubdatatable>5188</idsubdatatable>
</row>
</reportMetadata>
<reportTotal>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml
index 0d2e438d08..f4f22c08d0 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml
@@ -5,6 +5,11 @@
<sum_time_generation>0.134</sum_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<exit_rate>100%</exit_rate>
<subtable>
@@ -14,6 +19,10 @@
<sum_time_generation>0.134</sum_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<exit_rate>100%</exit_rate>
</row>
@@ -25,6 +34,11 @@
<sum_time_generation>0.234</sum_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.234</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<exit_rate>0%</exit_rate>
</row>
@@ -34,6 +48,11 @@
<sum_time_generation>0.023</sum_time_generation>
<min_time_generation>0.023</min_time_generation>
<max_time_generation>0.023</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<exit_rate>100%</exit_rate>
</row>
@@ -43,6 +62,11 @@
<sum_time_generation>0.224</sum_time_generation>
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>900</avg_time_on_page>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumns___API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumns___API.getProcessedReport_day.xml
index 37fac32b40..a9e1f34081 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumns___API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumns___API.getProcessedReport_day.xml
@@ -67,7 +67,7 @@
<reportMetadata>
<row>
- <idsubdatatable>5155</idsubdatatable>
+ <idsubdatatable>5192</idsubdatatable>
</row>
</reportMetadata>
<reportTotal>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml
index 32470e4bcb..cfc64ac2ea 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownload_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://piwik.org/path/again/latest.zip</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml
index c064136f43..43be1d8f03 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getDownloads_day.xml
@@ -4,14 +4,23 @@
<label>piwik.org</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/path/again/latest.zip</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://piwik.org/path/again/latest.zip</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml
index 9493eb4991..094f3fb9f6 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -27,6 +32,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -50,11 +59,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.234</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml
index 1e0a59c457..236b8dde0b 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml
@@ -9,11 +9,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.234</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -29,11 +34,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -48,6 +58,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml
index 64b810c76b..ac4a106cb3 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -27,6 +32,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -51,8 +60,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml
index d61ef0162c..afbf07dee4 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml
@@ -10,8 +10,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -27,11 +32,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -46,6 +56,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
index cc4024a67f..190f781a18 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://dev.piwik.org/svn</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
index 01dadf7a92..c428bcbf57 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
@@ -4,14 +4,23 @@
<label>outlinks.org</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>468</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/#!outlink-with-fragment-&lt;script&gt;</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>https://outlinks.org/#!outlink-with-fragment-&lt;script&gt;</url>
</row>
<row>
@@ -19,7 +28,11 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>108</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://outlinks.org/other_outlink#fragment&amp;pk_campaign=Open%20partnership</url>
</row>
</subtable>
@@ -28,14 +41,23 @@
<label>dev.piwik.org</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/svn</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>72</sum_time_spent>
+ <sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://dev.piwik.org/svn</url>
</row>
</subtable>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml
index 629847ae61..1052f04a28 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -20,5 +24,6 @@
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.134</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml
index da8ea736e7..1641da3285 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -10,8 +10,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml
index cd205048c8..a7c9622e2e 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml
@@ -8,11 +8,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -27,6 +32,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -50,11 +59,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.234</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -70,8 +84,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -86,6 +105,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>792</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml
index 46a13d42c3..261da33944 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml
@@ -10,12 +10,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.024</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml
index 46a13d42c3..6035daaca6 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -10,8 +10,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
index c86cc78b13..6484bb5cf5 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
@@ -5,11 +5,16 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
+ <sum_time_spent>792</sum_time_spent>
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.224</min_time_generation>
<max_time_generation>0.224</max_time_generation>
- <avg_time_on_page>180</avg_time_on_page>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>792</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.224</avg_time_generation>
@@ -26,8 +31,13 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.024</min_time_generation>
<max_time_generation>0.024</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -44,11 +54,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.234</min_time_generation>
<max_time_generation>0.234</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -64,11 +79,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -83,6 +103,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.134</min_time_generation>
<max_time_generation>0.134</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml
index fde425ab9e..c3197c3017 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>108</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml
index aaf619965e..124156f8fc 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>7</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>6</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>7</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -24,10 +29,15 @@
<nb_visits>4</nb_visits>
<nb_hits>7</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>13</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -38,6 +48,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>13</entry_nb_actions>
@@ -54,6 +68,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -65,6 +83,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -77,6 +99,11 @@
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml b/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml
index 34447b169a..3354c1df29 100644
--- a/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml
+++ b/tests/PHPUnit/System/expected/test_RowEvolution_LabelReservedCharactersHierarchical__API.getRowEvolution_day.xml
@@ -249,7 +249,7 @@
<change>-100%</change>
</nb_visits_1>
<nb_visits_2>
- <name>Google - justice )(&amp;^#%$ not &amp;#039;&quot; corruption! (Visits)</name>
+ <name>Google - justice )(&amp;^#%$ not '&quot; corruption! (Visits)</name>
<min>0</min>
<max>1</max>
</nb_visits_2>
diff --git a/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml b/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml
index a0555e1b4a..8a1dc9d833 100644
--- a/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml
+++ b/tests/PHPUnit/System/expected/test_RowEvolution_flatFilters__Referrers.getSearchEngines_month.xml
@@ -14,7 +14,7 @@
<logo>plugins/Referrers/images/searchEngines/google.com.png</logo>
</row>
<row>
- <label>Google - justice )(&amp;^#%$ not &amp;#039;&quot; corruption!</label>
+ <label>Google - justice )(&amp;^#%$ not '&quot; corruption!</label>
<nb_visits>8</nb_visits>
<nb_actions>8</nb_actions>
<max_actions>1</max_actions>
diff --git a/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml b/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml
index 10f622edda..0f7c1f401b 100644
--- a/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml
+++ b/tests/PHPUnit/System/expected/test_RowEvolution_multipleDates_lastNoData__API.getRowEvolution_month.xml
@@ -33,7 +33,7 @@
<change>-100%</change>
</nb_visits_0>
<nb_visits_1>
- <name>justice )(&amp;^#%$ not &amp;#039;&quot; corruption! (Visits)</name>
+ <name>justice )(&amp;^#%$ not '&quot; corruption! (Visits)</name>
<min>0</min>
<max>8</max>
<change>-100%</change>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_day.xml
index fe61ab5004..a91a9998fa 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -9,6 +9,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -20,6 +25,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_month.xml
index e49e07c8a2..bd25c2c720 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitlesFollowingSiteSearch_month.xml
@@ -8,7 +8,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,7 +24,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_day.xml
index 5bc8b63f86..bc6a0ca65f 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_day.xml
@@ -9,6 +9,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,8 +24,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -32,6 +42,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -52,11 +67,16 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>1081</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -67,6 +87,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -87,11 +112,16 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>541</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -102,8 +132,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -114,6 +149,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_month.xml
index c4d37d733e..b63f82f0b6 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageTitles_month.xml
@@ -8,7 +8,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -18,9 +23,14 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -31,7 +41,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -51,12 +66,17 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>1081</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -66,7 +86,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -86,12 +111,17 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>541</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -101,9 +131,14 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -113,7 +148,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_day.xml
index 8cdba28f3b..2e8ae625f1 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -9,6 +9,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -21,6 +26,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_month.xml
index 2dda15648d..598feef9c3 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrlsFollowingSiteSearch_month.xml
@@ -8,7 +8,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -20,7 +25,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_day.xml
index 2939c4da2b..24dc2136af 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_day.xml
@@ -9,6 +9,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -21,8 +26,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -36,6 +46,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -58,11 +73,16 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>1081</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -75,6 +95,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -97,8 +122,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -111,6 +141,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -123,11 +158,16 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>541</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_month.xml
index 5c9107743f..137816aedc 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getPageUrls_month.xml
@@ -8,7 +8,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -20,9 +25,14 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -35,7 +45,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -57,12 +72,17 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>1081</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -74,7 +94,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -96,9 +121,14 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -110,7 +140,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -122,12 +157,17 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>540</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>541</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml
index 4567e228f7..767f6ac677 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml
@@ -7,7 +7,12 @@
<nb_visits>2</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>468</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>3</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>78</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -17,8 +22,13 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>72</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -28,7 +38,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -40,8 +55,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -51,7 +71,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>54</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>2</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>27</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -61,7 +86,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>252</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>252</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -80,8 +110,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -91,7 +126,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -101,7 +141,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml
index 26e6e57fdf..ee35791e46 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml
@@ -7,7 +7,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>288</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>144</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -17,7 +22,12 @@
<nb_visits>2</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>468</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>3</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>78</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -27,8 +37,13 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>72</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -38,8 +53,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -49,7 +69,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>54</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>2</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>27</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -69,8 +94,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -80,7 +110,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -90,7 +125,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml
index b30ddb01d7..00142586c3 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml
@@ -7,7 +7,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,7 +24,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>252</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>252</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -38,8 +48,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -49,7 +64,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml
index 4f8b06fb5b..05a044ba20 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml
@@ -7,7 +7,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>288</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>144</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -27,8 +32,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -38,7 +48,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>180</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_day.xml
index b9567cea41..af302cd2d0 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_day.xml
@@ -120,7 +120,7 @@
</slots>
<segment>customVariableName==_pk_scount</segment>
- <idsubdatatable>3205</idsubdatatable>
+ <idsubdatatable>3237</idsubdatatable>
</row>
<row>
<slots>
@@ -131,7 +131,7 @@
</slots>
<segment>customVariableName==_pk_scat</segment>
- <idsubdatatable>3204</idsubdatatable>
+ <idsubdatatable>3236</idsubdatatable>
</row>
</result>
<result prettyDate="Monday, January 4, 2010">
@@ -144,7 +144,7 @@
</slots>
<segment>customVariableName==_pk_scount</segment>
- <idsubdatatable>3208</idsubdatatable>
+ <idsubdatatable>3240</idsubdatatable>
</row>
<row>
<slots>
@@ -155,7 +155,7 @@
</slots>
<segment>customVariableName==_pk_scat</segment>
- <idsubdatatable>3207</idsubdatatable>
+ <idsubdatatable>3239</idsubdatatable>
</row>
</result>
<result prettyDate="Tuesday, January 5, 2010" />
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_month.xml
index 5ba222e978..c7f2ba93a9 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_CustomVariables.getCustomVariables_firstSite_lastN__API.getProcessedReport_month.xml
@@ -89,7 +89,7 @@
</slots>
<segment>customVariableName==_pk_scount</segment>
- <idsubdatatable>3230</idsubdatatable>
+ <idsubdatatable>3262</idsubdatatable>
</row>
<row>
<slots>
@@ -100,7 +100,7 @@
</slots>
<segment>customVariableName==_pk_scat</segment>
- <idsubdatatable>3229</idsubdatatable>
+ <idsubdatatable>3261</idsubdatatable>
</row>
</result>
<result prettyDate="February 2010" />
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_day.xml
index b28a8b9c15..c0e4bd1c7d 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -7,6 +7,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -18,6 +23,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_month.xml
index 6bcdb7bac8..3c03be9e31 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitlesFollowingSiteSearch_month.xml
@@ -6,7 +6,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -17,7 +22,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_day.xml
index 68d4794fb7..5b7dff5b16 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_day.xml
@@ -7,6 +7,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -17,8 +22,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -30,6 +40,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_month.xml
index 5b7c76e160..923338372b 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageTitles_month.xml
@@ -6,7 +6,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -16,9 +21,14 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -29,7 +39,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_day.xml
index be73f3d714..54af6e333b 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -7,6 +7,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,6 +24,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_month.xml
index 336ef8382f..62ce43944a 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrlsFollowingSiteSearch_month.xml
@@ -6,7 +6,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -18,7 +23,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_day.xml
index 0c49416b27..50dd59ea9e 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_day.xml
@@ -7,6 +7,11 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,8 +24,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -34,6 +44,11 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_month.xml
index cd21527e10..d4318129ef 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getPageUrls_month.xml
@@ -6,7 +6,12 @@
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -18,9 +23,14 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -33,7 +43,12 @@
<nb_hits>2</nb_hits>
<sum_time_spent>216</sum_time_spent>
<nb_hits_following_search>1</nb_hits_following_search>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>108</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_day.xml
index 7059d2638a..ef67a5b33e 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_day.xml
@@ -5,7 +5,12 @@
<nb_visits>2</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>468</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>3</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>78</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -15,8 +20,13 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>72</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -26,7 +36,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_month.xml
index 6cd43051cb..4d040d22f4 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchKeywords_month.xml
@@ -5,7 +5,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>288</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>144</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -15,7 +20,12 @@
<nb_visits>2</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>468</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>3</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>78</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -25,8 +35,13 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>72</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -36,8 +51,13 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -47,7 +67,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>54</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>2</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>27</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_day.xml
index 7eb0674f50..b532cbaa36 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>36</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>36</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_month.xml b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_month.xml
index f1569434b4..96fd395f10 100644
--- a/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_month.xml
+++ b/tests/PHPUnit/System/expected/test_SiteSearch_NotLastNPeriods__Actions.getSiteSearchNoResultKeywords_month.xml
@@ -5,7 +5,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>288</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<nb_pages_per_search>1</nb_pages_per_search>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>144</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml
index 865d25db4e..27a3ba1abe 100644
--- a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_day.xml
@@ -22,10 +22,10 @@
</row>
</previousSiteSearches>
<pageMetrics>
- <loops>2</loops>
+ <loops>5</loops>
<pageviews>18</pageviews>
<entries>4</entries>
- <exits>7</exits>
+ <exits>4</exits>
</pageMetrics>
<followingPages>
<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml
index 7e7b381757..a73d7d39dd 100644
--- a/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions__Transitions.getTransitionsForPageUrl_month.xml
@@ -22,10 +22,10 @@
</row>
</previousSiteSearches>
<pageMetrics>
- <loops>2</loops>
+ <loops>7</loops>
<pageviews>21</pageviews>
<entries>4</entries>
- <exits>9</exits>
+ <exits>4</exits>
</pageMetrics>
<followingPages>
<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml
index 6233153f1c..9e13a4a0ba 100644
--- a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_day.xml
@@ -22,10 +22,10 @@
</row>
</previousSiteSearches>
<pageMetrics>
- <loops>2</loops>
+ <loops>5</loops>
<pageviews>18</pageviews>
<entries>4</entries>
- <exits>7</exits>
+ <exits>4</exits>
</pageMetrics>
<followingPages>
<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml
index c782fbb761..ea8dfddac4 100644
--- a/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions_noLimit__Transitions.getTransitionsForPageUrl_month.xml
@@ -22,10 +22,10 @@
</row>
</previousSiteSearches>
<pageMetrics>
- <loops>2</loops>
+ <loops>7</loops>
<pageviews>21</pageviews>
<entries>4</entries>
- <exits>9</exits>
+ <exits>4</exits>
</pageMetrics>
<followingPages>
<row>
diff --git a/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml b/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml
index 865d25db4e..27a3ba1abe 100644
--- a/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_Transitions_withSegment__Transitions.getTransitionsForPageUrl_day.xml
@@ -22,10 +22,10 @@
</row>
</previousSiteSearches>
<pageMetrics>
- <loops>2</loops>
+ <loops>5</loops>
<pageviews>18</pageviews>
<entries>4</entries>
- <exits>7</exits>
+ <exits>4</exits>
</pageMetrics>
<followingPages>
<row>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml
index 7ae4526b49..ba0c0464ac 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml
@@ -184,51 +184,51 @@
<result prettyDate="Tuesday, January 5, 2010">
<row>
- <idsubdatatable>1990</idsubdatatable>
+ <idsubdatatable>2014</idsubdatatable>
</row>
<row>
- <idsubdatatable>1989</idsubdatatable>
+ <idsubdatatable>2013</idsubdatatable>
</row>
</result>
<result prettyDate="Wednesday, January 6, 2010">
<row>
- <idsubdatatable>1994</idsubdatatable>
+ <idsubdatatable>2018</idsubdatatable>
</row>
<row>
- <idsubdatatable>1993</idsubdatatable>
+ <idsubdatatable>2017</idsubdatatable>
</row>
</result>
<result prettyDate="Thursday, January 7, 2010">
<row>
- <idsubdatatable>1998</idsubdatatable>
+ <idsubdatatable>2022</idsubdatatable>
</row>
<row>
- <idsubdatatable>1997</idsubdatatable>
+ <idsubdatatable>2021</idsubdatatable>
</row>
</result>
<result prettyDate="Friday, January 8, 2010">
<row>
- <idsubdatatable>2002</idsubdatatable>
+ <idsubdatatable>2026</idsubdatatable>
</row>
<row>
- <idsubdatatable>2001</idsubdatatable>
+ <idsubdatatable>2025</idsubdatatable>
</row>
</result>
<result prettyDate="Saturday, January 9, 2010">
<row>
- <idsubdatatable>2006</idsubdatatable>
+ <idsubdatatable>2030</idsubdatatable>
</row>
<row>
- <idsubdatatable>2005</idsubdatatable>
+ <idsubdatatable>2029</idsubdatatable>
</row>
</result>
</reportMetadata>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml
index 207e2159fc..58ddaf23b7 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml
@@ -89,7 +89,7 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<bounce_rate>0%</bounce_rate>
- <avg_time_on_page>00:03:00</avg_time_on_page>
+ <avg_time_on_page>00:04:30</avg_time_on_page>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.31s</avg_time_generation>
</row>
@@ -118,7 +118,7 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<bounce_rate>0%</bounce_rate>
- <avg_time_on_page>00:03:00</avg_time_on_page>
+ <avg_time_on_page>00:04:30</avg_time_on_page>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.31s</avg_time_generation>
</row>
@@ -147,7 +147,7 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<bounce_rate>0%</bounce_rate>
- <avg_time_on_page>00:03:00</avg_time_on_page>
+ <avg_time_on_page>00:04:30</avg_time_on_page>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.31s</avg_time_generation>
</row>
@@ -176,7 +176,7 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<bounce_rate>0%</bounce_rate>
- <avg_time_on_page>00:03:00</avg_time_on_page>
+ <avg_time_on_page>00:04:30</avg_time_on_page>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.31s</avg_time_generation>
</row>
@@ -205,7 +205,7 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<bounce_rate>0%</bounce_rate>
- <avg_time_on_page>00:03:00</avg_time_on_page>
+ <avg_time_on_page>00:04:30</avg_time_on_page>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.31s</avg_time_generation>
</row>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml
index b2a9849fa7..a3c09a7a76 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_Referrers.getWebsites_firstSite_lastN__API.getProcessedReport_day.xml
@@ -116,14 +116,14 @@
<row>
<segment>referrerName==referrer.com</segment>
- <idsubdatatable>1941</idsubdatatable>
+ <idsubdatatable>1965</idsubdatatable>
</row>
</result>
<result prettyDate="Monday, January 4, 2010">
<row>
<segment>referrerName==referrer.com</segment>
- <idsubdatatable>1943</idsubdatatable>
+ <idsubdatatable>1967</idsubdatatable>
</row>
</result>
<result prettyDate="Tuesday, January 5, 2010" />
@@ -133,14 +133,14 @@
<row>
<segment>referrerName==referrer.com</segment>
- <idsubdatatable>1948</idsubdatatable>
+ <idsubdatatable>1972</idsubdatatable>
</row>
</result>
<result prettyDate="Saturday, January 9, 2010">
<row>
<segment>referrerName==referrer.com</segment>
- <idsubdatatable>1950</idsubdatatable>
+ <idsubdatatable>1974</idsubdatatable>
</row>
</result>
</reportMetadata>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_day.xml
index 31cace930f..17e6b5adc6 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_day.xml
@@ -10,12 +10,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result idSite="2" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_month.xml
index 8e94360fea..839a6402f0 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_month.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -16,6 +20,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result idSite="2" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_week.xml
index 5138d96b47..680b39af75 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_week.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
@@ -16,6 +20,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result idSite="2" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_year.xml
index 8e94360fea..839a6402f0 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitle_year.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -16,6 +20,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result idSite="2" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml
index 9ca9e9d1ce..aa82731bd5 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml
@@ -11,6 +11,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>2</entry_nb_uniq_visitors>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
@@ -18,6 +22,7 @@
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_uniq_visitors>2</exit_nb_uniq_visitors>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -34,6 +39,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -49,10 +59,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -66,6 +81,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -84,6 +103,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -103,6 +126,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -120,7 +147,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -135,6 +167,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -154,10 +190,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -171,6 +212,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -189,6 +234,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -208,6 +257,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -225,7 +278,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -240,6 +298,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -259,10 +321,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -276,6 +343,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -294,6 +365,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -313,6 +388,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -330,7 +409,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -345,6 +429,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -364,10 +452,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -381,6 +474,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -399,6 +496,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -418,6 +519,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -435,7 +540,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -450,6 +560,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -469,10 +583,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -486,6 +605,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -504,6 +627,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -523,6 +650,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -540,7 +671,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -555,6 +691,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -578,6 +718,11 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -592,6 +737,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.193</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
@@ -599,6 +748,7 @@
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml
index 9ccdac5d66..10864bdbcf 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml
@@ -10,10 +10,15 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -27,6 +32,10 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -44,6 +53,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -63,6 +76,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -81,7 +98,12 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -95,6 +117,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -113,6 +139,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -121,6 +151,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -134,7 +165,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -158,7 +194,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -172,6 +213,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.193</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -180,6 +225,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml
index c67a05b3b0..d4b80afc12 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -18,6 +22,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -33,10 +38,15 @@
<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -50,6 +60,10 @@
<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
@@ -67,6 +81,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
@@ -86,6 +104,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -104,7 +126,12 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -118,6 +145,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
@@ -136,7 +167,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -152,10 +188,15 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -169,6 +210,10 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
@@ -186,6 +231,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
@@ -205,6 +254,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -223,7 +276,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -237,6 +295,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
@@ -264,7 +326,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -278,6 +345,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.193</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -286,6 +357,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml
index 1a031a49e2..f64fdcc4e9 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml
@@ -10,10 +10,15 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -27,6 +32,10 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -44,6 +53,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -63,6 +76,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -81,7 +98,12 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -95,6 +117,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -113,6 +139,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -121,6 +151,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -134,7 +165,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -158,7 +194,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -172,6 +213,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.193</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -180,6 +225,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_day.xml
index 649f9a2c52..dde5e22711 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_day.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -21,6 +25,7 @@
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.123</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_month.xml
index bc95c7710c..dce5bf5125 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_month.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -21,6 +25,7 @@
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
<avg_time_generation>0.301</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_week.xml
index 89897d9983..6b42254a1a 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_week.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -21,6 +25,7 @@
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.123</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_year.xml
index bc95c7710c..dce5bf5125 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrl_year.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -21,6 +25,7 @@
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
<avg_time_generation>0.301</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
index 57f0b1452f..71ef2bc552 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_day.xml
@@ -11,6 +11,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -18,6 +22,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -34,6 +39,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -41,6 +50,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -59,6 +69,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -76,11 +91,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -93,13 +113,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -115,6 +140,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -132,11 +162,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -149,13 +184,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -171,6 +211,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -188,11 +233,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -205,13 +255,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -227,6 +282,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -244,11 +304,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -261,13 +326,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -283,6 +353,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -300,11 +375,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -317,13 +397,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -339,6 +424,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -359,6 +449,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
@@ -366,6 +460,7 @@
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -382,6 +477,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.203</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
index de92713eae..0250904637 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_month.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -18,6 +22,7 @@
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>9</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>320</avg_time_on_page>
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
@@ -33,7 +38,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -44,14 +54,19 @@
<label>/thankyou</label>
<nb_visits>8</nb_visits>
<nb_hits>16</nb_hits>
- <sum_time_spent>2880</sum_time_spent>
+ <sum_time_spent>4320</sum_time_spent>
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -66,6 +81,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -74,6 +93,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -99,6 +119,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -107,6 +131,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -122,7 +147,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.203</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
index e61f0aa200..d3bdc7bc73 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_week.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -18,6 +22,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -33,6 +38,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -41,6 +50,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -58,7 +68,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>7</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -73,12 +88,17 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>6</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -90,14 +110,19 @@
<label>/thankyou</label>
<nb_visits>6</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>2160</sum_time_spent>
+ <sum_time_spent>3240</sum_time_spent>
<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -114,12 +139,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -131,14 +161,19 @@
<label>/thankyou</label>
<nb_visits>2</nb_visits>
<nb_hits>4</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>1080</sum_time_spent>
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -153,7 +188,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -177,6 +217,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -185,6 +229,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -200,7 +245,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.203</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
index 9cb3a82c02..d556f93775 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageUrls_year.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -18,6 +22,7 @@
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>9</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>320</avg_time_on_page>
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
@@ -33,7 +38,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -44,14 +54,19 @@
<label>/thankyou</label>
<nb_visits>8</nb_visits>
<nb_hits>16</nb_hits>
- <sum_time_spent>2880</sum_time_spent>
+ <sum_time_spent>4320</sum_time_spent>
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -66,6 +81,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -74,6 +93,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -99,6 +119,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.193</min_time_generation>
<max_time_generation>0.503</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -107,6 +131,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -122,7 +147,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.203</min_time_generation>
<max_time_generation>0.203</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_day.xml
index eaed13c9ae..12fa659382 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_day.xml
@@ -12,12 +12,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-01-06">
@@ -30,12 +35,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-01-07">
@@ -48,12 +58,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-01-08">
@@ -66,12 +81,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-01-09">
@@ -84,12 +104,17 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
</results> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_month.xml
index 4e3e4c0a67..3abd56c3da 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_month.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -16,6 +20,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-02" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_week.xml
index 03e749c109..0373ada787 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_week.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
@@ -17,6 +21,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-01-11,2010-01-17">
@@ -28,6 +33,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
@@ -35,6 +44,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2010-01-18,2010-01-24" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_year.xml
index aa7f84dbc7..b4b7a6d14f 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitle_year.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -16,6 +20,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.452</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result>
<result date="2011" />
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml
index 2c6f0f0c6b..9ae9c8ce4c 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>2</entry_nb_uniq_visitors>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
@@ -17,6 +21,7 @@
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_uniq_visitors>2</exit_nb_uniq_visitors>
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -33,6 +38,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -48,10 +58,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -65,6 +80,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -83,6 +102,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -102,6 +125,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -119,7 +146,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -134,6 +166,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -153,10 +189,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -170,6 +211,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -188,6 +233,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -207,6 +256,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -224,7 +277,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -239,6 +297,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -258,10 +320,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -275,6 +342,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -293,6 +364,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -312,6 +387,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -329,7 +408,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -344,6 +428,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -363,10 +451,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -380,6 +473,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -398,6 +495,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -417,6 +518,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -434,7 +539,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -449,6 +559,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -468,10 +582,15 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -485,6 +604,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
@@ -503,6 +626,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -522,6 +649,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -539,7 +670,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -554,6 +690,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml
index 766132cf07..9bbf3fc40f 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml
@@ -9,10 +9,15 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -43,6 +52,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -62,6 +75,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -80,7 +97,12 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -94,6 +116,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -112,6 +138,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -120,6 +150,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -133,7 +164,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml
index 6fa7d48161..542ffe1f6a 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -17,6 +21,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -32,10 +37,15 @@
<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -49,6 +59,10 @@
<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
@@ -66,6 +80,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
@@ -85,6 +103,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -103,7 +125,12 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -117,6 +144,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
@@ -135,7 +166,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -151,10 +187,15 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -168,6 +209,10 @@
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
@@ -185,6 +230,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
@@ -204,6 +253,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -222,7 +275,12 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -236,6 +294,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml
index 20075ee956..ccf7c0d38e 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml
@@ -9,10 +9,15 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -26,6 +31,10 @@
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -43,6 +52,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>8</entry_nb_visits>
<entry_nb_actions>40</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -62,6 +75,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.173</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -80,7 +97,12 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -94,6 +116,10 @@
<nb_hits_with_time_generation>8</nb_hits_with_time_generation>
<min_time_generation>0.452</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
@@ -112,6 +138,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -120,6 +150,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -133,7 +164,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_day.xml
index 8f4fdae7d0..27511cf164 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_day.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -21,6 +25,7 @@
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.123</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -35,6 +40,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -44,6 +53,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -57,6 +67,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -66,6 +80,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -79,6 +94,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -88,6 +107,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -101,6 +121,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -110,6 +134,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -123,6 +148,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
@@ -132,6 +161,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_month.xml
index 64f981e8cd..70e141d33c 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_month.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -21,6 +25,7 @@
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
<avg_time_generation>0.301</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_week.xml
index 56453eda60..8f6036e675 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_week.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -21,6 +25,7 @@
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.123</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -33,6 +38,10 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
@@ -43,6 +52,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
@@ -55,6 +65,10 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
@@ -65,6 +79,7 @@
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<avg_time_generation>0.323</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_year.xml
index 38d33953ca..2cb7354426 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrl_year.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -21,6 +25,7 @@
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
<avg_time_generation>0.301</avg_time_generation>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://example.org/index.htm</url>
</row>
</result>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml
index f7e7161700..5991dd0814 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_day.xml
@@ -10,6 +10,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -17,6 +21,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -33,6 +38,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -40,6 +49,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -58,6 +68,11 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -75,11 +90,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -92,13 +112,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -114,6 +139,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -131,11 +161,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -148,13 +183,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -170,6 +210,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -187,11 +232,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -204,13 +254,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -226,6 +281,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -243,11 +303,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -260,13 +325,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -282,6 +352,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -299,11 +374,16 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -316,13 +396,18 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -338,6 +423,11 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml
index e68d67ec34..243e72e2ad 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_month.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -17,6 +21,7 @@
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>9</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>320</avg_time_on_page>
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
@@ -32,7 +37,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -43,14 +53,19 @@
<label>/thankyou</label>
<nb_visits>8</nb_visits>
<nb_hits>16</nb_hits>
- <sum_time_spent>2880</sum_time_spent>
+ <sum_time_spent>4320</sum_time_spent>
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -65,6 +80,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -73,6 +92,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml
index 12e84f1f05..9f5f082552 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_week.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.123</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -17,6 +21,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -32,6 +37,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -40,6 +49,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -57,7 +67,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>7</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -72,12 +87,17 @@
<nb_hits_with_time_generation>6</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>6</entry_nb_visits>
<entry_nb_actions>30</entry_nb_actions>
<entry_sum_visit_length>5406</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>6</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -89,14 +109,19 @@
<label>/thankyou</label>
<nb_visits>6</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>2160</sum_time_spent>
+ <sum_time_spent>3240</sum_time_spent>
<nb_hits_with_time_generation>12</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>6</exit_nb_visits>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>6</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -113,12 +138,17 @@
<nb_hits_with_time_generation>2</nb_hits_with_time_generation>
<min_time_generation>0.323</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>1802</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -130,14 +160,19 @@
<label>/thankyou</label>
<nb_visits>2</nb_visits>
<nb_hits>4</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>1080</sum_time_spent>
<nb_hits_with_time_generation>4</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -152,7 +187,12 @@
<nb_hits_with_time_generation>0</nb_hits_with_time_generation>
<min_time_generation />
<max_time_generation>0</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml
index 266832e590..db1fc350c6 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageUrls_year.xml
@@ -9,6 +9,10 @@
<nb_hits_with_time_generation>9</nb_hits_with_time_generation>
<min_time_generation>0.123</min_time_generation>
<max_time_generation>0.323</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>9</entry_nb_visits>
<entry_nb_actions>41</entry_nb_actions>
<entry_sum_visit_length>7208</entry_sum_visit_length>
@@ -17,6 +21,7 @@
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>9</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>320</avg_time_on_page>
<bounce_rate>11%</bounce_rate>
<exit_rate>11%</exit_rate>
@@ -32,7 +37,12 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.223</min_time_generation>
<max_time_generation>0.223</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -43,14 +53,19 @@
<label>/thankyou</label>
<nb_visits>8</nb_visits>
<nb_hits>16</nb_hits>
- <sum_time_spent>2880</sum_time_spent>
+ <sum_time_spent>4320</sum_time_spent>
<nb_hits_with_time_generation>16</nb_hits_with_time_generation>
<min_time_generation>0.173</min_time_generation>
<max_time_generation>0.452</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>8</exit_nb_visits>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>8</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_bandwidth>0</avg_bandwidth>
+ <avg_time_on_page>270</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<avg_time_generation>0.313</avg_time_generation>
@@ -65,6 +80,10 @@
<nb_hits_with_time_generation>1</nb_hits_with_time_generation>
<min_time_generation>0.153</min_time_generation>
<max_time_generation>0.153</max_time_generation>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -73,6 +92,7 @@
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
index e29c38ad88..448942b60a 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_csv__ScheduledReports.generateReport_month.original.csv
@@ -1,7 +1,7 @@
All Websites dashboard
-label,nb_visits,nb_actions,nb_pageviews,revenue,nb_conversions,visits_evolution,actions_evolution,pageviews_evolution,revenue_evolution,nb_conversions_evolution,orders,ecommerce_revenue,orders_evolution,ecommerce_revenue_evolution
-Site 1,11,43,43,$ 0,0,100%,100%,100%,0%,0%,0,$ 0,0,0
-Site 2,1,3,3,$ 0,0,100%,100%,100%,0%,0%,0,$ 0,0,0
+label,nb_visits,nb_actions,nb_pageviews,revenue,nb_conversions,orders,ecommerce_revenue,visits_evolution,actions_evolution,pageviews_evolution,nb_conversions_evolution,revenue_evolution,orders_evolution,ecommerce_revenue_evolution
+Site 1,11,43,43,$ 0,0,0,$ 0,100%,100%,0%,0%,0,0,0
+Site 2,1,3,3,$ 0,0,0,$ 0,100%,100%,0%,0%,0,0,0
Visits Summary
nb_uniq_visitors,nb_visits,nb_actions,max_actions,nb_actions_per_visit,avg_time_on_site,bounce_rate
@@ -236,42 +236,47 @@ Saturday,1,5,0%,5,00:15:01,0%
Sunday,3,7,0%,2.3,00:05:00,67%
Actions - Main metrics
-nb_pageviews,nb_uniq_pageviews,nb_downloads,nb_uniq_downloads,nb_outlinks,nb_uniq_outlinks,nb_searches,nb_keywords,avg_time_generation
-43,27,0,0,0,0,0,0,0.3s
+nb_pageviews,nb_uniq_pageviews,nb_downloads,nb_uniq_downloads,nb_outlinks,nb_uniq_outlinks,nb_searches,nb_keywords
+43,27,0,0,0,0,0,0
+
+Bandwidth - Main metrics
+nb_total_overall_bandwidth,nb_total_pageview_bandwidth,nb_total_download_bandwidth
+0,0,0
Page URLs
label,nb_visits,nb_hits,bounce_rate,avg_time_on_page,exit_rate,avg_time_generation
-/index.htm,9,9,11%,00:05:20,11%,0.3s
+index.htm,9,9,11%,00:05:20,11%,0.3s
Page URL not defined,9,17,0%,00:00:00,0%,0.22s
-/thankyou,8,16,0%,00:03:00,100%,0.31s
-/products,1,1,100%,00:00:00,100%,0.15s
+thankyou,8,16,0%,00:04:30,100%,0.31s
+products,1,1,100%,00:00:00,100%,0.15s
Entry pages
label,entry_nb_visits,entry_bounce_count,bounce_rate,avg_time_generation
-/index.htm,9,1,11%,0.3s
-/products,1,1,100%,0.15s
+index.htm,9,1,11%,0.3s
+products,1,1,100%,0.15s
Entry page titles
label,entry_nb_visits,entry_bounce_count,bounce_rate,avg_time_generation
-second visitor,8,0,0%,0.25s
- first page view,2,2,100%,0.14s
+second visitor/two days later/a new visit,8,0,0%,0.32s
+first page view,2,2,100%,0.14s
Exit pages
label,nb_visits,exit_nb_visits,exit_rate,avg_time_generation
-/index.htm,9,1,11%,0.3s
-/thankyou,8,8,100%,0.31s
-/products,1,1,100%,0.15s
+index.htm,9,1,11%,0.3s
+thankyou,8,8,100%,0.31s
+products,1,1,100%,0.15s
Exit page titles
label,nb_visits,exit_nb_visits,exit_rate,avg_time_generation
-Checkout,8,8,100%,0.45s
- first page view,2,2,100%,0.14s
+Checkout/Purchasing...,8,8,100%,0.45s
+first page view,2,2,100%,0.14s
Page titles
label,nb_visits,nb_hits,bounce_rate,avg_time_on_page,exit_rate,avg_time_generation
-second visitor,16,16,0%,00:07:30,0%,0.25s
-Checkout,8,8,0%,00:00:00,100%,0.45s
- first page view,2,2,100%,00:00:00,100%,0.14s
+Checkout/Purchasing...,8,8,0%,00:00:00,100%,0.45s
+second visitor/two days later/a new visit,8,8,0%,00:06:00,0%,0.32s
+second visitor/two days later/second page view,8,8,0%,00:09:00,0%,0.17s
+first page view,2,2,100%,00:00:00,100%,0.14s
Page Name not defined,1,1,0%,00:00:00,0%,0.22s
Site Search Keywords
@@ -312,8 +317,8 @@ No data available
Referrer Type
label,nb_visits,nb_actions,nb_actions_per_visit,avg_time_on_site,bounce_rate,revenue
-Websites,6,22,3.7,00:10:01,33%,$ 0
-Campaigns,4,20,5,00:15:01,0%,$ 0
+Websites - referrer.com,6,22,3.7,00:10:01,33%,$ 0
+Campaigns - goal-matching-url-parameter,4,20,5,00:15:01,0%,$ 0
Direct Entry,1,1,1,00:00:00,100%,$ 0
All Referrers
@@ -329,14 +334,15 @@ No data available
Websites
label,nb_visits,nb_actions,nb_actions_per_visit,avg_time_on_site,bounce_rate,revenue
-referrer.com,6,22,3.7,00:10:01,33%,$ 0
+referrer.com/Other_Page.htm,4,20,5,00:15:01,0%,$ 0
+referrer.com/page.htm?param=valuewith some spaces,2,2,1,00:00:00,100%,$ 0
Social Networks
No data available
Campaigns
label,nb_visits,nb_actions,nb_actions_per_visit,avg_time_on_site,bounce_rate,revenue
-goal-matching-url-parameter,4,20,5,00:15:01,0%,$ 0
+goal-matching-url-parameter - referrer.com,4,20,5,00:15:01,0%,$ 0
Goals
nb_conversions,nb_visits_converted,revenue,conversion_rate
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
index 3d01673888..fab3a92721 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html
@@ -171,6 +171,11 @@
</a>
</li>
<li>
+ <a href="#Bandwidth_get" style="text-decoration:none; color: rgb(13,13,13);">
+ Bandwidth - Main metrics
+ </a>
+ </li>
+ <li>
<a href="#Actions_getPageUrls" style="text-decoration:none; color: rgb(13,13,13);">
Page URLs
</a>
@@ -4095,12 +4100,50 @@
0
</td>
</tr>
+ </tbody>
+ </table>
+ <br/>
+ <a style="text-decoration:none; color: rgb(13,13,13); font-size: 9pt;" href="#reportTop">
+ Back to top
+ </a>
+<h2 id="Bandwidth_get" style="color: rgb(13,13,13); font-size: 24pt; font-weight:normal;">
+ Bandwidth - Main metrics
+</h2>
+
+
+
+ <table style="border-collapse:collapse; margin-left: 5px;">
+ <thead style="background-color: rgb(255,255,255); color: rgb(13,13,13); font-size: 11pt; text-transform: uppercase; line-height:2.5em;">
+ <th style="font-weight: normal; font-size:10px; text-align:left; padding: 6px 0;">
+ &nbsp;Name&nbsp;&nbsp;
+ </th>
+ <th style="font-weight: normal; font-size:10px; text-align:left; padding: 6px 0;">
+ &nbsp;Value&nbsp;&nbsp;
+ </th>
+ </thead>
+ <tbody>
+
+ <tr style="background-color: rgb(242,242,242);line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ Bytes transferred overall </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0
+ </td>
+ </tr>
+
+ <tr style=";line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ Bytes transferred pageviews </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0
+ </td>
+ </tr>
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Avg. generation time </td>
+ Bytes transferred downloads </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 0.3s
+ 0
</td>
</tr>
</tbody>
@@ -4144,7 +4187,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/index.htm'>
- /index.htm </a>
+ index.htm </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
9
@@ -4194,7 +4237,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/thankyou'>
- /thankyou </a>
+ thankyou </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
16
@@ -4203,7 +4246,7 @@
8
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 00:03:00
+ 00:04:30
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
0%
@@ -4219,7 +4262,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/products'>
- /products </a>
+ products </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
@@ -4275,7 +4318,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/index.htm'>
- /index.htm </a>
+ index.htm </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
9
@@ -4294,7 +4337,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/products'>
- /products </a>
+ products </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
@@ -4343,7 +4386,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- second visitor </td>
+ second visitor/two days later/a new visit </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
8
</td>
@@ -4354,13 +4397,13 @@
0%
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 0.25s
+ 0.32s
</td>
</tr>
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- first page view </td>
+ first page view </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
</td>
@@ -4409,7 +4452,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/index.htm'>
- /index.htm </a>
+ index.htm </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
@@ -4428,7 +4471,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/thankyou'>
- /thankyou </a>
+ thankyou </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
8
@@ -4447,7 +4490,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/products'>
- /products </a>
+ products </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
@@ -4496,7 +4539,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Checkout </td>
+ Checkout/Purchasing... </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
8
</td>
@@ -4513,7 +4556,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- first page view </td>
+ first page view </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
</td>
@@ -4567,30 +4610,30 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- second visitor </td>
+ Checkout/Purchasing... </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 16
+ 8
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 16
+ 8
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 00:07:30
+ 00:00:00
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
0%
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 0%
+ 100%
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 0.25s
+ 0.45s
</td>
</tr>
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Checkout </td>
+ second visitor/two days later/a new visit </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
8
</td>
@@ -4598,22 +4641,45 @@
8
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 00:00:00
+ 00:06:00
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
0%
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 100%
+ 0%
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 0.45s
+ 0.32s
</td>
</tr>
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- first page view </td>
+ second visitor/two days later/second page view </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 8
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 8
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 00:09:00
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0%
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0%
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0.17s
+ </td>
+ </tr>
+
+ <tr style=";line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ first page view </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
</td>
@@ -4634,7 +4700,7 @@
</td>
</tr>
- <tr style=";line-height: 22px;">
+ <tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
Page Name not defined </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
@@ -4756,7 +4822,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Websites </td>
+ Websites - referrer.com </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
6
</td>
@@ -4779,7 +4845,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Campaigns </td>
+ Campaigns - goal-matching-url-parameter </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
4
</td>
@@ -4955,21 +5021,48 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- referrer.com </td>
+ <a style="color: rgb(13,13,13);" href='http://referrer.com/Other_Page.htm'>
+ referrer.com/Other_Page.htm </a>
+ </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 6
+ 4
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 22
+ 20
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 3.7
+ 5
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 00:10:01
+ 00:15:01
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 33%
+ 0%
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ $ 0
+ </td>
+ </tr>
+
+ <tr style=";line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ <a style="color: rgb(13,13,13);" href='http://referrer.com/page.htm?param=valuewith some spaces'>
+ referrer.com/page.htm?param=valuewith some spaces </a>
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 2
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 2
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 1
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 00:00:00
+ </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 100%
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
$ 0
@@ -5020,7 +5113,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- goal-matching-url-parameter </td>
+ goal-matching-url-parameter - referrer.com </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
4
</td>
diff --git a/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmentedRef__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmentedRef__Actions.getPageUrls_day.xml
index 275f1a4987..5de83eab1f 100644
--- a/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmentedRef__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmentedRef__Actions.getPageUrls_day.xml
@@ -5,11 +5,16 @@
<nb_visits>4</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>2520</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>2161</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>420</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>25%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>1080</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
@@ -36,6 +45,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -47,6 +60,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>720</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -58,6 +75,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -73,6 +94,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -85,6 +111,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmented__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmented__Actions.getPageUrls_day.xml
index 1dd8c3190c..2660c49d30 100644
--- a/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmented__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_UrlNormalization_pagesSegmented__Actions.getPageUrls_day.xml
@@ -5,6 +5,11 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -15,6 +20,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_UrlNormalization_titles__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_UrlNormalization_titles__Actions.getPageTitles_day.xml
index 504018b6cd..05701cc5f6 100644
--- a/tests/PHPUnit/System/expected/test_UrlNormalization_titles__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_UrlNormalization_titles__Actions.getPageTitles_day.xml
@@ -5,10 +5,15 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>1080</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>2161</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -19,6 +24,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
@@ -34,6 +43,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -45,6 +58,11 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -55,6 +73,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -65,6 +87,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -77,6 +103,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -87,8 +118,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -99,6 +135,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_UrlNormalization_urls__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_UrlNormalization_urls__Actions.getPageUrls_day.xml
index 275f1a4987..5de83eab1f 100644
--- a/tests/PHPUnit/System/expected/test_UrlNormalization_urls__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_UrlNormalization_urls__Actions.getPageUrls_day.xml
@@ -5,11 +5,16 @@
<nb_visits>4</nb_visits>
<nb_hits>6</nb_hits>
<sum_time_spent>2520</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>2161</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>420</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>25%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>1080</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>8</entry_nb_actions>
@@ -36,6 +45,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -47,6 +60,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<avg_time_on_page>720</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -58,6 +75,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -73,6 +94,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -85,6 +111,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldAppear__Actions.getPageUrls_month.xml
index f48878ed7e..0b86faf5e2 100644
--- a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldAppear__Actions.getPageUrls_month.xml
@@ -6,11 +6,16 @@
<nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -20,6 +25,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -36,6 +45,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -47,6 +60,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -65,10 +82,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -78,6 +100,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -94,6 +120,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -105,6 +135,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -118,7 +152,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -130,7 +169,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -142,7 +186,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -152,6 +201,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml
index f48878ed7e..0b86faf5e2 100644
--- a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite1_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml
@@ -6,11 +6,16 @@
<nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -20,6 +25,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -36,6 +45,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -47,6 +60,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -65,10 +82,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -78,6 +100,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -94,6 +120,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -105,6 +135,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -118,7 +152,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -130,7 +169,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -142,7 +186,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -152,6 +201,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldAppear__Actions.getPageUrls_month.xml
index 4201ab7dd3..4fbc091b2e 100644
--- a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldAppear__Actions.getPageUrls_month.xml
@@ -6,11 +6,16 @@
<nb_visits>3</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>361</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>72</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -20,6 +25,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>361</entry_sum_visit_length>
@@ -36,6 +45,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -47,6 +60,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -66,10 +83,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -79,6 +101,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -95,6 +121,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -106,6 +136,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -119,7 +153,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -131,7 +170,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -143,7 +187,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -153,6 +202,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml
index 4201ab7dd3..4fbc091b2e 100644
--- a/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_VisitsInPast_InvalidateOldReportsWebsite2_OldReportsShouldNotAppear__Actions.getPageUrls_month.xml
@@ -6,11 +6,16 @@
<nb_visits>3</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>361</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>72</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>33%</exit_rate>
@@ -20,6 +25,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>361</entry_sum_visit_length>
@@ -36,6 +45,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -47,6 +60,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
@@ -66,10 +83,15 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -79,6 +101,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
@@ -95,6 +121,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -106,6 +136,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -119,7 +153,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -131,7 +170,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -143,7 +187,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -153,6 +202,10 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getDefaultMetricTranslations.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getDefaultMetricTranslations.xml
index 0993a20cd0..2da072a826 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getDefaultMetricTranslations.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getDefaultMetricTranslations.xml
@@ -83,5 +83,13 @@
<nb_interactions>Interactions</nb_interactions>
<interaction_rate>Interaction Rate</interaction_rate>
<nb_visits_percentage>% Visits</nb_visits_percentage>
+ <nb_hits_with_bandwidth>Recorded hits with bandwidth</nb_hits_with_bandwidth>
+ <max_bandwidth>Max Bandwidth</max_bandwidth>
+ <min_bandwidth>Min Bandwidth</min_bandwidth>
+ <sum_bandwidth>Sum Bandwidth</sum_bandwidth>
+ <avg_bandwidth>Avg. Bandwidth</avg_bandwidth>
+ <nb_total_overall_bandwidth>Bytes transferred overall</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>Bytes transferred pageviews</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>Bytes transferred downloads</nb_total_download_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
index 05747a4f62..ea1dbce1af 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
@@ -1068,6 +1068,20 @@
</row>
<row>
<category>Actions</category>
+ <name>Bandwidth - Main metrics</name>
+ <module>Bandwidth</module>
+ <action>get</action>
+ <metrics>
+ <nb_total_overall_bandwidth>Bytes transferred overall</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>Bytes transferred pageviews</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>Bytes transferred downloads</nb_total_download_bandwidth>
+ </metrics>
+ <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Bandwidth&amp;apiAction=get&amp;period=day&amp;date=2008-12-06,2009-01-04</imageGraphUrl>
+ <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Bandwidth&amp;apiAction=get&amp;period=day&amp;date=2008-12-06,2009-01-04</imageGraphEvolutionUrl>
+ <uniqueId>Bandwidth_get</uniqueId>
+ </row>
+ <row>
+ <category>Actions</category>
<subcategory>Pages</subcategory>
<name>Page URLs</name>
<module>Actions</module>
@@ -2425,6 +2439,9 @@
<nb_uniq_visitors_returning>Unique returning visitors</nb_uniq_visitors_returning>
<nb_users_returning>Returning Users</nb_users_returning>
<max_actions_returning>Maximum actions in one returning visit</max_actions_returning>
+ <nb_total_overall_bandwidth>Bytes transferred overall</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>Bytes transferred pageviews</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>Bytes transferred downloads</nb_total_download_bandwidth>
</metrics>
<metricsDocumentation>
<nb_pageviews>The number of times this page was visited.</nb_pageviews>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 70ceefeae0..8499ae5bca 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -59,6 +59,13 @@
<permission>1</permission>
</row>
<row>
+ <type>metric</type>
+ <category>Actions</category>
+ <name>Bandwidth</name>
+ <segment>bandwidth</segment>
+ <acceptedValues>Any number in bytes, eg. 1000</acceptedValues>
+ </row>
+ <row>
<type>dimension</type>
<category>Visit Location</category>
<name>City</name>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 447ef39261..17adcdc0ad 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -576,7 +576,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Region</name>
+ <name>Visitor Map</name>
<category>
<id>General_Visitors</id>
<name>Visitors</name>
@@ -588,20 +588,18 @@
<name>Locations</name>
<order>25</order>
</subcategory>
- <module>UserCountry</module>
- <action>getRegion</action>
- <order>107</order>
+ <module>UserCountryMap</module>
+ <action>visitorMap</action>
+ <order>1</order>
<parameters>
- <module>UserCountry</module>
- <action>getRegion</action>
+ <module>UserCountryMap</module>
+ <action>visitorMap</action>
</parameters>
- <uniqueId>widgetUserCountrygetRegion</uniqueId>
+ <uniqueId>widgetUserCountryMapvisitorMap</uniqueId>
<isWide>0</isWide>
- <viewDataTable>table</viewDataTable>
- <isReport>1</isReport>
</row>
<row>
- <name>Visitor Map</name>
+ <name>Region</name>
<category>
<id>General_Visitors</id>
<name>Visitors</name>
@@ -613,15 +611,17 @@
<name>Locations</name>
<order>25</order>
</subcategory>
- <module>UserCountryMap</module>
- <action>visitorMap</action>
- <order>1</order>
+ <module>UserCountry</module>
+ <action>getRegion</action>
+ <order>107</order>
<parameters>
- <module>UserCountryMap</module>
- <action>visitorMap</action>
+ <module>UserCountry</module>
+ <action>getRegion</action>
</parameters>
- <uniqueId>widgetUserCountryMapvisitorMap</uniqueId>
+ <uniqueId>widgetUserCountrygetRegion</uniqueId>
<isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
</row>
<row>
<name>Continent</name>
@@ -778,7 +778,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per visit duration</name>
+ <name>Visits by Visit Number</name>
<category>
<id>General_Visitors</id>
<name>Visitors</name>
@@ -791,15 +791,15 @@
<order>30</order>
</subcategory>
<module>VisitorInterest</module>
- <action>getNumberOfVisitsPerVisitDuration</action>
- <order>115</order>
+ <action>getNumberOfVisitsByVisitCount</action>
+ <order>125</order>
<parameters>
<module>VisitorInterest</module>
- <action>getNumberOfVisitsPerVisitDuration</action>
+ <action>getNumberOfVisitsByVisitCount</action>
</parameters>
- <uniqueId>widgetVisitorInterestgetNumberOfVisitsPerVisitDuration</uniqueId>
+ <uniqueId>widgetVisitorInterestgetNumberOfVisitsByVisitCount</uniqueId>
<isWide>0</isWide>
- <viewDataTable>cloud</viewDataTable>
+ <viewDataTable>table</viewDataTable>
<isReport>1</isReport>
</row>
<row>
@@ -822,7 +822,7 @@
<isWide>0</isWide>
</row>
<row>
- <name>Visits by Visit Number</name>
+ <name>Visits per visit duration</name>
<category>
<id>General_Visitors</id>
<name>Visitors</name>
@@ -835,15 +835,15 @@
<order>30</order>
</subcategory>
<module>VisitorInterest</module>
- <action>getNumberOfVisitsByVisitCount</action>
- <order>125</order>
+ <action>getNumberOfVisitsPerVisitDuration</action>
+ <order>115</order>
<parameters>
<module>VisitorInterest</module>
- <action>getNumberOfVisitsByVisitCount</action>
+ <action>getNumberOfVisitsPerVisitDuration</action>
</parameters>
- <uniqueId>widgetVisitorInterestgetNumberOfVisitsByVisitCount</uniqueId>
+ <uniqueId>widgetVisitorInterestgetNumberOfVisitsPerVisitDuration</uniqueId>
<isWide>0</isWide>
- <viewDataTable>table</viewDataTable>
+ <viewDataTable>cloud</viewDataTable>
<isReport>1</isReport>
</row>
<row>
@@ -1864,7 +1864,7 @@
<isWide>0</isWide>
</row>
<row>
- <name>Product SKU</name>
+ <name>Product Category</name>
<category>
<id>Goals_Ecommerce</id>
<name>Ecommerce</name>
@@ -1877,19 +1877,19 @@
<order>10</order>
</subcategory>
<module>Goals</module>
- <action>getItemsSku</action>
- <order>130</order>
+ <action>getItemsCategory</action>
+ <order>132</order>
<parameters>
<module>Goals</module>
- <action>getItemsSku</action>
+ <action>getItemsCategory</action>
</parameters>
- <uniqueId>widgetGoalsgetItemsSku</uniqueId>
+ <uniqueId>widgetGoalsgetItemsCategory</uniqueId>
<isWide>0</isWide>
<viewDataTable>table</viewDataTable>
<isReport>1</isReport>
</row>
<row>
- <name>Product Category</name>
+ <name>Product SKU</name>
<category>
<id>Goals_Ecommerce</id>
<name>Ecommerce</name>
@@ -1902,13 +1902,13 @@
<order>10</order>
</subcategory>
<module>Goals</module>
- <action>getItemsCategory</action>
- <order>132</order>
+ <action>getItemsSku</action>
+ <order>130</order>
<parameters>
<module>Goals</module>
- <action>getItemsCategory</action>
+ <action>getItemsSku</action>
</parameters>
- <uniqueId>widgetGoalsgetItemsCategory</uniqueId>
+ <uniqueId>widgetGoalsgetItemsSku</uniqueId>
<isWide>0</isWide>
<viewDataTable>table</viewDataTable>
<isReport>1</isReport>
@@ -2748,7 +2748,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Piwik Changelog</name>
+ <name>Piwik.org Blog</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2757,17 +2757,17 @@
</category>
<subcategory />
<module>RssWidget</module>
- <action>rssChangelog</action>
+ <action>rssPiwik</action>
<order>99</order>
<parameters>
<module>RssWidget</module>
- <action>rssChangelog</action>
+ <action>rssPiwik</action>
</parameters>
- <uniqueId>widgetRssWidgetrssChangelog</uniqueId>
+ <uniqueId>widgetRssWidgetrssPiwik</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>System Summary</name>
+ <name>Example Widget Name</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2775,18 +2775,18 @@
<icon />
</category>
<subcategory />
- <module>CoreHome</module>
- <action>getSystemSummary</action>
- <order>15</order>
+ <module>ExamplePlugin</module>
+ <action>myExampleWidget</action>
+ <order>99</order>
<parameters>
- <module>CoreHome</module>
- <action>getSystemSummary</action>
+ <module>ExamplePlugin</module>
+ <action>myExampleWidget</action>
</parameters>
- <uniqueId>widgetCoreHomegetSystemSummary</uniqueId>
+ <uniqueId>widgetExamplePluginmyExampleWidget</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Top Keywords for Page URL</name>
+ <name>SEO Rankings</name>
<category>
<id>SEO</id>
<name>SEO</name>
@@ -2794,18 +2794,18 @@
<icon />
</category>
<subcategory />
- <module>Referrers</module>
- <action>getKeywordsForPage</action>
+ <module>SEO</module>
+ <action>getRank</action>
<order>99</order>
<parameters>
- <module>Referrers</module>
- <action>getKeywordsForPage</action>
+ <module>SEO</module>
+ <action>getRank</action>
</parameters>
- <uniqueId>widgetReferrersgetKeywordsForPage</uniqueId>
+ <uniqueId>widgetSEOgetRank</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Piwik.org Blog</name>
+ <name>System Check</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2813,18 +2813,18 @@
<icon />
</category>
<subcategory />
- <module>RssWidget</module>
- <action>rssPiwik</action>
- <order>99</order>
+ <module>Installation</module>
+ <action>getSystemCheck</action>
+ <order>16</order>
<parameters>
- <module>RssWidget</module>
- <action>rssPiwik</action>
+ <module>Installation</module>
+ <action>getSystemCheck</action>
</parameters>
- <uniqueId>widgetRssWidgetrssPiwik</uniqueId>
+ <uniqueId>widgetInstallationgetSystemCheck</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Latest Marketplace Updates</name>
+ <name>Support Piwik!</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2832,37 +2832,37 @@
<icon />
</category>
<subcategory />
- <module>CorePluginsAdmin</module>
- <action>getNewPlugins</action>
- <order>19</order>
+ <module>CoreHome</module>
+ <action>getDonateForm</action>
+ <order>5</order>
<parameters>
- <module>CorePluginsAdmin</module>
- <action>getNewPlugins</action>
+ <module>CoreHome</module>
+ <action>getDonateForm</action>
</parameters>
- <uniqueId>widgetCorePluginsAdmingetNewPlugins</uniqueId>
+ <uniqueId>widgetCoreHomegetDonateForm</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>SEO Rankings</name>
+ <name>Piwik Changelog</name>
<category>
- <id>SEO</id>
- <name>SEO</name>
+ <id>About Piwik</id>
+ <name>About Piwik</name>
<order>99</order>
<icon />
</category>
<subcategory />
- <module>SEO</module>
- <action>getRank</action>
+ <module>RssWidget</module>
+ <action>rssChangelog</action>
<order>99</order>
<parameters>
- <module>SEO</module>
- <action>getRank</action>
+ <module>RssWidget</module>
+ <action>rssChangelog</action>
</parameters>
- <uniqueId>widgetSEOgetRank</uniqueId>
+ <uniqueId>widgetRssWidgetrssChangelog</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Professional Services for Piwik</name>
+ <name>Premium Products &amp; Services for Piwik</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2881,7 +2881,7 @@
<isWide>0</isWide>
</row>
<row>
- <name>Welcome!</name>
+ <name>System Summary</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2890,36 +2890,36 @@
</category>
<subcategory />
<module>CoreHome</module>
- <action>getPromoVideo</action>
- <order>10</order>
+ <action>getSystemSummary</action>
+ <order>15</order>
<parameters>
<module>CoreHome</module>
- <action>getPromoVideo</action>
+ <action>getSystemSummary</action>
</parameters>
- <uniqueId>widgetCoreHomegetPromoVideo</uniqueId>
+ <uniqueId>widgetCoreHomegetSystemSummary</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Movers and Shakers</name>
+ <name>Latest Marketplace Updates</name>
<category>
- <id>Insights_WidgetCategory</id>
- <name>Insights</name>
+ <id>About Piwik</id>
+ <name>About Piwik</name>
<order>99</order>
<icon />
</category>
<subcategory />
- <module>Insights</module>
- <action>getOverallMoversAndShakers</action>
- <order>99</order>
+ <module>Marketplace</module>
+ <action>getNewPlugins</action>
+ <order>19</order>
<parameters>
- <module>Insights</module>
- <action>getOverallMoversAndShakers</action>
+ <module>Marketplace</module>
+ <action>getNewPlugins</action>
</parameters>
- <uniqueId>widgetInsightsgetOverallMoversAndShakers</uniqueId>
+ <uniqueId>widgetMarketplacegetNewPlugins</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>System Check</name>
+ <name>Welcome!</name>
<category>
<id>About Piwik</id>
<name>About Piwik</name>
@@ -2927,56 +2927,56 @@
<icon />
</category>
<subcategory />
- <module>Installation</module>
- <action>getSystemCheck</action>
- <order>16</order>
+ <module>CoreHome</module>
+ <action>getPromoVideo</action>
+ <order>10</order>
<parameters>
- <module>Installation</module>
- <action>getSystemCheck</action>
+ <module>CoreHome</module>
+ <action>getPromoVideo</action>
</parameters>
- <uniqueId>widgetInstallationgetSystemCheck</uniqueId>
+ <uniqueId>widgetCoreHomegetPromoVideo</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Example Widget Name</name>
+ <name>Top Keywords for Page URL</name>
<category>
- <id>About Piwik</id>
- <name>About Piwik</name>
+ <id>SEO</id>
+ <name>SEO</name>
<order>99</order>
<icon />
</category>
<subcategory />
- <module>ExamplePlugin</module>
- <action>myExampleWidget</action>
+ <module>Referrers</module>
+ <action>getKeywordsForPage</action>
<order>99</order>
<parameters>
- <module>ExamplePlugin</module>
- <action>myExampleWidget</action>
+ <module>Referrers</module>
+ <action>getKeywordsForPage</action>
</parameters>
- <uniqueId>widgetExamplePluginmyExampleWidget</uniqueId>
+ <uniqueId>widgetReferrersgetKeywordsForPage</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Support Piwik!</name>
+ <name>Insights Overview</name>
<category>
- <id>About Piwik</id>
- <name>About Piwik</name>
+ <id>Insights_WidgetCategory</id>
+ <name>Insights</name>
<order>99</order>
<icon />
</category>
<subcategory />
- <module>CoreHome</module>
- <action>getDonateForm</action>
- <order>5</order>
+ <module>Insights</module>
+ <action>getInsightsOverview</action>
+ <order>99</order>
<parameters>
- <module>CoreHome</module>
- <action>getDonateForm</action>
+ <module>Insights</module>
+ <action>getInsightsOverview</action>
</parameters>
- <uniqueId>widgetCoreHomegetDonateForm</uniqueId>
+ <uniqueId>widgetInsightsgetInsightsOverview</uniqueId>
<isWide>0</isWide>
</row>
<row>
- <name>Insights Overview</name>
+ <name>Movers and Shakers</name>
<category>
<id>Insights_WidgetCategory</id>
<name>Insights</name>
@@ -2985,13 +2985,13 @@
</category>
<subcategory />
<module>Insights</module>
- <action>getInsightsOverview</action>
+ <action>getOverallMoversAndShakers</action>
<order>99</order>
<parameters>
<module>Insights</module>
- <action>getInsightsOverview</action>
+ <action>getOverallMoversAndShakers</action>
</parameters>
- <uniqueId>widgetInsightsgetInsightsOverview</uniqueId>
+ <uniqueId>widgetInsightsgetOverallMoversAndShakers</uniqueId>
<isWide>0</isWide>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.get_day.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.get_day.xml
index 375235eaa5..501fa2a583 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.get_day.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.get_day.xml
@@ -27,6 +27,9 @@
<nb_visits_converted_returning_visit>0</nb_visits_converted_returning_visit>
<revenue_returning_visit>0</revenue_returning_visit>
<conversion_rate_returning_visit>0%</conversion_rate_returning_visit>
+ <nb_total_overall_bandwidth>0</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>0</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>0</nb_total_download_bandwidth>
<nb_pageviews>1</nb_pageviews>
<nb_uniq_pageviews>1</nb_uniq_pageviews>
<nb_downloads>0</nb_downloads>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_pageTitleZeroString__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_pageTitleZeroString__Actions.getPageTitles_day.xml
index 63017ad657..2fbca4f459 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_pageTitleZeroString__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_pageTitleZeroString__Actions.getPageTitles_day.xml
@@ -6,6 +6,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_phpRenderer__API.getDefaultMetricTranslations.php b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_phpRenderer__API.getDefaultMetricTranslations.php
index a8879a686c..80f9d11afe 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_phpRenderer__API.getDefaultMetricTranslations.php
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_phpRenderer__API.getDefaultMetricTranslations.php
@@ -1 +1 @@
-a:1:{i:0;a:82:{s:9:"nb_visits";s:6:"Visits";s:16:"nb_uniq_visitors";s:15:"Unique visitors";s:10:"nb_actions";s:7:"Actions";s:8:"nb_users";s:5:"Users";s:20:"nb_actions_per_visit";s:17:"Actions per Visit";s:16:"avg_time_on_site";s:20:"Avg. Time on Website";s:11:"bounce_rate";s:11:"Bounce Rate";s:15:"conversion_rate";s:15:"Conversion Rate";s:5:"label";s:5:"Label";s:4:"date";s:4:"Date";s:16:"avg_time_on_page";s:17:"Avg. time on page";s:14:"sum_time_spent";s:41:"Total time spent by visitors (in seconds)";s:16:"sum_visit_length";s:41:"Total time spent by visitors (in seconds)";s:12:"bounce_count";s:7:"Bounces";s:22:"bounce_count_returning";s:33:"Bounce Count for Returning Visits";s:11:"max_actions";s:28:"Maximum actions in one visit";s:21:"max_actions_returning";s:38:"Maximum actions in one returning visit";s:29:"nb_visits_converted_returning";s:36:"Number of converted returning visits";s:26:"sum_visit_length_returning";s:51:"Total time spent by returning visitors (in seconds)";s:19:"nb_visits_converted";s:23:"Visits with Conversions";s:14:"nb_conversions";s:11:"Conversions";s:7:"revenue";s:7:"Revenue";s:7:"nb_hits";s:9:"Pageviews";s:15:"entry_nb_visits";s:9:"Entrances";s:22:"entry_nb_uniq_visitors";s:16:"Unique entrances";s:14:"exit_nb_visits";s:5:"Exits";s:21:"exit_nb_uniq_visitors";s:12:"Unique exits";s:18:"entry_bounce_count";s:7:"Bounces";s:17:"exit_bounce_count";s:7:"Bounces";s:9:"exit_rate";s:9:"Exit rate";s:26:"sum_daily_nb_uniq_visitors";s:27:"Unique visitors (daily sum)";s:18:"sum_daily_nb_users";s:17:"Users (daily sum)";s:32:"sum_daily_entry_nb_uniq_visitors";s:28:"Unique entrances (daily sum)";s:31:"sum_daily_exit_nb_uniq_visitors";s:24:"Unique exits (daily sum)";s:16:"entry_nb_actions";s:27:"Actions after entering here";s:22:"entry_sum_visit_length";s:61:"Total time spent by visitors (in seconds) after entering here";s:12:"nb_pageviews";s:9:"Pageviews";s:17:"nb_uniq_pageviews";s:16:"Unique Pageviews";s:12:"nb_downloads";s:9:"Downloads";s:17:"nb_uniq_downloads";s:16:"Unique Downloads";s:11:"nb_outlinks";s:8:"Outlinks";s:16:"nb_uniq_outlinks";s:15:"Unique Outlinks";s:11:"nb_searches";s:8:"Searches";s:11:"nb_keywords";s:15:"Unique Keywords";s:19:"avg_time_generation";s:20:"Avg. generation time";s:19:"nb_pages_per_search";s:20:"Search Results pages";s:24:"nb_hits_following_search";s:25:"Clicked in search results";s:16:"visits_evolution";s:16:"Visits Evolution";s:17:"actions_evolution";s:17:"Actions Evolution";s:19:"pageviews_evolution";s:19:"Pageviews Evolution";s:17:"revenue_evolution";s:17:"Revenue Evolution";s:24:"nb_conversions_evolution";s:21:"Conversions Evolution";s:16:"orders_evolution";s:26:"Ecommerce Orders Evolution";s:27:"ecommerce_revenue_evolution";s:25:"Product Revenue Evolution";s:6:"orders";s:16:"Ecommerce Orders";s:17:"ecommerce_revenue";s:15:"Product Revenue";s:17:"revenue_per_visit";s:17:"Revenue per Visit";s:8:"quantity";s:8:"Quantity";s:9:"avg_price";s:13:"Average Price";s:12:"avg_quantity";s:16:"Average Quantity";s:16:"revenue_subtotal";s:8:"Subtotal";s:11:"revenue_tax";s:3:"Tax";s:16:"revenue_shipping";s:8:"Shipping";s:16:"revenue_discount";s:8:"Discount";s:17:"avg_order_revenue";s:19:"Average Order Value";s:9:"nb_events";s:12:"Total events";s:15:"sum_event_value";s:11:"Total value";s:15:"min_event_value";s:13:"Minimum value";s:15:"max_event_value";s:13:"Maximum value";s:15:"avg_event_value";s:13:"Average value";s:20:"nb_events_with_value";s:19:"Events with a value";s:19:"nb_visits_returning";s:16:"Returning Visits";s:20:"nb_actions_returning";s:27:"Actions by Returning Visits";s:26:"avg_time_on_site_returning";s:43:"Avg. Duration of a Returning Visit (in sec)";s:21:"bounce_rate_returning";s:32:"Bounce Rate for Returning Visits";s:30:"nb_actions_per_visit_returning";s:32:"Avg. Actions per Returning Visit";s:26:"nb_uniq_visitors_returning";s:25:"Unique returning visitors";s:18:"nb_users_returning";s:15:"Returning Users";s:14:"nb_impressions";s:11:"Impressions";s:15:"nb_interactions";s:12:"Interactions";s:16:"interaction_rate";s:16:"Interaction Rate";s:20:"nb_visits_percentage";s:8:"% Visits";}} \ No newline at end of file
+a:1:{i:0;a:90:{s:9:"nb_visits";s:6:"Visits";s:16:"nb_uniq_visitors";s:15:"Unique visitors";s:10:"nb_actions";s:7:"Actions";s:8:"nb_users";s:5:"Users";s:20:"nb_actions_per_visit";s:17:"Actions per Visit";s:16:"avg_time_on_site";s:20:"Avg. Time on Website";s:11:"bounce_rate";s:11:"Bounce Rate";s:15:"conversion_rate";s:15:"Conversion Rate";s:5:"label";s:5:"Label";s:4:"date";s:4:"Date";s:16:"avg_time_on_page";s:17:"Avg. time on page";s:14:"sum_time_spent";s:41:"Total time spent by visitors (in seconds)";s:16:"sum_visit_length";s:41:"Total time spent by visitors (in seconds)";s:12:"bounce_count";s:7:"Bounces";s:22:"bounce_count_returning";s:33:"Bounce Count for Returning Visits";s:11:"max_actions";s:28:"Maximum actions in one visit";s:21:"max_actions_returning";s:38:"Maximum actions in one returning visit";s:29:"nb_visits_converted_returning";s:36:"Number of converted returning visits";s:26:"sum_visit_length_returning";s:51:"Total time spent by returning visitors (in seconds)";s:19:"nb_visits_converted";s:23:"Visits with Conversions";s:14:"nb_conversions";s:11:"Conversions";s:7:"revenue";s:7:"Revenue";s:7:"nb_hits";s:9:"Pageviews";s:15:"entry_nb_visits";s:9:"Entrances";s:22:"entry_nb_uniq_visitors";s:16:"Unique entrances";s:14:"exit_nb_visits";s:5:"Exits";s:21:"exit_nb_uniq_visitors";s:12:"Unique exits";s:18:"entry_bounce_count";s:7:"Bounces";s:17:"exit_bounce_count";s:7:"Bounces";s:9:"exit_rate";s:9:"Exit rate";s:26:"sum_daily_nb_uniq_visitors";s:27:"Unique visitors (daily sum)";s:18:"sum_daily_nb_users";s:17:"Users (daily sum)";s:32:"sum_daily_entry_nb_uniq_visitors";s:28:"Unique entrances (daily sum)";s:31:"sum_daily_exit_nb_uniq_visitors";s:24:"Unique exits (daily sum)";s:16:"entry_nb_actions";s:27:"Actions after entering here";s:22:"entry_sum_visit_length";s:61:"Total time spent by visitors (in seconds) after entering here";s:12:"nb_pageviews";s:9:"Pageviews";s:17:"nb_uniq_pageviews";s:16:"Unique Pageviews";s:12:"nb_downloads";s:9:"Downloads";s:17:"nb_uniq_downloads";s:16:"Unique Downloads";s:11:"nb_outlinks";s:8:"Outlinks";s:16:"nb_uniq_outlinks";s:15:"Unique Outlinks";s:11:"nb_searches";s:8:"Searches";s:11:"nb_keywords";s:15:"Unique Keywords";s:19:"avg_time_generation";s:20:"Avg. generation time";s:19:"nb_pages_per_search";s:20:"Search Results pages";s:24:"nb_hits_following_search";s:25:"Clicked in search results";s:16:"visits_evolution";s:16:"Visits Evolution";s:17:"actions_evolution";s:17:"Actions Evolution";s:19:"pageviews_evolution";s:19:"Pageviews Evolution";s:17:"revenue_evolution";s:17:"Revenue Evolution";s:24:"nb_conversions_evolution";s:21:"Conversions Evolution";s:16:"orders_evolution";s:26:"Ecommerce Orders Evolution";s:27:"ecommerce_revenue_evolution";s:25:"Product Revenue Evolution";s:6:"orders";s:16:"Ecommerce Orders";s:17:"ecommerce_revenue";s:15:"Product Revenue";s:17:"revenue_per_visit";s:17:"Revenue per Visit";s:8:"quantity";s:8:"Quantity";s:9:"avg_price";s:13:"Average Price";s:12:"avg_quantity";s:16:"Average Quantity";s:16:"revenue_subtotal";s:8:"Subtotal";s:11:"revenue_tax";s:3:"Tax";s:16:"revenue_shipping";s:8:"Shipping";s:16:"revenue_discount";s:8:"Discount";s:17:"avg_order_revenue";s:19:"Average Order Value";s:9:"nb_events";s:12:"Total events";s:15:"sum_event_value";s:11:"Total value";s:15:"min_event_value";s:13:"Minimum value";s:15:"max_event_value";s:13:"Maximum value";s:15:"avg_event_value";s:13:"Average value";s:20:"nb_events_with_value";s:19:"Events with a value";s:19:"nb_visits_returning";s:16:"Returning Visits";s:20:"nb_actions_returning";s:27:"Actions by Returning Visits";s:26:"avg_time_on_site_returning";s:43:"Avg. Duration of a Returning Visit (in sec)";s:21:"bounce_rate_returning";s:32:"Bounce Rate for Returning Visits";s:30:"nb_actions_per_visit_returning";s:32:"Avg. Actions per Returning Visit";s:26:"nb_uniq_visitors_returning";s:25:"Unique returning visitors";s:18:"nb_users_returning";s:15:"Returning Users";s:14:"nb_impressions";s:11:"Impressions";s:15:"nb_interactions";s:12:"Interactions";s:16:"interaction_rate";s:16:"Interaction Rate";s:20:"nb_visits_percentage";s:8:"% Visits";s:22:"nb_hits_with_bandwidth";s:28:"Recorded hits with bandwidth";s:13:"max_bandwidth";s:13:"Max Bandwidth";s:13:"min_bandwidth";s:13:"Min Bandwidth";s:13:"sum_bandwidth";s:13:"Sum Bandwidth";s:13:"avg_bandwidth";s:14:"Avg. Bandwidth";s:26:"nb_total_overall_bandwidth";s:25:"Bytes transferred overall";s:27:"nb_total_pageview_bandwidth";s:27:"Bytes transferred pageviews";s:27:"nb_total_download_bandwidth";s:27:"Bytes transferred downloads";}} \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
index c8c4cc2022..3a3e734f39 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__SitesManager.getJavascriptTag.xml
@@ -14,4 +14,4 @@
&lt;/script&gt;
&lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;//example.org/piwik/piwik.php?idsite=1&quot; style=&quot;border:0;&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/noscript&gt;
&lt;!-- End Piwik Code --&gt;
-</result>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_csv__ScheduledReports.generateReport_week.original.csv b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_csv__ScheduledReports.generateReport_week.original.csv
index c228c82177..488663282f 100644
--- a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_csv__ScheduledReports.generateReport_week.original.csv
+++ b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_csv__ScheduledReports.generateReport_week.original.csv
@@ -1,7 +1,7 @@
All Websites dashboard
label,nb_visits,nb_actions,nb_pageviews,revenue,nb_conversions,orders,ecommerce_revenue,visits_evolution,actions_evolution,pageviews_evolution,revenue_evolution,nb_conversions_evolution,orders_evolution,ecommerce_revenue_evolution
-Piwik test,5,16,16,$ 13361.11,5,4,$ 13351.11,100%,100%,100%,100%,100%,100%,100%
-Piwik test,2,1,1,$ 250,1,0,$ 0,100%,100%,100%,100%,100%,0,0
+Piwik test,5,16,16,$ 13361.11,5,4,$ 13351.11,100%,100%,0%,0%,0%,0%,0%
+Piwik test,2,1,1,$ 250,1,1,$ 250,100%,100%,0%,0,0%,0,0
Visits Summary
nb_uniq_visitors,nb_visits,nb_actions,max_actions,nb_actions_per_visit,avg_time_on_site,bounce_rate
@@ -12,9 +12,9 @@ No data available
Custom Variables
label,nb_visits,nb_actions,revenue,nb_actions_per_visit,avg_time_on_site,bounce_rate
-ValueIsZero,5,16,$ 13361.11,3.2,00:22:49,20%
-VisitorType,5,16,$ 13361.11,3.2,00:22:49,20%
-VisitorName,4,12,$ 13351.11,3,00:25:32,25%
+ValueIsZero - Custom Variable value not defined,5,16,$ 13361.11,3.2,00:22:49,20%
+VisitorType - NewLoggedOut,5,16,$ 13361.11,3.2,00:22:49,20%
+VisitorName - Great name!,4,12,$ 13351.11,3,00:25:32,25%
Device type
label,nb_visits,nb_actions,revenue,nb_actions_per_visit,avg_time_on_site,bounce_rate
@@ -229,39 +229,43 @@ Actions - Main metrics
nb_pageviews,nb_uniq_pageviews,nb_downloads,nb_uniq_downloads,nb_outlinks,nb_uniq_outlinks,nb_searches,nb_keywords
16,4,0,0,0,0,0,0
+Bandwidth - Main metrics
+nb_total_overall_bandwidth,nb_total_pageview_bandwidth,nb_total_download_bandwidth
+0,0,0
+
Page URLs
label,nb_visits,nb_hits,bounce_rate,avg_time_on_page,exit_rate
-/index.htm,4,16,0%,00:03:23,100%
+index.htm,4,16,0%,00:03:23,100%
Entry pages
label,entry_nb_visits,entry_bounce_count,bounce_rate
-/index.htm,4,0,0%
+index.htm,4,0,0%
Entry page titles
label,entry_nb_visits,entry_bounce_count,bounce_rate
- View product left in cart,1,0,0%
- incredible title!,1,0,0%
- Looking at Electronics & Cameras page with a page level custom variable,1,0,0%
+View product left in cart,1,0,0%
+incredible title!,1,0,0%
+Looking at Electronics & Cameras page with a page level custom variable,1,0,0%
Exit pages
label,nb_visits,exit_nb_visits,exit_rate
-/index.htm,4,4,100%
+index.htm,4,4,100%
Exit page titles
label,nb_visits,exit_nb_visits,exit_rate
- View product left in cart,3,3,100%
- Another Product page with multiple categories,1,1,100%
+View product left in cart,3,3,100%
+Another Product page with multiple categories,1,1,100%
Page titles
label,nb_visits,nb_hits,bounce_rate,avg_time_on_page,exit_rate
- View product left in cart,3,9,0%,00:02:00,100%
- Another Product page,1,1,0%,00:06:00,0%
- Another Product page with multiple categories,1,1,0%,00:00:00,100%
- Another Product page with no category,1,1,0%,00:00:00,0%
- incredible title!,1,1,0%,00:06:00,0%
- Looking at Electronics & Cameras page again,1,1,0%,00:06:00,0%
- Looking at Electronics & Cameras page with a page level custom variable,1,1,0%,00:06:00,0%
- Looking at product page,1,1,0%,00:12:00,0%
+View product left in cart,3,9,0%,00:02:00,100%
+Another Product page,1,1,0%,00:06:00,0%
+Another Product page with multiple categories,1,1,0%,00:00:00,100%
+Another Product page with no category,1,1,0%,00:00:00,0%
+incredible title!,1,1,0%,00:06:00,0%
+Looking at Electronics & Cameras page again,1,1,0%,00:06:00,0%
+Looking at Electronics & Cameras page with a page level custom variable,1,1,0%,00:06:00,0%
+Looking at product page,1,1,0%,00:12:00,0%
Site Search Keywords
No data available
@@ -323,7 +327,7 @@ No data available
Ecommerce Orders
nb_conversions,nb_visits_converted,revenue,revenue_subtotal,revenue_tax,revenue_shipping,revenue_discount,items,avg_order_revenue,conversion_rate
-4,2,$ 13351.11,$ 2700,$ 531,$ 120.11,$ 686,12,$ 3337.78,40%
+4,2,$ 13351.11,$ 2700,$ 531,$ 120.11,$ 686,12,$ 3337.78,0%
Ecommerce Orders - Visits to Conversion
label,nb_conversions
@@ -360,7 +364,7 @@ label,nb_conversions
Abandoned Carts
nb_conversions,revenue,items,avg_order_revenue,conversion_rate
-3,$ 7530.33,12,$ 2510.11,60%
+3,$ 7530.33,12,$ 2510.11,0%
Abandoned Carts - Visits to Conversion
label,nb_conversions
@@ -397,35 +401,35 @@ label,nb_conversions
Product SKU
label,revenue,quantity,orders,nb_visits,avg_price,avg_quantity,conversion_rate
-SKU2,$ 1500,1,1,1,$ 1500,1,100%
-SKU VERY nice indeed,$ 1011.22,3,2,4,$ 255.61,1.5,50%
-ANOTHER SKU HERE,$ 600,6,1,0,$ 100,6,0%
-TRIPOD SKU,$ 200,2,1,0,$ 100,2,0%
+SKU2,$ 1500,1,1,1,$ 0,1,100%
+SKU VERY nice indeed,$ 1011.22,3,2,4,$ 0,1.5,50%
+ANOTHER SKU HERE,$ 600,6,1,0,$ 0,6,0%
+TRIPOD SKU,$ 200,2,1,0,$ 0,2,0%
SKU IN ABANDONED CART TWO,$ 0,0,0,3,$ 0,0,0%
Product Name
label,revenue,quantity,orders,avg_price,avg_quantity,conversion_rate,nb_visits
-Canon SLR,$ 1500,1,1,$ 1500,1,0%,0
-PRODUCT name,$ 1011.22,3,2,$ 255.61,1.5,100%,2
-PRODUCT name BIS,$ 600,6,1,$ 100,6,0%,0
-TRIPOD - bought day after,$ 200,2,1,$ 100,2,0%,0
+Canon SLR,$ 1500,1,1,$ 0,1,0%,0
+PRODUCT name,$ 1011.22,3,2,$ 0,1.5,100%,2
+PRODUCT name BIS,$ 600,6,1,$ 0,6,0%,0
+TRIPOD - bought day after,$ 200,2,1,$ 0,2,0%,0
PRODUCT TWO LEFT in cart,$ 0,0,0,$ 0,0,0%,3
PRODUCT THREE LEFT in cart,$ 0,0,0,$ 1332,0,0%,3
Product Category
label,revenue,quantity,orders,nb_visits,avg_price,avg_quantity,conversion_rate
-Electronics & Cameras,$ 2500,3,2,3,$ 1000,1.5,66.67%
-Multiple Category 1,$ 1000,2,1,1,$ 500,2,100%
-Multiple Category 2,$ 1000,2,1,1,$ 500,2,100%
-Multiple Category 4,$ 1000,2,1,1,$ 500,2,100%
-Multiple Category 5,$ 1000,2,1,1,$ 500,2,100%
-Product Category not defined,$ 611.22,7,2,4,$ 55.61,3.5,50%
-Tools,$ 200,2,1,0,$ 100,2,0%
+Electronics & Cameras,$ 2500,3,2,3,$ 0,1.5,66.67%
+Multiple Category 1,$ 1000,2,1,1,$ 0,2,100%
+Multiple Category 2,$ 1000,2,1,1,$ 0,2,100%
+Multiple Category 4,$ 1000,2,1,1,$ 0,2,100%
+Multiple Category 5,$ 1000,2,1,1,$ 0,2,100%
+Product Category not defined,$ 611.22,7,2,4,$ 0,3.5,50%
+Tools,$ 200,2,1,0,$ 0,2,0%
Category TWO LEFT in cart,$ 0,0,0,3,$ 0,0,0%
Goals
nb_conversions,nb_visits_converted,revenue,conversion_rate
-5,4,$ 13361.11,80%
+5,4,$ 13361.11,0%
Visits to Conversion
label,nb_conversions,revenue
@@ -462,7 +466,7 @@ label,nb_conversions,revenue
Goal title match triggered ONCE
nb_conversions,nb_visits_converted,revenue,conversion_rate
-1,1,$ 10,20%
+1,1,$ 10,0%
title match triggered ONCE - Visits to Conversion
label,nb_conversions
diff --git a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html
index 880a4be3a1..f04022a9ad 100644
--- a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html
+++ b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html
@@ -171,6 +171,11 @@
</a>
</li>
<li>
+ <a href="#Bandwidth_get" style="text-decoration:none; color: rgb(13,13,13);">
+ Bandwidth - Main metrics
+ </a>
+ </li>
+ <li>
<a href="#Actions_getPageUrls" style="text-decoration:none; color: rgb(13,13,13);">
Page URLs
</a>
@@ -471,10 +476,10 @@
1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 0
+ 1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 0
+ $ 250
</td>
</tr>
</tbody>
@@ -600,7 +605,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- ValueIsZero </td>
+ ValueIsZero - Custom Variable value not defined </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
5
</td>
@@ -623,7 +628,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- VisitorType </td>
+ VisitorType - NewLoggedOut </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
5
</td>
@@ -646,7 +651,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- VisitorName </td>
+ VisitorName - Great name! </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
4
</td>
@@ -3949,6 +3954,52 @@
<a style="text-decoration:none; color: rgb(13,13,13); font-size: 9pt;" href="#reportTop">
Back to top
</a>
+<h2 id="Bandwidth_get" style="color: rgb(13,13,13); font-size: 24pt; font-weight:normal;">
+ Bandwidth - Main metrics
+</h2>
+
+
+
+ <table style="border-collapse:collapse; margin-left: 5px;">
+ <thead style="background-color: rgb(255,255,255); color: rgb(13,13,13); font-size: 11pt; text-transform: uppercase; line-height:2.5em;">
+ <th style="font-weight: normal; font-size:10px; text-align:left; padding: 6px 0;">
+ &nbsp;Name&nbsp;&nbsp;
+ </th>
+ <th style="font-weight: normal; font-size:10px; text-align:left; padding: 6px 0;">
+ &nbsp;Value&nbsp;&nbsp;
+ </th>
+ </thead>
+ <tbody>
+
+ <tr style="background-color: rgb(242,242,242);line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ Bytes transferred overall </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0
+ </td>
+ </tr>
+
+ <tr style=";line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ Bytes transferred pageviews </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0
+ </td>
+ </tr>
+
+ <tr style="background-color: rgb(242,242,242);line-height: 22px;">
+ <td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ Bytes transferred downloads </td>
+ <td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
+ 0
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <br/>
+ <a style="text-decoration:none; color: rgb(13,13,13); font-size: 9pt;" href="#reportTop">
+ Back to top
+ </a>
<h2 id="Actions_getPageUrls" style="color: rgb(13,13,13); font-size: 24pt; font-weight:normal;">
Page URLs
</h2>
@@ -3981,7 +4032,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/index.htm'>
- /index.htm </a>
+ index.htm </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
16
@@ -4031,7 +4082,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/index.htm'>
- /index.htm </a>
+ index.htm </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
4
@@ -4074,7 +4125,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- View product left in cart </td>
+ View product left in cart </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4088,7 +4139,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- incredible title! </td>
+ incredible title! </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4102,7 +4153,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Looking at Electronics &amp; Cameras page with a page level custom variable </td>
+ Looking at Electronics &amp; Cameras page with a page level custom variable </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4145,7 +4196,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
<a style="color: rgb(13,13,13);" href='http://example.org/index.htm'>
- /index.htm </a>
+ index.htm </a>
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
4
@@ -4188,7 +4239,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- View product left in cart </td>
+ View product left in cart </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
3
</td>
@@ -4202,7 +4253,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Another Product page with multiple categories </td>
+ Another Product page with multiple categories </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4250,7 +4301,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- View product left in cart </td>
+ View product left in cart </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
9
</td>
@@ -4270,7 +4321,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Another Product page </td>
+ Another Product page </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4290,7 +4341,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Another Product page with multiple categories </td>
+ Another Product page with multiple categories </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4310,7 +4361,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Another Product page with no category </td>
+ Another Product page with no category </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4330,7 +4381,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- incredible title! </td>
+ incredible title! </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4350,7 +4401,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Looking at Electronics &amp; Cameras page again </td>
+ Looking at Electronics &amp; Cameras page again </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4370,7 +4421,7 @@
<tr style="background-color: rgb(242,242,242);line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Looking at Electronics &amp; Cameras page with a page level custom variable </td>
+ Looking at Electronics &amp; Cameras page with a page level custom variable </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4390,7 +4441,7 @@
<tr style=";line-height: 22px;">
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- Looking at product page </td>
+ Looking at product page </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
</td>
@@ -4656,7 +4707,7 @@
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
Conversion Rate </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 40%
+ 0%
</td>
</tr>
</tbody>
@@ -4978,7 +5029,7 @@
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
Conversion Rate </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 60%
+ 0%
</td>
</tr>
</tbody>
@@ -5298,7 +5349,7 @@
1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 1500
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
@@ -5324,7 +5375,7 @@
4
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 255.61
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1.5
@@ -5350,7 +5401,7 @@
0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 100
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
6
@@ -5376,7 +5427,7 @@
0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 100
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5468,7 +5519,7 @@
0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 1500
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1
@@ -5494,7 +5545,7 @@
2
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 255.61
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1.5
@@ -5520,7 +5571,7 @@
0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 100
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
6
@@ -5546,7 +5597,7 @@
0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 100
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5664,7 +5715,7 @@
3
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 1000
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
1.5
@@ -5690,7 +5741,7 @@
1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 500
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5716,7 +5767,7 @@
1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 500
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5742,7 +5793,7 @@
1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 500
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5768,7 +5819,7 @@
1
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 500
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5794,7 +5845,7 @@
4
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 55.61
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
3.5
@@ -5820,7 +5871,7 @@
0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- $ 100
+ $ 0
</td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
2
@@ -5906,7 +5957,7 @@
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
Conversion Rate </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 80%
+ 0%
</td>
</tr>
</tbody>
@@ -6307,7 +6358,7 @@
<td style="font-size: 13px; border-right: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
Conversion Rate </td>
<td style="font-size: 13px; border-left: 1px solid rgb(217,217,217); padding: 5px 0 5px 5px;">
- 20%
+ 0%
</td>
</tr>
</tbody>
diff --git a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_all_sites__ScheduledReports.generateReport_week.original.sms.txt b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_all_sites__ScheduledReports.generateReport_week.original.sms.txt
index 645d7467c3..a55d80361a 100644
--- a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_all_sites__ScheduledReports.generateReport_week.original.sms.txt
+++ b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_all_sites__ScheduledReports.generateReport_week.original.sms.txt
@@ -1 +1 @@
-week April 4 – 10, 2011. Piwik test: 5 Visits (+100%), 16 Actions (+100%), Revenue: $ 13361 (+100%), 5 Goal conversions (+100%), Product Revenue: $ 13351 (+100%), 4 Ecommerce Orders (+100%). Piwik test: 2 Visits (+100%), 1 Actions (+100%), Revenue: $ 250 (+100%), 1 Goal conversions (+100%) \ No newline at end of file
+week April 4 – 10, 2011. Piwik test: 5 Visits (+100%), 16 Actions (+100%), Revenue: $ 13361, 5 Goal conversions, Product Revenue: $ 13351, 4 Ecommerce Orders. Piwik test: 2 Visits (+100%), 1 Actions (+100%), Revenue: $ 250, 1 Goal conversions \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_one_site__ScheduledReports.generateReport_week.original.sms.txt b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_one_site__ScheduledReports.generateReport_week.original.sms.txt
index f36a23fa6e..4dd544955f 100644
--- a/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_one_site__ScheduledReports.generateReport_week.original.sms.txt
+++ b/tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_via_sms_one_site__ScheduledReports.generateReport_week.original.sms.txt
@@ -1 +1 @@
-week April 4 – 10, 2011. 5 Visits (+100%), 16 Actions (+100%), Revenue: $ 13361 (+100%), 5 Goal conversions (+100%), Product Revenue: $ 13351 (+100%), 4 Ecommerce Orders (+100%) \ No newline at end of file
+week April 4 – 10, 2011. 5 Visits (+100%), 16 Actions (+100%), Revenue: $ 13361, 5 Goal conversions, Product Revenue: $ 13351, 4 Ecommerce Orders \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_day.xml b/tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_day.xml
new file mode 100644
index 0000000000..106f23f16b
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_day.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="2009-01-04" />
+ <result date="2009-01-05" />
+ <result date="2009-01-06" />
+ <result date="2009-01-07" />
+ <result date="2009-01-08" />
+ <result date="2009-01-09" />
+ <result date="2009-01-10" />
+</results> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_week.xml b/tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_week.xml
new file mode 100644
index 0000000000..867400a47a
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_noVisit_PeriodIsLast__Bandwidth.get_week.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="2008-12-29,2009-01-04" />
+ <result date="2009-01-05,2009-01-11" />
+ <result date="2009-01-12,2009-01-18" />
+ <result date="2009-01-19,2009-01-25" />
+ <result date="2009-01-26,2009-02-01" />
+ <result date="2009-02-02,2009-02-08" />
+ <result date="2009-02-09,2009-02-15" />
+</results> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_noVisit__Bandwidth.get_day.xml b/tests/PHPUnit/System/expected/test_noVisit__Bandwidth.get_day.xml
new file mode 100644
index 0000000000..e250ef2286
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_noVisit__Bandwidth.get_day.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <nb_total_overall_bandwidth>0</nb_total_overall_bandwidth>
+ <nb_total_pageview_bandwidth>0</nb_total_pageview_bandwidth>
+ <nb_total_download_bandwidth>0</nb_total_download_bandwidth>
+</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml
index c0091c6eef..fcf6a5f0c5 100644
--- a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml
@@ -5,12 +5,17 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>1080</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1083</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -22,6 +27,10 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -30,6 +39,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -41,7 +51,12 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_expanded___Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_expanded___Actions.getPageUrls_range.xml
index 8258370871..47cd7edf75 100644
--- a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_expanded___Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_expanded___Actions.getPageUrls_range.xml
@@ -5,12 +5,17 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>722</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -22,6 +27,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -30,6 +39,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -41,7 +51,12 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -51,6 +66,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -61,6 +80,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
@@ -71,6 +94,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml
index 2b0bf155df..fed2d0a448 100644
--- a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml
@@ -5,12 +5,17 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>722</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -22,6 +27,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -30,6 +39,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -41,9 +51,14 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Actions.getPageUrls_range.xml
index 2da80f0930..e0f0927a78 100644
--- a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Actions.getPageUrls_range.xml
@@ -5,6 +5,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>725</entry_sum_visit_length>
@@ -13,6 +17,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -24,7 +29,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -34,6 +44,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Actions.getPageUrls_range.xml
index 2da80f0930..e0f0927a78 100644
--- a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Actions.getPageUrls_range.xml
@@ -5,6 +5,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>725</entry_sum_visit_length>
@@ -13,6 +17,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -24,7 +29,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -34,6 +44,10 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml
index ee5d1985fc..12d8406e85 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getDownloads_day.xml
@@ -5,11 +5,11 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>5</entry_nb_visits>
- <entry_nb_actions>5</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>5</entry_bounce_count>
- <exit_nb_visits>5</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/20/download</label>
@@ -17,13 +17,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://cloudsite5.com/20/download</url>
</row>
<row>
@@ -31,11 +28,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -44,11 +40,11 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>5</entry_nb_visits>
- <entry_nb_actions>5</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>5</entry_bounce_count>
- <exit_nb_visits>5</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/24/download</label>
@@ -56,13 +52,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://cloudsite6.com/24/download</url>
</row>
<row>
@@ -70,11 +63,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -83,11 +75,11 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>5</entry_nb_visits>
- <entry_nb_actions>5</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>5</entry_bounce_count>
- <exit_nb_visits>5</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/28/download</label>
@@ -95,13 +87,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://cloudsite7.com/28/download</url>
</row>
<row>
@@ -109,11 +98,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -122,10 +110,10 @@
<nb_visits>10</nb_visits>
<nb_hits>10</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>10</entry_nb_visits>
- <entry_nb_actions>10</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>10</entry_bounce_count>
- <exit_nb_visits>10</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml
index 1181f0a0c3..bae32d05e0 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getOutlinks_day.xml
@@ -5,11 +5,11 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>5</entry_nb_visits>
- <entry_nb_actions>5</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>5</entry_bounce_count>
- <exit_nb_visits>5</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/</label>
@@ -17,13 +17,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://othersite10.com/</url>
</row>
<row>
@@ -31,11 +28,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -44,11 +40,11 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>5</entry_nb_visits>
- <entry_nb_actions>5</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>5</entry_bounce_count>
- <exit_nb_visits>5</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/</label>
@@ -56,13 +52,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://othersite11.com/</url>
</row>
<row>
@@ -70,11 +63,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -83,11 +75,11 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>5</entry_nb_visits>
- <entry_nb_actions>5</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>5</entry_bounce_count>
- <exit_nb_visits>5</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/</label>
@@ -95,13 +87,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://othersite12.com/</url>
</row>
<row>
@@ -109,11 +98,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -122,10 +110,10 @@
<nb_visits>10</nb_visits>
<nb_hits>10</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>10</entry_nb_visits>
- <entry_nb_actions>10</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>10</entry_bounce_count>
- <exit_nb_visits>10</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageTitles_day.xml
index 75278b578c..53e7065253 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageTitles_day.xml
@@ -5,11 +5,16 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -36,6 +45,10 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -53,6 +66,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -60,6 +77,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -70,6 +88,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -77,6 +99,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -86,11 +109,16 @@
<nb_visits>19</nb_visits>
<nb_hits>19</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>19</entry_nb_visits>
<entry_nb_actions>19</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>19</entry_bounce_count>
<exit_nb_visits>19</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageUrls_day.xml
index db723f1f22..96eb4c89de 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Actions.getPageUrls_day.xml
@@ -5,11 +5,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -37,6 +46,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -53,11 +66,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -68,6 +86,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -85,6 +107,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -101,11 +127,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -116,6 +147,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -133,6 +168,10 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -149,11 +188,16 @@
<nb_visits>10</nb_visits>
<nb_hits>10</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>10</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>10</entry_bounce_count>
<exit_nb_visits>10</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml
index ace4b75be7..b7c89b2689 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getDownloads_day.xml
@@ -5,44 +5,44 @@
<nb_visits>10</nb_visits>
<nb_hits>10</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>10</entry_nb_visits>
- <entry_nb_actions>10</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>10</entry_bounce_count>
- <exit_nb_visits>10</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
- <label>cloudsite5.com/ - Others</label>
+ <label>cloudsite5.com/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
- <label>cloudsite6.com/ - Others</label>
+ <label>cloudsite6.com/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
- <label>cloudsite7.com/ - Others</label>
+ <label>cloudsite7.com/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
<label>cloudsite5.com/20/download</label>
@@ -50,13 +50,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite5.com/20/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F20%2Fdownload</segment>
</row>
@@ -66,13 +64,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite6.com/24/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F24%2Fdownload</segment>
</row>
@@ -82,13 +78,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite7.com/28/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F28%2Fdownload</segment>
</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml
index 20b7d82400..4e8c18db0c 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getOutlinks_day.xml
@@ -5,44 +5,44 @@
<nb_visits>10</nb_visits>
<nb_hits>10</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>10</entry_nb_visits>
- <entry_nb_actions>10</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>10</entry_bounce_count>
- <exit_nb_visits>10</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
- <label>othersite10.com/ - Others</label>
+ <label>othersite10.com/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
- <label>othersite11.com/ - Others</label>
+ <label>othersite11.com/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
- <label>othersite12.com/ - Others</label>
+ <label>othersite12.com/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
<row>
<label>othersite10.com/</label>
@@ -50,13 +50,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://othersite10.com/</url>
<segment>outlinkUrl==http%3A%2F%2Fothersite10.com%2F</segment>
</row>
@@ -66,13 +64,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://othersite11.com/</url>
<segment>outlinkUrl==http%3A%2F%2Fothersite11.com%2F</segment>
</row>
@@ -82,13 +78,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://othersite12.com/</url>
<segment>outlinkUrl==http%3A%2F%2Fothersite12.com%2F</segment>
</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageTitles_day.xml
index 4c3fd0da44..3e92585444 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageTitles_day.xml
@@ -5,25 +5,35 @@
<nb_visits>19</nb_visits>
<nb_hits>19</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>19</entry_nb_visits>
<entry_nb_actions>19</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>19</entry_bounce_count>
<exit_nb_visits>19</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
</row>
<row>
- <label>title_0/ - Others</label>
+ <label>title_0/-1</label>
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>3</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -34,6 +44,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -41,6 +55,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -51,6 +66,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -58,6 +77,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -68,6 +88,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -75,6 +99,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageUrls_day.xml
index bd8a2f31e8..8deb614c29 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Actions.getPageUrls_day.xml
@@ -5,53 +5,73 @@
<nb_visits>10</nb_visits>
<nb_hits>10</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>10</entry_nb_visits>
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>10</entry_bounce_count>
<exit_nb_visits>10</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
</row>
<row>
- <label>0/ - Others</label>
+ <label>0/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
</row>
<row>
- <label>1/ - Others</label>
+ <label>1/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
</row>
<row>
- <label>2/ - Others</label>
+ <label>2/-1</label>
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -62,6 +82,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -69,6 +93,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -81,6 +106,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -88,6 +117,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -100,6 +130,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -107,6 +141,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__CustomVariables.getCustomVariables_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__CustomVariables.getCustomVariables_day.xml
index a496ea54f0..0723c8e315 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__CustomVariables.getCustomVariables_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__CustomVariables.getCustomVariables_day.xml
@@ -5,7 +5,7 @@
<nb_actions>60</nb_actions>
</row>
<row>
- <label>name - Others</label>
+ <label>name - -1</label>
<nb_visits>19</nb_visits>
<nb_actions>19</nb_actions>
</row>
@@ -15,7 +15,7 @@
<nb_actions>16</nb_actions>
</row>
<row>
- <label>liked - Others</label>
+ <label>liked - -1</label>
<nb_visits>4</nb_visits>
<nb_actions>4</nb_actions>
</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__DevicesDetection.getBrowserVersions_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__DevicesDetection.getBrowserVersions_day.xml
index 18ee2e2d93..bf291de047 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__DevicesDetection.getBrowserVersions_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__DevicesDetection.getBrowserVersions_day.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
- <label>Others</label>
+ <label>Unknown</label>
<nb_uniq_visitors>9</nb_uniq_visitors>
<nb_visits>45</nb_visits>
<nb_actions>45</nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getKeywords_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getKeywords_day.xml
index 7bcbbd88ce..d2781e791c 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getKeywords_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getKeywords_day.xml
@@ -12,7 +12,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>this search term - Others</label>
+ <label>this search term - -1</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml
index d8646a11f5..2f781c0adb 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml
@@ -13,7 +13,7 @@
<segment>referrerType==direct</segment>
</row>
<row>
- <label>Search Engines - Others</label>
+ <label>Search Engines</label>
<nb_uniq_visitors>7</nb_uniq_visitors>
<nb_visits>7</nb_visits>
<nb_actions>7</nb_actions>
@@ -24,7 +24,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>Websites - whatever0.com</label>
+ <label>Websites</label>
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_visits>4</nb_visits>
<nb_actions>4</nb_actions>
@@ -35,7 +35,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>Search Engines - this search term</label>
+ <label>Search Engines</label>
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_visits>3</nb_visits>
<nb_actions>3</nb_actions>
@@ -46,7 +46,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>Search Engines - search term 2</label>
+ <label>Search Engines</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
@@ -57,7 +57,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>Websites - Others</label>
+ <label>Websites</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
@@ -68,7 +68,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>Websites - whatever1.com</label>
+ <label>Websites</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getSearchEngines_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getSearchEngines_day.xml
index 17ab7cc1e9..8d45a58e39 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getSearchEngines_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getSearchEngines_day.xml
@@ -14,7 +14,7 @@
<logo>plugins/Referrers/images/searchEngines/xx.png</logo>
</row>
<row>
- <label>Google - Others</label>
+ <label>Google - -1</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
@@ -26,7 +26,7 @@
<logo>plugins/Referrers/images/searchEngines/google.com.png</logo>
</row>
<row>
- <label>Yahoo! - Others</label>
+ <label>Yahoo! - -1</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getWebsites_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getWebsites_day.xml
index ced727b099..07e82ed210 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getWebsites_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getWebsites_day.xml
@@ -12,7 +12,7 @@
<nb_visits_converted>0</nb_visits_converted>
</row>
<row>
- <label>whatever0.com/ - Others</label>
+ <label>whatever0.com/-1</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
@@ -21,7 +21,7 @@
<sum_visit_length>0</sum_visit_length>
<bounce_count>2</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
- <url>Others</url>
+ <url>-1</url>
</row>
<row>
<label>whatever0.com/index</label>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml
index ae8e9590d0..ac888d9708 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rangeFlat_rankingQueryDisabled__Actions.getDownloads_range.xml
@@ -5,14 +5,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite5.com/20/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F20%2Fdownload</segment>
</row>
@@ -21,14 +19,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite5.com/21/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F21%2Fdownload</segment>
</row>
@@ -37,14 +33,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite5.com/22/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F22%2Fdownload</segment>
</row>
@@ -53,14 +47,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite5.com/23/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2F23%2Fdownload</segment>
</row>
@@ -69,14 +61,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite5.com/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite5.com%2Fdownload</segment>
</row>
@@ -85,14 +75,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite6.com/24/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F24%2Fdownload</segment>
</row>
@@ -101,14 +89,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite6.com/25/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F25%2Fdownload</segment>
</row>
@@ -117,14 +103,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite6.com/26/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F26%2Fdownload</segment>
</row>
@@ -133,14 +117,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite6.com/27/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2F27%2Fdownload</segment>
</row>
@@ -149,14 +131,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite6.com/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite6.com%2Fdownload</segment>
</row>
@@ -165,14 +145,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite7.com/28/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F28%2Fdownload</segment>
</row>
@@ -181,14 +159,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite7.com/29/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F29%2Fdownload</segment>
</row>
@@ -197,14 +173,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite7.com/30/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F30%2Fdownload</segment>
</row>
@@ -213,14 +187,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite7.com/31/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2F31%2Fdownload</segment>
</row>
@@ -229,14 +201,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite7.com/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite7.com%2Fdownload</segment>
</row>
@@ -245,14 +215,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite8.com/32/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F32%2Fdownload</segment>
</row>
@@ -261,14 +229,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite8.com/33/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F33%2Fdownload</segment>
</row>
@@ -277,14 +243,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite8.com/34/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F34%2Fdownload</segment>
</row>
@@ -293,14 +257,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite8.com/35/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2F35%2Fdownload</segment>
</row>
@@ -309,14 +271,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite8.com/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite8.com%2Fdownload</segment>
</row>
@@ -325,14 +285,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite9.com/36/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F36%2Fdownload</segment>
</row>
@@ -341,14 +299,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite9.com/37/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F37%2Fdownload</segment>
</row>
@@ -357,14 +313,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite9.com/38/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F38%2Fdownload</segment>
</row>
@@ -373,14 +327,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite9.com/39/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2F39%2Fdownload</segment>
</row>
@@ -389,14 +341,12 @@
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>0</avg_bandwidth>
<url>http://cloudsite9.com/download</url>
<segment>downloadUrl==http%3A%2F%2Fcloudsite9.com%2Fdownload</segment>
</row>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQueryDisabled__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQueryDisabled__Actions.getPageUrls_day.xml
index b895fdd1a4..5be244f2be 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQueryDisabled__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQueryDisabled__Actions.getPageUrls_day.xml
@@ -5,11 +5,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -38,6 +47,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -56,6 +69,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -74,6 +91,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -92,6 +113,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -111,11 +136,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -126,6 +156,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -144,6 +178,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -162,6 +200,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -180,6 +222,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -198,6 +244,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -217,11 +267,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -232,6 +287,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -250,6 +309,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -268,6 +331,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -286,6 +353,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -304,6 +375,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -323,11 +398,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -338,6 +418,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -356,6 +440,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -374,6 +462,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -392,6 +484,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -410,6 +506,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -429,11 +529,16 @@
<nb_visits>5</nb_visits>
<nb_hits>5</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>5</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>5</entry_bounce_count>
<exit_nb_visits>5</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -444,6 +549,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -462,6 +571,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -480,6 +593,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -498,6 +615,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -516,6 +637,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml
index 486f5a4a80..8bb225adcd 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getDownloads_day.xml
@@ -5,11 +5,11 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/20/download</label>
@@ -17,13 +17,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://cloudsite5.com/20/download</url>
</row>
<row>
@@ -31,11 +28,10 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>3</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>3</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -44,10 +40,10 @@
<nb_visits>21</nb_visits>
<nb_hits>21</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>21</entry_nb_visits>
- <entry_nb_actions>21</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>21</entry_bounce_count>
- <exit_nb_visits>21</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml
index d7f085aa42..5600b1c958 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getOutlinks_day.xml
@@ -5,11 +5,11 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>4</entry_nb_visits>
- <entry_nb_actions>4</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>4</entry_bounce_count>
- <exit_nb_visits>4</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<subtable>
<row>
<label>/</label>
@@ -17,13 +17,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
- <exit_nb_visits>1</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<url>http://othersite10.com/</url>
</row>
<row>
@@ -31,11 +28,10 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>3</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>3</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
</row>
</subtable>
</row>
@@ -44,10 +40,10 @@
<nb_visits>21</nb_visits>
<nb_hits>21</nb_hits>
<sum_time_spent>0</sum_time_spent>
- <entry_nb_visits>21</entry_nb_visits>
- <entry_nb_actions>21</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>21</entry_bounce_count>
- <exit_nb_visits>21</exit_nb_visits>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
</row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageTitles_day.xml
index a6451384fc..8f6f8b7cda 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageTitles_day.xml
@@ -5,11 +5,16 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>3</entry_bounce_count>
<exit_nb_visits>3</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -36,6 +45,10 @@
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -53,6 +66,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -60,6 +77,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -69,11 +87,16 @@
<nb_visits>21</nb_visits>
<nb_hits>21</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>21</entry_nb_visits>
<entry_nb_actions>21</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>21</entry_bounce_count>
<exit_nb_visits>21</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageUrls_day.xml
index d50996584c..fa2f5fb337 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Actions.getPageUrls_day.xml
@@ -5,11 +5,16 @@
<nb_visits>4</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>4</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>4</entry_bounce_count>
<exit_nb_visits>4</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -20,6 +25,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>1</entry_nb_actions>
@@ -37,6 +46,10 @@
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
@@ -53,11 +66,16 @@
<nb_visits>21</nb_visits>
<nb_hits>21</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_visits>21</entry_nb_visits>
<entry_nb_actions>21</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>21</entry_bounce_count>
<exit_nb_visits>21</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContainsStrangeCharacters__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContainsStrangeCharacters__Actions.getPageTitles_day.xml
index 14874d56d6..90cf49acc6 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContainsStrangeCharacters__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContainsStrangeCharacters__Actions.getPageTitles_day.xml
@@ -6,8 +6,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageTitles_day.xml
index 7cfe228274..b98be78f7e 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageTitles_day.xml
@@ -6,6 +6,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -16,8 +21,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageUrls_day.xml
index c64e18155a..b14f0ca9cb 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleContains__Actions.getPageUrls_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -16,6 +21,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleEndsWith__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleEndsWith__Actions.getPageTitles_day.xml
index 38eb716dff..56d3a8a11d 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleEndsWith__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleEndsWith__Actions.getPageTitles_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>360</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>180</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
@@ -23,6 +28,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageTitles_day.xml
index f4d18a6307..b1295d4d39 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageTitles_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageUrls_day.xml
index 754d1c45fa..c166b55d0c 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleExcludes__Actions.getPageUrls_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>2</entry_nb_uniq_visitors>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleStartsWith__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleStartsWith__Actions.getPageTitles_day.xml
index 7cfe228274..b98be78f7e 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleStartsWith__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageTitleStartsWith__Actions.getPageTitles_day.xml
@@ -6,6 +6,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -16,8 +21,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageTitles_day.xml
index 7cfe228274..b98be78f7e 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageTitles_day.xml
@@ -6,6 +6,11 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
@@ -16,8 +21,13 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageUrls_day.xml
index c64e18155a..b14f0ca9cb 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlContains__Actions.getPageUrls_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -16,6 +21,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlEndsWith__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlEndsWith__Actions.getPageUrls_day.xml
index c64e18155a..b14f0ca9cb 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlEndsWith__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlEndsWith__Actions.getPageUrls_day.xml
@@ -5,7 +5,12 @@
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
@@ -16,6 +21,10 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageTitles_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageTitles_day.xml
index f4d18a6307..b1295d4d39 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageTitles_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageTitles_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>0</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>50%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageUrls_day.xml
index 754d1c45fa..c166b55d0c 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlExcludes__Actions.getPageUrls_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>2</entry_nb_uniq_visitors>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
diff --git a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlStartsWith__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlStartsWith__Actions.getPageUrls_day.xml
index 754d1c45fa..c166b55d0c 100644
--- a/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlStartsWith__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_SegmentPageUrlStartsWith__Actions.getPageUrls_day.xml
@@ -6,6 +6,10 @@
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
<entry_nb_uniq_visitors>2</entry_nb_uniq_visitors>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
@@ -13,6 +17,7 @@
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
+ <avg_bandwidth>0</avg_bandwidth>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>50%</bounce_rate>
<exit_rate>50%</exit_rate>
diff --git a/tests/PHPUnit/Unit/DbHelperTest.php b/tests/PHPUnit/Unit/DbHelperTest.php
new file mode 100644
index 0000000000..fa6957d4ba
--- /dev/null
+++ b/tests/PHPUnit/Unit/DbHelperTest.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Tests\Unit;
+
+use Piwik\DbHelper;
+
+/**
+ * Class DbHelperTest
+ * @package Piwik\Tests\Unit
+ * @group Core
+ * @group Core_Unit
+ */
+class DbHelperTest extends \PHPUnit_Framework_TestCase
+{
+
+ /**
+ * @dataProvider getVariousDbNames
+ * @param string $dbName
+ * @param bool $expectation
+ */
+ public function testCorrectNames($dbName, $expectation)
+ {
+ $this->assertSame(DbHelper::isValidDbname($dbName), $expectation);
+ }
+
+ public function getVariousDbNames()
+ {
+ return array(
+ 'simpleDbName' => array(
+ 'dbName' => 'FirstPiwikDb',
+ 'expectation' => true
+ ),
+ 'containsNumbers' => array(
+ 'dbName' => 'FirstPiw1kDb',
+ 'expectation' => true
+ ),
+ 'startsWithNumber' => array(
+ 'dbName' => '1stPiwikDb',
+ 'expectation' => true
+ ),
+ 'containsAllowedSpecialCharacters' => array(
+ 'dbName' => 'MyPiwikDb-with.More+compleX_N4M3',
+ 'expectation' => true
+ ),
+ 'containsSpace' => array(
+ 'dbName' => '1st PiwikDb',
+ 'expectation' => false
+ ),
+ 'startWithNonAlphaNumericSign' => array(
+ 'dbName' => ';FirstPiwikDb',
+ 'expectation' => false
+ ),
+ );
+ }
+}
diff --git a/tests/PHPUnit/Unit/DeprecatedMethodsTest.php b/tests/PHPUnit/Unit/DeprecatedMethodsTest.php
index 1cb3f36cc1..bea7551e1e 100644
--- a/tests/PHPUnit/Unit/DeprecatedMethodsTest.php
+++ b/tests/PHPUnit/Unit/DeprecatedMethodsTest.php
@@ -69,7 +69,6 @@ class DeprecatedMethodsTest extends \PHPUnit_Framework_TestCase
$this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Menu\MenuAbstract', 'add');
$this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Archive', 'getDataTableFromArchive');
- $this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Plugin', 'getListHooksRegistered');
$this->assertDeprecatedMethodIsRemovedInPiwik3('\Piwik\Plugins\API\API', 'getLastDate');
$this->assertDeprecatedMethodIsRemovedInPiwik3('Piwik\Plugins\DevicesDetection\DevicesDetection', 'renameUserSettingsModuleAndAction');
@@ -77,6 +76,7 @@ class DeprecatedMethodsTest extends \PHPUnit_Framework_TestCase
$this->assertDeprecatedMethodIsRemovedInPiwik3('Piwik\Plugins\DevicePlugins\DevicePlugins', 'renameUserSettingsModuleAndAction');
$this->assertDeprecatedMethodIsRemovedInPiwik3('Piwik\Plugins\UserLanguage\UserLanguage', 'renameUserSettingsModuleAndAction');
+ $this->assertDeprecatedMethodIsRemovedInPiwik4('\Piwik\Plugin', 'getListHooksRegistered');
$this->assertDeprecatedMethodIsRemovedInPiwik4('Piwik\Updates', 'getSql');
$this->assertDeprecatedMethodIsRemovedInPiwik4('Piwik\Updates', 'update');
$this->assertDeprecatedMethodIsRemovedInPiwik4('Piwik\Updates', 'getMigrationQueries');
diff --git a/tests/UI/expected-screenshots/ActionsDataTable_flattened.png b/tests/UI/expected-screenshots/ActionsDataTable_flattened.png
index 601142950c..2c16df12ae 100644
--- a/tests/UI/expected-screenshots/ActionsDataTable_flattened.png
+++ b/tests/UI/expected-screenshots/ActionsDataTable_flattened.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f29bfae879c2b6a238a88da99f28eb75e142f625a065ed76aee7ccf316cb811b
-size 469119
+oid sha256:397ae6e03644b305a4d599a8ca9abaf37e52723fadf5efaadd9825a6cde1561c
+size 487330
diff --git a/tests/UI/expected-screenshots/CoreUpdaterCode_newVersion.png b/tests/UI/expected-screenshots/CoreUpdaterCode_newVersion.png
index c052514ef3..b0b110eee9 100644
--- a/tests/UI/expected-screenshots/CoreUpdaterCode_newVersion.png
+++ b/tests/UI/expected-screenshots/CoreUpdaterCode_newVersion.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:991da58219c2022c905b166a4391998e276a2c2da2f8afd66fced8e209d17352
-size 101749
+oid sha256:d94a49eeccd387323a6e4c2d275099d56893275145c006e844b4298cf42751ad
+size 105759
diff --git a/tests/UI/expected-screenshots/CoreUpdaterDb_main.png b/tests/UI/expected-screenshots/CoreUpdaterDb_main.png
index 072b687685..82fe26d151 100644
--- a/tests/UI/expected-screenshots/CoreUpdaterDb_main.png
+++ b/tests/UI/expected-screenshots/CoreUpdaterDb_main.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e0fb2618e3e201aeb62fdc656f6ae4a9b215f9b0e92ba8baddc70ca66e9b20de
-size 274876
+oid sha256:477f2a7d70960505f3143e486162af3e2bcb4c4a70e0f40bc80279546c118508
+size 278843
diff --git a/tests/UI/expected-screenshots/CoreUpdaterDb_updated.png b/tests/UI/expected-screenshots/CoreUpdaterDb_updated.png
index e66f1fa842..14563d3887 100644
--- a/tests/UI/expected-screenshots/CoreUpdaterDb_updated.png
+++ b/tests/UI/expected-screenshots/CoreUpdaterDb_updated.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0eb2b324e783cf22eace0191c7073accd8462723c41a86cd911d7a582f70c5c6
-size 70571
+oid sha256:f6b54dcae7049ed937d01a19238fc62d33adf863f945b27c768c0c4f82548c16
+size 74391
diff --git a/tests/UI/expected-screenshots/DashboardManager_create_new.png b/tests/UI/expected-screenshots/DashboardManager_create_new.png
index 690b9547c6..c7c1560969 100644
--- a/tests/UI/expected-screenshots/DashboardManager_create_new.png
+++ b/tests/UI/expected-screenshots/DashboardManager_create_new.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b3c4067cfa1733ef2d050d15178908ad555668006b72e2c59309513d90622df1
-size 243505
+oid sha256:c5a8b8e871c99c9798070aaba1e4b2ea24d0891729359b91acb24f7ff1728842
+size 236924
diff --git a/tests/UI/expected-screenshots/DashboardManager_expanded.png b/tests/UI/expected-screenshots/DashboardManager_expanded.png
index cf63988ca4..03c98e51cf 100644
--- a/tests/UI/expected-screenshots/DashboardManager_expanded.png
+++ b/tests/UI/expected-screenshots/DashboardManager_expanded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:94ab82e309d168027b35fed07b6d294d19f61a5cc6a7e15da2747c8a47a41ec7
+oid sha256:6c1030ac68bbe0fb9baf84a4be91c92b37c52541e13edd3c67515f9e865dc45c
size 44477
diff --git a/tests/UI/expected-screenshots/DashboardManager_removed.png b/tests/UI/expected-screenshots/DashboardManager_removed.png
index a81ebb0843..ad2795e43b 100644
--- a/tests/UI/expected-screenshots/DashboardManager_removed.png
+++ b/tests/UI/expected-screenshots/DashboardManager_removed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9da81ba47ddf0bb23ce76646949deb31747e4316ea52e96f53bcb9f1262f1d3f
-size 363418
+oid sha256:b3160dd52b4ab99a66f32a90e2efce3207fb44fda0daa665e6fbffd50770dce7
+size 365021
diff --git a/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png b/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png
index 208c5545f9..2211071116 100644
--- a/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png
+++ b/tests/UI/expected-screenshots/DashboardManager_widget_list_shown.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c2002a14c40355462fb24a20f770eab28f1f5f4d3ec6917f9a47b54d1dd1b61a
-size 54387
+oid sha256:ce88bb1a6ad4eec0abd85f53526fe464e5a423ff8f28ad63ea9f7aac679d9471
+size 54385
diff --git a/tests/UI/expected-screenshots/DashboardManager_widget_preview.png b/tests/UI/expected-screenshots/DashboardManager_widget_preview.png
index 5494fb208c..03f18720d0 100644
--- a/tests/UI/expected-screenshots/DashboardManager_widget_preview.png
+++ b/tests/UI/expected-screenshots/DashboardManager_widget_preview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e6f88f00f657d056c2cf021b560b65104e920220ac481e754fb78eae00eb3deb
-size 65821
+oid sha256:d84f304a6f52151dd3dc34e72dd938e0a2078632041af219a935c431191fff69
+size 65779
diff --git a/tests/UI/expected-screenshots/Dashboard_create_new.png b/tests/UI/expected-screenshots/Dashboard_create_new.png
index 4f49d421be..923f861b76 100644
--- a/tests/UI/expected-screenshots/Dashboard_create_new.png
+++ b/tests/UI/expected-screenshots/Dashboard_create_new.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0eaa9421efce124648bcc290f29cb8461c549cfdde7eb799f1b679e5ae347eb8
-size 175009
+oid sha256:0870d40ea3b74614d3c1014dde5cea5cf5e7da6209fe0ce831f6c09f592e98ec
+size 125012
diff --git a/tests/UI/expected-screenshots/Dashboard_removed.png b/tests/UI/expected-screenshots/Dashboard_removed.png
index 910132f829..03c885c43c 100644
--- a/tests/UI/expected-screenshots/Dashboard_removed.png
+++ b/tests/UI/expected-screenshots/Dashboard_removed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4a7c021f55715a814f5dcabce2e536d3c89d118d0a6e924ec3659bc3160c113b
-size 525620
+oid sha256:91b066a2279d4d4fbfb7a4e1b3feabcf0d7778da8b3ea695e2b94a388803385d
+size 533176
diff --git a/tests/UI/expected-screenshots/Dashboard_reset.png b/tests/UI/expected-screenshots/Dashboard_reset.png
index 40f4f6af58..3bf8e42f52 100644
--- a/tests/UI/expected-screenshots/Dashboard_reset.png
+++ b/tests/UI/expected-screenshots/Dashboard_reset.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:57de6cdea1a833f884d1fb819be65143fbac905db7ca862e39f77ea0e2b104fa
-size 237532
+oid sha256:4f5bef3ad69ef3d2326a9832420e43ad0f2a4fc973cc98b67507ed3c96dc3637
+size 244566
diff --git a/tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png
new file mode 100644
index 0000000000..2b865112d3
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5abd8822925543da92bfe8952a7c72a1c3a33d35c5ee21373f24a83231846880
+size 65886
diff --git a/tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png
new file mode 100644
index 0000000000..96215d6885
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d831b82a0569fae95cb3445282f95be26586c6a78361a060cc7a509253f75088
+size 47793
diff --git a/tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png
new file mode 100644
index 0000000000..bdb8a34697
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_free_plugin_details_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92e1339288dbbeecbb6e404c3f6a07f40248ae814958220f7448ee25f06c4975
+size 45867
diff --git a/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png
new file mode 100644
index 0000000000..00a8ac2874
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_exceededLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3592aa6614d0d93e28573fa06e3e5b45d49f5405a03ce52f32e60c9cdad9162
+size 26736
diff --git a/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png
new file mode 100644
index 0000000000..61b9a684ee
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_expiredLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8884e2d728e9b59dda5b2a186fe355fa1e316ea000c0c1cb172c000cc747ca10
+size 25172
diff --git a/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png
new file mode 100644
index 0000000000..fc0a2a43f5
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_notification_plugincheck_noLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9cbd3fb3d800ec594bbcae770b5bd87a47793e6ddd08a513847fa6de3069e3f
+size 22054
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..870eb3a98b
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:091cebccaa5c599d78504a10a83537beafbfd6f100add6116b7c9f388ce772f2
+size 78678
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png
new file mode 100644
index 0000000000..ac5b71c9cf
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4aa8c4d21824b42f38f86ea9ed45293ba8cd703f857a2f66960c859b80dd37b
+size 59189
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png
new file mode 100644
index 0000000000..ef638514d6
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:87c51ce152fd1674f1775a3ea079bc2e7604a4515c13d712af954bd7e1689559
+size 42977
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..769990ad67
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65121175a97eaafbaeaadcd11c2e81a0795cf202bee85947da8612453af13501
+size 76262
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png
new file mode 100644
index 0000000000..40e09d34e0
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53eddafe234c4d1f844aaed9b1593f75a08d8670f0de87ff3a52a41e40ebe7d6
+size 57088
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png
new file mode 100644
index 0000000000..ffdb015738
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef479063eacbffac314a1665d52e90bc22676b9c7eb1f16c942af84f93c30e04
+size 42812
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..f7b97bca7e
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f7ad3b0cc4aa9958ecd749537042ce83976a78ee380a4dcbe1645e2ef7ded7d
+size 60698
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png
new file mode 100644
index 0000000000..eaedf044fa
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_multiUserEnvironment_installed.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d9c2a16a149c69f5a39b9fbc4ec92a09631a713c711d93fed867a38b3fcda93
+size 60513
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png
new file mode 100644
index 0000000000..1ebe59347e
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6073abcfe24ee30ae2bc07ac124e51799bbf7233d0533f7624aeb5fa53a4367d
+size 41591
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png
new file mode 100644
index 0000000000..0701015fc3
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_superuser_installed.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12d5e077f5a534e6addb59256749354f5568a875302bbc17ef01c713b851ba7f
+size 40927
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png
new file mode 100644
index 0000000000..30351a385b
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e802d83a1252c3d8208371563293f9019b9b3c80418f3e71f1b3d6449f900b72
+size 40504
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png
new file mode 100644
index 0000000000..b30e7fbffe
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_valid_license_user_installed.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1efcc7ef4fb4b9c6b1e4fc072018b68db4405240b2443f2e5578faaf53e1091b
+size 40036
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..a310068f1e
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1015369551fefd1d1d6c02ffc6cc2c283dc9fab2934b4740c2e5b2ea70a58d07
+size 58749
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png
new file mode 100644
index 0000000000..a310068f1e
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1015369551fefd1d1d6c02ffc6cc2c283dc9fab2934b4740c2e5b2ea70a58d07
+size 58749
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png
new file mode 100644
index 0000000000..54668033ea
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_no_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b17183f64cb12053ffd03cb0af06c3a04b4869ac5121fce0022a8c2aba6b5e8b
+size 58902
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..90d6808f55
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2bdbbd347a480de157a356989b4120996c63e3ff52fd880feca50a320b9ea7cc
+size 68042
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png
new file mode 100644
index 0000000000..90d6808f55
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2bdbbd347a480de157a356989b4120996c63e3ff52fd880feca50a320b9ea7cc
+size 68042
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png
new file mode 100644
index 0000000000..5453092aa8
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_exceeded_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c327de86da1d791e6ee45696623806de7008451d0aaa7d4adb73dfa254c9e0c0
+size 47804
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..72fa3aab47
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de5a65a95c03e83831231ba5bd5d2a891f8502220dd83312c02c7f618b733361
+size 69415
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png
new file mode 100644
index 0000000000..e1eaf7ec8d
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79ad5b16c1b840f853199d5a6580f7096bfceb11c03169a21c0950565a2c93fd
+size 70296
diff --git a/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png
new file mode 100644
index 0000000000..6b71115837
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_paid_plugins_with_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d0e0e5631cf9647253c48beec28282d47c3a4af271ec49696ce82bae072822c
+size 50165
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png
new file mode 100644
index 0000000000..1cdeaed41f
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_subscription_overview_exceededLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdca8506b9fe7ddd1fc5dffaf651f4b2a08fd73d2b82981d9421525cdf60fb3b
+size 74190
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png
new file mode 100644
index 0000000000..6b93808648
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_subscription_overview_expiredLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f597ca665ae22b315ff592ea86c2da57b483586941a085dd6e96db8383769444
+size 80834
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png
new file mode 100644
index 0000000000..500196cfb4
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_subscription_overview_noLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6df609ba58f749ddd01e10b92df0fc73410907f3b2ce4473dc16493d35f43552
+size 17178
diff --git a/tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png b/tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png
new file mode 100644
index 0000000000..db86de03cc
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_subscription_overview_validLicense.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea6e9267c01a185178e4e99f3ee4da94e69e56376d7372e618fb144238f63763
+size 52494
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png
new file mode 100644
index 0000000000..58059f4c08
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64fbd67b8e227f67acdf3dbdfc6d37b908074a540f883831860a15472c31bd1a
+size 988403
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png
new file mode 100644
index 0000000000..e30e111be0
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_enable_plugins_admin_with_multiserver_enabled.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:63b211556185f1718d70a24af5763487d2664fc042109373fc2b1a7c60baf7b8
+size 1015385
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png b/tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png
new file mode 100644
index 0000000000..62e8cf7bea
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_install_all_paid_plugins_at_once.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2d0a30b1a7d67673fece45bc664f46c188ca27b1c1b6bd92cf1a0e5b377d6ec
+size 19257
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png b/tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png
new file mode 100644
index 0000000000..aa05485f5a
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_invalid_license_key_entered.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64546e78e73632b7e08a312c47eb655427258807747a1f79b9f3ad73a9a98df8
+size 1005309
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png
new file mode 100644
index 0000000000..31446ff085
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmation.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aaebbf81af29fb9d7445df16938460504202430053dc6b243257c9b4dfe64811
+size 17625
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png
new file mode 100644
index 0000000000..a9d6c8a0bd
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_remove_license_key_confirmed.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:686bbadf6bffcb2d97e37d63da464bd097176b2fae15dacfd58825b2b53c2c19
+size 999666
diff --git a/tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png b/tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png
new file mode 100644
index 0000000000..d4626f8cc6
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_superuser_valid_license_key_entered.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8849ea263fbc65744636263a3139e5fe9c47c2d3109b9a4c1a0d46e6bd1d91fa
+size 1009986
diff --git a/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png
new file mode 100644
index 0000000000..74b8aa9e5c
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6044dafcf676224f14994abac215db06862354a60d0ad8fc20778fa8247f26bb
+size 186406
diff --git a/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png
new file mode 100644
index 0000000000..bd6b4293fd
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:884501a947c6780adc56dca08c17f7369844835c8fc28106e52ef37183e9ba3d
+size 186005
diff --git a/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png
new file mode 100644
index 0000000000..c88a30b7c4
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_themes_with_valid_license_user.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20cd616e23f508c1fa678c6a7de1b29d3b552b475db8e97f79f32b29c85791c1
+size 163098
diff --git a/tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png b/tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png
new file mode 100644
index 0000000000..10daf00c64
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_updates_multiUserEnvironment.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d34f5ac92c5efff376a6008f6359c323aec2931cb2a61157a1a820f750dd49d0
+size 33517
diff --git a/tests/UI/expected-screenshots/Marketplace_updates_superuser.png b/tests/UI/expected-screenshots/Marketplace_updates_superuser.png
new file mode 100644
index 0000000000..e37583dfb5
--- /dev/null
+++ b/tests/UI/expected-screenshots/Marketplace_updates_superuser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d9b0afeb3d48d6ba34ce8e6f56405161e3ad134d19a64da3367b92452d7cc40
+size 32907
diff --git a/tests/UI/expected-screenshots/Overlay_loaded.png b/tests/UI/expected-screenshots/Overlay_loaded.png
index 09fa2569cc..f4db30282f 100644
--- a/tests/UI/expected-screenshots/Overlay_loaded.png
+++ b/tests/UI/expected-screenshots/Overlay_loaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b364876996e2bed3f70a1db175ecbd8c2d7b9301ac467db43945d8826f653164
-size 87236
+oid sha256:17a4c698ad76447989cba6f79f4467bd10f91ade67571909cb552fc802eb4359
+size 90444
diff --git a/tests/UI/expected-screenshots/Overlay_loaded_with_segment.png b/tests/UI/expected-screenshots/Overlay_loaded_with_segment.png
index f19b03bbdc..03f54336fc 100644
--- a/tests/UI/expected-screenshots/Overlay_loaded_with_segment.png
+++ b/tests/UI/expected-screenshots/Overlay_loaded_with_segment.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d1ebc40aa195dc80c7ddedba3fb4dbf9eacec542ea979efe7181ba07f02e72a8
-size 87118
+oid sha256:2a3a1baf8b525a006b266974852fffbd74fd6f70f156e19a1472b489e085913b
+size 89026
diff --git a/tests/UI/expected-screenshots/Overlay_page_change.png b/tests/UI/expected-screenshots/Overlay_page_change.png
index 405595fb28..e69bf4b7ba 100644
--- a/tests/UI/expected-screenshots/Overlay_page_change.png
+++ b/tests/UI/expected-screenshots/Overlay_page_change.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:429be8b114d4d2d0ae1ec47122b00cecf14138107719e2bf2b08c2b2f515448c
-size 197058
+oid sha256:0aacca889a473900d5e79717a7c584462918761fd505630d374efe93f94900fb
+size 199077
diff --git a/tests/UI/expected-screenshots/Overlay_page_link_clicks.png b/tests/UI/expected-screenshots/Overlay_page_link_clicks.png
index df4bc3d6c1..b5f571d737 100644
--- a/tests/UI/expected-screenshots/Overlay_page_link_clicks.png
+++ b/tests/UI/expected-screenshots/Overlay_page_link_clicks.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2fb965916f9db70dcb735a3303ee6fead36a8911786673f4b74801216fc7b3fe
-size 94129
+oid sha256:63753eefe1437f94c4578f444fb4cbb0062c337fc47605889ed9ede2be521d5a
+size 97259
diff --git a/tests/UI/expected-screenshots/Overlay_page_new_links.png b/tests/UI/expected-screenshots/Overlay_page_new_links.png
index deff922447..3cd92a27b2 100644
--- a/tests/UI/expected-screenshots/Overlay_page_new_links.png
+++ b/tests/UI/expected-screenshots/Overlay_page_new_links.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7cbcb0add661918840b3efdd35fb4cc45e7bd0d23a6283638c11c22f0dac0f57
-size 101375
+oid sha256:b1817a1d595d787ae8502be18eb99e1cdf85c5b2ed95eb4eeaf2b3b9446c5019
+size 95316
diff --git a/tests/UI/expected-screenshots/Overlay_period_change.png b/tests/UI/expected-screenshots/Overlay_period_change.png
index a9f16919ab..3d4461f835 100644
--- a/tests/UI/expected-screenshots/Overlay_period_change.png
+++ b/tests/UI/expected-screenshots/Overlay_period_change.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:475a6dced9b5d29e7331b848f4975e83af916c361bc20c372057030bcd8e9976
-size 199232
+oid sha256:0bdc09ac43acaa7d97f10072e4751e02ad579f79dae51a9d86835d4c15e1c91d
+size 201359
diff --git a/tests/UI/expected-screenshots/Overlay_transitions.png b/tests/UI/expected-screenshots/Overlay_transitions.png
index 3f949aabf2..b905aa18b2 100644
--- a/tests/UI/expected-screenshots/Overlay_transitions.png
+++ b/tests/UI/expected-screenshots/Overlay_transitions.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:459eee2887bb75841dabed12fc90c02613a45e38d5ad356bd3542b515e4147d8
-size 119857
+oid sha256:3841fe4b0ff02129ccf16d1b5a6c5bd7486ba4f36ce5e0b59cbd290a2b3ee264
+size 120161
diff --git a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png
index 39ec92b65a..466bf58cd5 100644
--- a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png
+++ b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1cd31cd64a4bb03d1d6a08c599b73bc3ae68016b337b4af0a6285ad69b859a8e
-size 38448
+oid sha256:a863803d25a5a883293faeaed5b13bd27e838a13bd0539f182c266ad7cc16c61
+size 38469
diff --git a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png
index 54c9d3d287..c7b010fd40 100644
--- a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png
+++ b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:135c9572d5afdc3809d72d8c765a763abe17fc55962dfa0909edeb732d48f0d2
-size 46811
+oid sha256:41d5c6ee8682ef3897e2755eefec4dda16eb776df2abcfb0b8ab7b8cf5cd4fb6
+size 46932
diff --git a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png
index 87e8cdbd2e..60a7754879 100644
--- a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png
+++ b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a48aba83b0fd32acb82eb2cf1220383bb629ff236174697be008a8ba4ebc0d2b
-size 72895
+oid sha256:2e9dd815db59ec90daec51a9d00ed99178e81d3d7092717a6ec657a9a42bd2d9
+size 72354
diff --git a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png
index f2574beed7..e14e078cb3 100644
--- a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png
+++ b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b4f25c312c2d45099a33f5f128689ecf759a3430756a1c37469c92aa09b038b2
-size 55668
+oid sha256:27309c2f25449fe677cd9b08ac5da3c63d24e8e2dc9f534d12bcf49df60e5843
+size 55681
diff --git a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png
index 54f5d5943f..feae962dd4 100644
--- a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png
+++ b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:12039981bd6f5bad4849da5933ff1f5286408aaa0fb0619196e4045435862c1d
-size 59104
+oid sha256:be01ac50440e82eae133586a3a8e24cd5f4bede3e10b98059bf9936ee5abfece
+size 59110
diff --git a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png
index a840efe0cf..b3729ee931 100644
--- a/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png
+++ b/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3a3ede2cf4dda56c59e9219cbd889357830bf00add721b816a4cb295b341012a
-size 61520
+oid sha256:4649440c0d3b0d832b7e8134816ace5df728f162b49abfc41470146d5af3800e
+size 61406
diff --git a/tests/UI/expected-screenshots/Theme_home.png b/tests/UI/expected-screenshots/Theme_home.png
index 85e43639f3..112f146af6 100644
--- a/tests/UI/expected-screenshots/Theme_home.png
+++ b/tests/UI/expected-screenshots/Theme_home.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:177e161a842bc0d41319a23aed5dd9e64215a2ba71bd5bb7424ce6ed18a9ce94
-size 531773
+oid sha256:ce396a5030d192435353eceb9cd114cf69e0c8fa2044fb1734a2a573aa0f64d5
+size 534414
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
index 16552d640c..32613e4b7a 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0988a819ca3a12aaa033de7b7ef8dde7bb4bca09ab5d443f3690af5210e93f3c
-size 3472182
+oid sha256:edc1f109df4b03552ed727fc73a4057402cc2d6584d5d0729e41c057dd8d56fc
+size 3470832
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png
index 0ed3ec797f..1200b302e6 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_home.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2be008d9b82d4f52bdc71e7806a259caabb03ea0e802287609291456e7524e00
-size 113489
+oid sha256:d39952dd0c53c54d8a1e53060a1781fd252b70d979d86ae94d635070e50bcead
+size 116883
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png
index d4f4e56103..c66bface3c 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_plugins.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:63e3ed59831496b0679f6c08f08c75c598d6a6991823a183473817da7e976b0b
-size 933080
+oid sha256:9d574efe280f8b0c7860236b909c73d79f4d965736c634135aee7f5adc73efc5
+size 946958
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
index dad4ec975c..59120fe451 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:84e59ce08370286d50e24f3446509365786a254846a91affa418566f48d005a9
-size 74942
+oid sha256:f8713d9dca666ac6f2532cc3dee5a4b30bd5e8f3a6fa3181d6b9005c87e2c9b2
+size 80901
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png b/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
index 8b786e87b3..d9bc1d6e44 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2864df20d6946a3755878c20f2294f4e6a6c733052e75e92f0ca60b2b1e811ed
-size 4109166
+oid sha256:a8f1be8a084b914d220157174a1255ad4dde260a7fd716d041518baf15054f15
+size 4164724
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
index 441c248a54..c5c1fcc6a8 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bff4c8deda69e3c4bb2139050200e9b61909f1b69d0ba54b12c67e088f0ba001
-size 479553
+oid sha256:6d874fd775d6d8be1c9e0b13187482607f6e51ba1490c267690ffa7567fc20a3
+size 482842
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
index f0495e85bc..6a6af904d6 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a140a97e21b4c77617eed57fb924605adabf6ca750563ee478bcdcf50a872eb7
-size 1457388
+oid sha256:33eb54cef59315a69aae32573c55261044e5352b0616f3477ac61d14343c2a1d
+size 1445972
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
index c31803e482..1766795855 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:add381b4f3751dd6d07fab5268258308f3c708398e89897289c66d5b0bd4b5cd
-size 484850
+oid sha256:21157328dec382eb814c31a030acec960bdc1b9536aadba371ae220dc8cf8ef4
+size 488546
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png
index 4a3f064b4f..2dff1ea755 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dc5003010fb781b9439376cbaf9f895a340013459688fcfd28dcc04bef56c565
-size 142388
+oid sha256:15e85dd5be18d1eb9d06aca262413267e9f691240c6f8b2c0c87ae1c29bc74c8
+size 145992
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png b/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png
index ebefa22575..d0f89b2909 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:69feb27829f904f27c35a0d7875ea3e771f2028cba89129017eedc98d10e072e
-size 391115
+oid sha256:0ab1323542be77983054b5451eb30386b09d886c11f33ea97c8539f0af4f3304
+size 393496
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_fatal_error_safemode.png b/tests/UI/expected-screenshots/UIIntegrationTest_fatal_error_safemode.png
index 5d3cbfaf81..f015ac9c2d 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_fatal_error_safemode.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_fatal_error_safemode.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e7c32e2f8f7351ced00635556fbe7089e2c745d781901e7d2ca996949bb9ca5a
-size 166020
+oid sha256:0bbdb204e2710005e18b099ebaf78bc716ee1c80959dd8c3f57092669fd7f2c0
+size 169132
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal.png b/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal.png
index 7fad47a8ea..9b5c5cfdd9 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eed3df325fc83a28429d107ac142b8c73bcb4843cc0394fdd2176c21d1e11e04
-size 184083
+oid sha256:b207a93da45b798d1372667b606a72e07d2d2aaba3878fee430f29aa20558622
+size 183960
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal_updated.png b/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal_updated.png
index 2e99b46993..a0a684d315 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal_updated.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_goals_individual_goal_updated.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e2e196b512dd5ee8b8ccae4d956198a5b76c6ac383fd231944319e36e74844a2
-size 184731
+oid sha256:d2ffe3ccbdbea1e6ff4d292238eaa565dcf239c833ce148eb55d300e2091bd6e
+size 184636
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_goals_overview.png b/tests/UI/expected-screenshots/UIIntegrationTest_goals_overview.png
index 6b1f207451..8e7981cd1d 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_goals_overview.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_goals_overview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1a705f7447f01d376a64d035b5419a5db222b89455bd547fd83fc1d67b68b514
-size 197863
+oid sha256:45c1fb97bcd7076878495a8959979d3ad4844c794329565b82bb529a400b91e4
+size 197815
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png b/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png
index b1a556e964..d3838f305c 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_menu_apidisallowed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6f978d684fdd9c82f549ce95c1489ed074d1d993365307cfd5791458ec914b44
-size 485362
+oid sha256:67a39d8b3bef27ac5b84318518019899ab69d5de9b120ffad151415b9fa3bae0
+size 490266
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png
index 718ff17a3a..ca41434bf6 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:72ee40d84b0c1d2173541b34f9e548a47312a19bab862f92a817005a9f23c64f
-size 221854
+oid sha256:0253ae4ba6f52eff347aae583c087f94bccea196c7a6d524b6dca351d9be57b8
+size 221865
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png
index fe15f55f0e..baf870442f 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8d3f9e4331b519b5e61751134e35faa6e77ce8e7e12bf4706f27bef16733cf7a
-size 173559
+oid sha256:3fc03e1db0efa7bb2008094f68c7a7617b09694a290aec95c5c244e0328bed34
+size 173561
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview.png
index e48a608ccb..44f343876b 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:af10d9447d81902718da3e46854a8c80f8af43b3bc54d62f75afb1208db154fa
-size 70220
+oid sha256:8b110a39188eaa34f8ee7b59d4a897dfb385725545dbd44da83870e6a09011c8
+size 74745
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_reloaded.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_reloaded.png
index e48a608ccb..44f343876b 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_reloaded.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_reloaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:af10d9447d81902718da3e46854a8c80f8af43b3bc54d62f75afb1208db154fa
-size 70220
+oid sha256:8b110a39188eaa34f8ee7b59d4a897dfb385725545dbd44da83870e6a09011c8
+size 74745
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png
index 0343d056b5..242627057d 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_overview_segment.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:10fda9beb9b3de2af2638826135a7a086f4226d5aa42f491b4bd6db2f30de8e6
-size 99717
+oid sha256:6bc762c03d582e324c77c35d50956592b17dfa5c41c64c7cfa5c9f0ddde175db
+size 104297
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png
index 76fb13aa67..8090ecf532 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8559ad591604643472d900c6c32f0497b183a70a1ed2aaa56d4b487d6ec61fcc
-size 103279
+oid sha256:ec9c25bddfe98899302a3a90731486c95473e23314df1ba8aa15502dd6077b77
+size 103297
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png b/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png
index 2d7732163e..eaf22538af 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_widgets_listing.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:be0fb31f6a219012173cf497a22afc4e0e327348a371a12c67b510769f3f2a3f
-size 179937
+oid sha256:b013eab8d4b17be33b9d3c956531b72bf5d931e27fa3a459d44a6af45b92a77c
+size 179766
diff --git a/tests/UI/specs/Marketplace_spec.js b/tests/UI/specs/Marketplace_spec.js
new file mode 100644
index 0000000000..dab2e3a5e6
--- /dev/null
+++ b/tests/UI/specs/Marketplace_spec.js
@@ -0,0 +1,265 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * Screenshot tests for main, top and admin menus.
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("Marketplace", function () {
+ this.timeout(0);
+
+ this.fixture = "Piwik\\Plugins\\Marketplace\\tests\\Fixtures\\SimpleFixtureTrackFewVisits";
+
+ var urlBase = '?module=Marketplace&action=overview&';
+ var paidPluginsUrl = urlBase + 'show=premium';
+ var themesUrl = urlBase + 'show=themes';
+ var pluginsUrl = urlBase;
+
+ var noLicense = 'noLicense';
+ var expiredLicense = 'expiredLicense';
+ var exceededLicense = 'exceededLicense';
+ var validLicense = 'validLicense';
+
+ function loadPluginDetailPage(page, pluginName, isFreePlugin)
+ {
+ page.load(isFreePlugin ? pluginsUrl : paidPluginsUrl);
+ page.click('.card-title [piwik-plugin-name="' + pluginName + '"]');
+ }
+
+ function captureSelector(done, screenshotName, test, selector)
+ {
+ expect.screenshot(screenshotName).to.be.captureSelector(selector, test, done);
+ }
+
+ function captureMarketplace(done, screenshotName, test, selector)
+ {
+ if (!selector) {
+ selector = '';
+ }
+
+ captureSelector(done, screenshotName, test, '.marketplace' + selector);
+ }
+
+ function captureWithNotification(done, screenshotName, test)
+ {
+ captureMarketplace(done, screenshotName, test, ',#notificationContainer');
+ }
+
+ function captureWithDialog(done, screenshotName, test)
+ {
+ captureSelector(done, screenshotName, test, '.ui-dialog:visible');
+ }
+
+ function assumePaidPluginsActivated()
+ {
+ testEnvironment.mockMarketplaceAssumePluginNamesActivated = ['CustomPlugin1','CustomPlugin2','PaidPlugin1','PaidPlugin2'];
+ testEnvironment.save();
+ }
+
+ function setEnvironment(mode, consumer)
+ {
+ if (mode === 'user') {
+ testEnvironment.idSitesViewAccess = [1];
+ } else {
+ // superuser
+ testEnvironment.idSitesViewAccess = [];
+ }
+
+ if (mode === 'multiUserEnvironment') {
+ testEnvironment.overrideConfig('General', 'multi_server_environment', '1');
+ } else {
+ testEnvironment.overrideConfig('General', 'multi_server_environment', '0');
+ }
+
+ testEnvironment.overrideConfig('General', 'enable_plugins_admin', '1');
+
+ delete testEnvironment.mockMarketplaceAssumePluginNamesActivated;
+
+ testEnvironment.consumer = consumer;
+ testEnvironment.mockMarketplaceApiService = 1;
+ testEnvironment.save();
+ }
+
+ ['superuser', 'user', 'multiUserEnvironment'].forEach(function (mode) {
+
+ if (mode !== 'user') {
+ it('should show available updates in plugins page', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureSelector(done, 'updates_' + mode, function (page) {
+ page.load('?module=CorePluginsAdmin&action=plugins&idSite=1&period=day&date=yesterday&activated=');
+ }, '#content .card:first');
+ });
+ }
+
+ it(mode + ' for a user without license key should be able to open paid plugins', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureMarketplace(done, 'paid_plugins_no_license_' + mode, function (page) {
+ page.load(paidPluginsUrl);
+ });
+ });
+
+ it(mode + ' for a user with license key should be able to open paid plugins', function (done) {
+ setEnvironment(mode, validLicense);
+
+ captureMarketplace(done, 'paid_plugins_with_license_' + mode, function (page) {
+ page.load(paidPluginsUrl);
+ });
+ });
+
+ it(mode + ' for a user with exceeded license key should be able to open paid plugins', function (done) {
+ setEnvironment(mode, exceededLicense);
+ assumePaidPluginsActivated();
+
+ captureMarketplace(done, 'paid_plugins_with_exceeded_license_' + mode, function (page) {
+ page.load(paidPluginsUrl);
+ });
+ });
+
+ it('should show themes page', function (done) {
+ setEnvironment(mode, validLicense);
+
+ captureMarketplace(done, 'themes_with_valid_license_' + mode, function (page) {
+ page.load(themesUrl);
+ });
+ });
+
+ it('should show free plugin details', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureWithDialog(done, 'free_plugin_details_' + mode, function (page) {
+ var isFree = true;
+ loadPluginDetailPage(page, 'TreemapVisualization', isFree);
+ });
+ });
+
+ it('should show paid plugin details when having no license', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureWithDialog(done, 'paid_plugin_details_no_license_' + mode, function (page) {
+ assumePaidPluginsActivated();
+ var isFree = false;
+ loadPluginDetailPage(page, 'PaidPlugin1', isFree);
+ });
+ });
+
+ it('should show paid plugin details when having valid license', function (done) {
+ setEnvironment(mode, validLicense);
+
+ captureWithDialog(done, 'paid_plugin_details_valid_license_' + mode + '_installed', function (page) {
+ assumePaidPluginsActivated();
+ var isFree = false;
+ loadPluginDetailPage(page, 'PaidPlugin1', isFree);
+ });
+ });
+
+ it('should show paid plugin details when having valid license', function (done) {
+ setEnvironment(mode, exceededLicense);
+
+ captureWithDialog(done, 'paid_plugin_details_exceeded_license_' + mode, function (page) {
+ assumePaidPluginsActivated();
+ var isFree = false;
+ loadPluginDetailPage(page, 'PaidPlugin1', isFree);
+ });
+ });
+ });
+
+ var mode = 'superuser';
+
+ it('should show a dialog showing a list of all possible plugins to install', function (done) {
+ setEnvironment(mode, validLicense);
+
+ captureSelector(done, mode + '_install_all_paid_plugins_at_once', function (page) {
+ page.load(pluginsUrl);
+ page.click('.installAllPaidPlugins');
+ }, '.modal.open');
+ });
+
+ it('should show an error message when invalid license key entered', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureWithNotification(done, mode + '_invalid_license_key_entered', function (page) {
+ page.load(pluginsUrl);
+ page.sendKeys('#license_key', 'invalid');
+ page.click('.marketplace-paid-intro'); // click outside so change event is triggered
+ page.click('#submit_license_key input');
+ });
+ });
+
+ it('should show a confirmation before removing a license key', function (done) {
+ setEnvironment(mode, validLicense);
+
+ captureSelector(done, mode + '_remove_license_key_confirmation', function (page) {
+ page.load(pluginsUrl);
+ page.click('#remove_license_key input');
+ }, '.modal.open');
+ });
+
+ it('should show a confirmation before removing a license key', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureMarketplace(done, mode + '_remove_license_key_confirmed', function (page) {
+ page.click('.modal.open .modal-footer a:contains(Yes)')
+ });
+ });
+
+ it('should show a success message when valid license key entered', function (done) {
+ setEnvironment(mode, noLicense);
+
+ captureMarketplace(done, mode + '_valid_license_key_entered', function (page) {
+ page.load(pluginsUrl);
+ page.sendKeys('#license_key', 'valid');
+ page.execCallback(function () {
+ setEnvironment(mode, validLicense);
+ });
+ page.click('#submit_license_key input');
+ });
+ });
+
+ it('should hide activate / deactivate buttons if plugins admin is disabled', function (done) {
+ setEnvironment(mode, noLicense);
+ testEnvironment.overrideConfig('General', 'enable_plugins_admin', '0');
+ testEnvironment.save();
+
+ captureMarketplace(done, mode + '_enable_plugins_admin', function (page) {
+ page.load(pluginsUrl);
+ });
+ });
+
+ it('should hide activate / deactivate buttons if plugins admin is disabled when also multi server environment is enabled', function (done) {
+ setEnvironment('multiUserEnvironment', noLicense);
+ testEnvironment.overrideConfig('General', 'enable_plugins_admin', '0');
+ testEnvironment.save();
+
+ captureMarketplace(done, mode + '_enable_plugins_admin_with_multiserver_enabled', function (page) {
+ page.load(pluginsUrl);
+ });
+ });
+
+ [expiredLicense, exceededLicense, validLicense, noLicense].forEach(function (consumer) {
+ it('should show a subscription overview for ' + consumer, function (done) {
+ setEnvironment('superuser', consumer);
+
+ captureSelector(done, 'subscription_overview_' + consumer, function (page) {
+ page.load('?module=Marketplace&action=subscriptionOverview');
+ }, '#content');
+ });
+ });
+
+ [noLicense, expiredLicense, exceededLicense].forEach(function (consumer) {
+ // when there is no license it should not show a warning! as it could be due to network problems etc
+ it('should show a warning if license is ' + consumer, function (done) {
+ setEnvironment('superuser', consumer);
+
+ assumePaidPluginsActivated();
+
+ captureSelector(done, 'notification_plugincheck_' + consumer, function (page) {
+ page.load('?module=UsersManager&action=index');
+ }, '#notificationContainer');
+ });
+ });
+
+}); \ No newline at end of file
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index f8cf328249..3cc05b286e 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -2096,7 +2096,7 @@ function PiwikTest() {
});
test("API methods", function() {
- expect(71);
+ expect(72);
equal( typeof Piwik.addPlugin, 'function', 'addPlugin' );
equal( typeof Piwik.addPlugin, 'function', 'addTracker' );
@@ -2158,6 +2158,7 @@ function PiwikTest() {
equal( typeof tracker.addListener, 'function', 'addListener' );
equal( typeof tracker.enableLinkTracking, 'function', 'enableLinkTracking' );
equal( typeof tracker.enableHeartBeatTimer, 'function', 'enableHeartBeatTimer' );
+ equal( typeof tracker.disableHeartBeatTimer, 'function', 'disableHeartBeatTimer' );
equal( typeof tracker.killFrame, 'function', 'killFrame' );
equal( typeof tracker.redirectFile, 'function', 'redirectFile' );
equal( typeof tracker.setCountPreRendered, 'function', 'setCountPreRendered' );
diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js
index 1551a68511..fe83cffcbc 100644
--- a/tests/lib/screenshot-testing/support/page-renderer.js
+++ b/tests/lib/screenshot-testing/support/page-renderer.js
@@ -110,6 +110,8 @@ PageRenderer.prototype.evaluate = function (impl, waitTime) {
this.queuedEvents.push([this._evaluate, waitTime, impl]);
};
+// like .evaluate() but doesn't call `impl` in context of the webpage. Useful if you want to change eg a testEnvironment
+// before a click. Makes sure this callback `impl` will be executed just before the next action instead of immediately
PageRenderer.prototype.execCallback = function (callback, waitTime) {
this.queuedEvents.push([this._execCallback, waitTime, callback]);
};
diff --git a/tests/resources/yuicompressor/How to.md b/tests/resources/yuicompressor/How to.md
new file mode 100644
index 0000000000..a4f7bff27a
--- /dev/null
+++ b/tests/resources/yuicompressor/How to.md
@@ -0,0 +1,2 @@
+* Download latest version from https://cloud.github.com/downloads/yui/yuicompressor/yuicompressor-2.4.7.zip
+* extract the build/yuicompressor.jar in the piwik/tests/resources/yuicompressor folder
diff --git a/tests/resources/yuicompressor/yuicompressor-2.4.7.jar b/tests/resources/yuicompressor/yuicompressor-2.4.7.jar
new file mode 100644
index 0000000000..3c9a408aac
--- /dev/null
+++ b/tests/resources/yuicompressor/yuicompressor-2.4.7.jar
Binary files differ